
einfach Knoten und Graphen
Sieh deine Infrastruktur. Null Konfiguration.
Richte graph-go auf deinen Stack und erhalte eine lebendige, interaktive Karte jeder Datenbank, Tabelle, jedes Dienstes und jedes Storage-Buckets — mit Echtzeit-Health-Monitoring.
graph-go ist ein CLI-first Infrastructure-Mapper. Es entdeckt deine Infrastruktur automatisch, indem es sich mit dem Docker-Daemon verbindet, laufende Container inspiziert und Datenbanken sowie Storage-Dienste sondiert. Die UI wird vom Backend ausgeliefert und spiegelt den echten Backend-Zustand wider — kein manuelles Inventar nötig.
| Fähigkeit | Details |
|---|---|
| Auto-Discovery | Erkennt Infrastruktur aus Docker-Containern und Kubernetes-Clustern — kein manuelles Inventar nötig |
| Kubernetes | Namespaces, Deployments, StatefulSets, DaemonSets, Pods, Services — mit informer-basiertem Echtzeit-Watching |
| Docker | Klassifiziert laufende Container, extrahiert Credentials, überwacht Docker-Events, respektiert graphgo.*-Labels zum Überschreiben von Typ/DSN/Node-Typ/Name oder zum Ignorieren eines Containers |
| PostgreSQL | Tabellen, Fremdschlüsselbeziehungen, Schema-Topologie |
| MongoDB | Datenbanken und Collections |
| MySQL | Tabellen, Fremdschlüsselbeziehungen |
| Redis | Keyspaces und Key-Verteilung |
| Elasticsearch | Indizes, Cluster-Health, Shard-Status |
| S3 / MinIO | Buckets und Top-Level-Präfixe |
| HTTP-Dienste | Health-Endpunkte, Dependency-Mapping zwischen Diensten |
| Echtzeit-Health | WebSocket-gestützte Live-Status-Updates alle 5 Sekunden |
| Interaktiver Graph | Swimlane-Layout, Namespace-Gruppencontainer, Pan/Zoom, Filter nach Typ/Health, Knotensuche |
graph-go respektiert eine kleine Auswahl an graphgo.*-Container-Labels (setze sie auf jedem Container, den du steuern möchtest):
| Label | Wirkung |
|---|---|
graphgo.ignore=true | Diesen Container vollständig überspringen |
graphgo.type=postgres | Den Adapter-Typ erzwingen (postgres, mongodb, mysql, redis, elasticsearch, s3, http) |
graphgo.dsn=... | Einen Connection-String injizieren (DSN für postgres/mysql, URI für mongodb, fällt andernfalls auf dsn zurück) |
graphgo.node-type=gateway | Den visuellen Knotentyp überschreiben (service, gateway, auth, api, queue, cache) |
graphgo.name=... | Den im Graphen angezeigten Knotennamen überschreiben, der in Knoten-IDs / Logs verwendet wird |
Nutze diese, um falsch klassifizierte Container zu retten, graph-go auf einen benutzerdefinierten DSN zu richten oder einen Container vor dem Graphen zu verbergen, ohne ihn zu entfernen.
Starte den vorbefüllten Demo-Stack mit der CLI. Dies ist der schnellste Weg, graph-go gegen eine realistische Umgebung zu sehen, und der vorgesehene Einstiegspfad für Erstnutzer:
git clone https://github.com/guilherme-grimm/graph-go.git
cd graph-go
go run ./cmd/app demo
Öffne http://localhost:8080. Der Befehl läuft angehängt über Docker Compose. Drücke Ctrl+C, um die angehängte Sitzung zu beenden.
Der erste Lauf kann auf einer kalten Maschine mehrere Minuten dauern, da Docker möglicherweise Basis-Images pullen und die lokalen Demo-Images bauen muss. Spätere Läufe sind deutlich schneller.
Der Demo-Stack erwartet, dass diese Host-Ports frei sind: 8080, 5432, 27017, 9000 und 9001.
Wenn du danach ein explizites Teardown benötigst:
docker compose -f docker-compose.demo.yml down
Ein Container, ein Port. Binde den Docker-Socket read-only ein und graph-go entdeckt automatisch alles, was auf dem Host läuft:
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 liest nur vom Docker-Socket. Das
:ro-Flag erzwingt dies — behalte es bei.
Öffne http://localhost:8080. Auto-Discovery übernimmt Docker-Container und (wenn ein kubeconfig oder ein In-Cluster-Service-Account vorhanden ist) Kubernetes-Ressourcen ohne jegliche Konfigurationsdatei.
Für Dienste, die außerhalb von Docker/Kubernetes liegen (Remote-Datenbanken, verwaltete Cloud-Dienste), binde eine Konfigurationsdatei ein — siehe Konfiguration.
Einzelnes, eigenständiges Binary — die UI ist eingebettet, aber der Einstiegspunkt ist weiterhin die 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
Öffne http://localhost:8080. Andere Plattformen auf der Releases-Seite.
| Befehl | Was er tut |
|---|---|
graph-go demo | Startet den vorbefüllten Docker-Compose-Demo-Stack aus dem Repository und streamt dessen Ausgabe im Vordergrund. |
graph-go serve | Startet den HTTP-Server mit Auto-Discovery und Live-Updates (Standard — dasselbe wie der Aufruf ohne Argumente). |
graph-go scan | Führt die Discovery einmalig aus und gibt den Graphen als JSON auf stdout aus. Nützlich zum Weiterleiten an jq, für CI-Checks oder einmalige Exporte. |
graph-go version | Gibt Version, Commit und Build-Datum aus. |
graph-go --health-check | Ruft das lokale /health auf und beendet mit 0/1. Wird vom Container-HEALTHCHECK verwendet; nicht für interaktive Nutzung. |
Globale Flags (gelten für jeden Subcommand): --config, --log-level, --log-format. Siehe graph-go <command> --help für die vollständige pro-Befehl-Oberfläche.
Typischer Ablauf:
graph-go demo für einen realistischen lokalen Durchlauf.graph-go serve, um gegen deine eigene Infrastruktur zu laufen.graph-go scan für einmalige Automatisierung, Exporte oder CI-Checks.| Port | Zweck |
|---|---|
8080 | graph-go (UI + API + WebSocket — Produktion) |
5173 | Vite Dev-Server (nur Entwicklung — siehe CONTRIBUTING.md) |
9001 | MinIO-Konsole (nur Demo-Stack) |
Auto-Discovery ist der Weg. Binde den Docker-Socket ein und/oder laufe innerhalb eines Kubernetes-Clusters — graph-go entdeckt deine Infrastruktur mit ohne Konfigurationsdatei.
Verwende die YAML-Konfiguration (conf/config.yaml) nur als Notausgang für Dienste, die nicht über Discovery erreichbar sind — Remote-Datenbanken, verwaltete Cloud-Dienste, externe Endpunkte. Siehe conf/config.sample.yaml für das vollständige Schema — Beispiele für jeden Adapter und jeden Konfigurationsblock (server, docker, kubernetes, connections).
Um eine Konfigurationsdatei mit dem obigen Docker-Lauf zu verwenden:
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
Nur autorisierte Nutzung: graph-go dient der Visualisierung von Infrastruktur, die dir gehört oder auf die du Zugriff hast. Richte es nicht auf Systeme ohne Autorisierung.