
Semplicemente nodi e grafi
Visualizza la tua infrastruttura. Zero Configurazione.
Punta graph-go sulla tua infrastruttura e ottieni una mappa interattiva e in tempo reale di ogni database, tabella, servizio e bucket di storage — con monitoraggio dello stato in tempo reale.
graph-go è un mapper di infrastruttura CLI-first. Scopre automaticamente la tua infrastruttura connettendosi al daemon Docker, ispezionando i container in esecuzione e sondando database e servizi di storage. L'interfaccia utente è servita dal backend e riflette lo stato reale del backend — nessun inventario manuale necessario.
| Capacità | Dettagli |
|---|---|
| Auto-discovery | Rileva l'infrastruttura dai container Docker e dai cluster Kubernetes — nessun inventario manuale necessario |
| Kubernetes | Namespace, Deployment, StatefulSet, DaemonSet, Pod, Service — con watching in tempo reale basato su informer |
| Docker | Classifica i container in esecuzione, estrae le credenziali, osserva gli eventi Docker, rispetta le etichette graphgo.* per sovrascrivere tipo/DSN/node-type/name o ignorare un container |
| PostgreSQL | Tabelle, relazioni di chiave esterna, topologia dello schema |
| MongoDB | Database e collezioni |
| MySQL | Tabelle, relazioni di chiave esterna |
| Redis | Keyspace e distribuzione delle chiavi |
| Elasticsearch | Indici, stato del cluster, stato degli shard |
| S3 / MinIO | Bucket e prefissi di primo livello |
| Servizi HTTP | Endpoint di health, mappatura delle dipendenze tra servizi |
| Stato in tempo reale | Aggiornamenti di stato live via WebSocket ogni 5 secondi |
| Grafo interattivo | Layout a swimlane, contenitori di gruppo per namespace, pan/zoom, filtro per tipo/stato, ricerca dei nodi |
graph-go rispetta un piccolo insieme di etichette graphgo.* sui container (impostale su qualsiasi container che vuoi controllare):
| Etichetta | Effetto |
|---|---|
graphgo.ignore=true | Salta completamente questo container |
graphgo.type=postgres | Forza il tipo di adapter (postgres, mongodb, mysql, redis, elasticsearch, s3, http) |
graphgo.dsn=... | Inietta una stringa di connessione (DSN per postgres/mysql, URI per mongodb, altrimenti ricade su dsn) |
graphgo.node-type=gateway | Sovrascrive il tipo di nodo visivo (service, gateway, auth, api, queue, cache) |
graphgo.name=... | Sovrascrive il nome del nodo mostrato nel grafo e usato negli ID dei nodi / nei log |
Usale per recuperare container classificati erroneamente, puntare graph-go su un DSN personalizzato o nascondere un container dal grafo senza rimuoverlo.
Avvia lo stack demo preconfigurato con la CLI. Questo è il modo più veloce per vedere graph-go in un ambiente realistico ed è il percorso di onboarding previsto per i nuovi utenti:
git clone https://github.com/guilherme-grimm/graph-go.git
cd graph-go
go run ./cmd/app demo
Apri http://localhost:8080. Il comando viene eseguito in modalità attached tramite Docker Compose. Premi Ctrl+C per fermare la sessione attached.
La prima esecuzione può richiedere diversi minuti su una macchina a freddo perché Docker potrebbe dover scaricare le immagini di base e compilare le immagini demo locali. Le esecuzioni successive sono molto più veloci.
Lo stack demo richiede che queste porte host siano libere: 8080, 5432, 27017, 9000 e 9001.
Se hai bisogno di una rimozione esplicita in seguito:
docker compose -f docker-compose.demo.yml down
Un container, una porta. Monta il socket Docker in sola lettura e graph-go scoprirà automaticamente tutto ciò che è in esecuzione sull'host:
docker run -d -p 8080:8080 \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
ghcr.io/guilherme-grimm/graph-go:latest
graph-go legge solo dal socket Docker. Il flag
:rolo impone — mantienilo.
Apri http://localhost:8080. L'auto-discovery gestisce i container Docker e (quando è presente un kubeconfig o un service account in-cluster) le risorse Kubernetes senza alcun file di configurazione.
Per i servizi che risiedono al di fuori di Docker/Kubernetes (database remoti, servizi cloud gestiti), monta un file di configurazione — vedi Configurazione.
Binario singolo e autonomo — l'interfaccia utente è incorporata, ma l'entrypoint è comunque la CLI.
# Linux amd64 (requires the GitHub CLI; browse Releases for other platforms)
gh release download --repo guilherme-grimm/graph-go --pattern 'graph-go_*_linux_amd64.tar.gz' --clobber
tar xzf graph-go_*_linux_amd64.tar.gz
./graph-go serve # or just `./graph-go` - same thing
Apri http://localhost:8080. Altre piattaforme sulla pagina delle Releases.
| Comando | Cosa fa |
|---|---|
graph-go demo | Avvia lo stack demo preconfigurato di Docker Compose dal repository e trasmette il suo output in primo piano. |
graph-go serve | Avvia il server HTTP con auto-discovery e aggiornamenti live (predefinito - come eseguirlo senza argomenti). |
graph-go scan | Esegue la discovery una volta e restituisce il grafo come JSON su stdout. Utile per il piping in jq, controlli CI o esportazioni one-shot. |
graph-go version | Stampa versione, commit e data di build. |
graph-go --health-check | Colpisce /health locale ed esce con 0/1. Usato dall'HEALTHCHECK del container; non per uso interattivo. |
Flag globali (si applicano a ogni sottocomando): --config, --log-level, --log-format. Vedi graph-go <command> --help per la superficie completa per comando.
Flusso tipico:
graph-go demo per una panoramica locale realistica.graph-go serve per eseguirlo sulla tua infrastruttura.graph-go scan per automazione one-shot, esportazioni o controlli CI.| Porta | Scopo |
|---|---|
8080 | graph-go (UI + API + WebSocket — produzione) |
5173 | Vite dev server (solo sviluppo — vedi CONTRIBUTING.md) |
9001 | MinIO console (solo stack demo) |
L'auto-discovery è la strada. Monta il socket Docker e/o esegui all'interno di un cluster Kubernetes — graph-go scopre la tua infrastruttura senza bisogno di alcun file di configurazione.
Usa il file di configurazione YAML (conf/config.yaml) solo come via di fuga per i servizi che non sono raggiungibili tramite discovery — database remoti, servizi cloud gestiti, endpoint esterni. Vedi conf/config.sample.yaml per lo schema completo — esempi per ogni adapter e ogni blocco di configurazione (server, docker, kubernetes, connections).
Per usare un file di configurazione con il comando Docker sopra:
docker run -d -p 8080:8080 \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
-v $(pwd)/conf/config.yaml:/app/conf/config.yaml:ro \
ghcr.io/guilherme-grimm/graph-go:latest
Solo uso autorizzato: graph-go serve per visualizzare infrastrutture che possiedi o per cui hai il permesso di accesso. Non puntarlo su sistemi senza autorizzazione.