
Semplicemente nodi e grafi
Vedi la tua infrastruttura. Zero Config.
Punta graph-go sul tuo stack e ottieni una mappa interattiva e live 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 demone 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-scoperta | Rileva l'infrastruttura dai container Docker e dai cluster Kubernetes — nessun inventario manuale necessario |
| Kubernetes | Namespace, Deployments, StatefulSets, DaemonSets, Pods, Services — con osservazione in tempo reale basata su informer |
| Docker | Classifica i container in esecuzione, estrae le credenziali, osserva gli eventi Docker, rispetta le label graphgo.* per sovrascrivere tipo/DSN/tipo-nodo/nome o ignorare un container |
| PostgreSQL | Tabelle, relazioni di chiave esterna, topologia dello schema |
| MongoDB | Database e collezioni |
| MySQL | Tabelle, relazioni di chiave esterna |
| Redis | Keyspaces 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 live tramite WebSocket ogni 5 secondi |
| Grafico interattivo | Layout a corsie, contenitori di gruppo per namespace, pan/zoom, filtro per tipo/stato, ricerca nodi |
graph-go rispetta un piccolo insieme di label container graphgo.* (impostale su qualsiasi container che vuoi controllare):
| Label | 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 usa 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 grafico e usato negli ID dei nodi / log |
Usale per recuperare container classificati male, puntare graph-go verso un DSN personalizzato o nascondere un container dal grafico senza rimuoverlo.
Avvia lo stack demo preconfigurato con il 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 primo piano tramite Docker Compose. Premi Ctrl+C per fermare la sessione.
La prima esecuzione può richiedere diversi minuti su una macchina "fredda" perché Docker potrebbe dover scaricare le immagini di base e costruire 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 un abbattimento esplicito in seguito:
docker compose -f docker-compose.demo.yml down
Un container, una porta. Monta il socket Docker in sola lettura e graph-go scopre 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-scoperta gestisce i container Docker e (quando è presente un kubeconfig o un account di servizio in-cluster) le risorse Kubernetes senza alcun file di configurazione.
Per servizi che vivono al di fuori di Docker/Kubernetes (database remoti, servizi cloud gestiti), monta un file di configurazione — vedi Configurazione.
Singolo binario autonomo — l'interfaccia utente è inclusa, ma il punto di ingresso è sempre il CLI.
# Linux amd64 (richiede il CLI di GitHub; cerca nella sezione Releases altre piattaforme)
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 # oppure `./graph-go` - fa la stessa cosa
Apri http://localhost:8080. Altre piattaforme nella pagina Releases.
| Comando | Cosa fa |
|---|---|
graph-go demo | Avvia lo stack demo Docker Compose preconfigurato dal repository e ne mostra l'output in primo piano. |
graph-go serve | Avvia il server HTTP con auto-scoperta e aggiornamenti live (predefinito - equivale a eseguire senza argomenti). |
graph-go scan | Esegue una scoperta una tantum e restituisce il grafico come JSON su stdout. Utile per pipeline in jq, controlli CI o esportazioni monouso. |
graph-go version | Stampa versione, commit e data di build. |
graph-go --health-check | Chiama il /health locale ed esce con 0/1. Usato dal HEALTHCHECK del container; non per uso interattivo. |
Flag globali (si applicano a ogni sottocomando): --config, --log-level, --log-format. Vedi graph-go <comando> --help per la superficie completa di ogni comando.
Flusso tipico:
graph-go demo per una dimostrazione realistica locale.graph-go serve per eseguire sulla tua infrastruttura.graph-go scan per automazione una tantum, esportazioni o controlli CI.| Porta | Scopo |
|---|---|
8080 | graph-go (UI + API + WebSocket — produzione) |
5173 | Server di sviluppo Vite (solo sviluppo — vedi CONTRIBUTING.md) |
9001 | Console MinIO (solo stack demo) |
L'auto-scoperta è la via maestra. Monta il socket Docker e/o esegui all'interno di un cluster Kubernetes — graph-go scopre la tua infrastruttura senza bisogno di file di configurazione.
Usa il file di configurazione YAML (conf/config.yaml) solo come valvola di sfogo per servizi non raggiungibili tramite scoperta — 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
Uso autorizzato solo: graph-go è per visualizzare infrastrutture di tua proprietà o per cui hai permesso di accesso. Non puntarlo su sistemi senza autorizzazione.