
einfach Knoten und Graphen
Sehen Sie Ihre Infrastruktur. Null Konfiguration.
Richten Sie graph-go auf Ihren Stack aus und erhalten Sie eine Live-Interaktiv-Karte jeder Datenbank, Tabelle, jedes Dienstes und Speicher-Buckets – mit Echtzeit-Health-Monitoring.
graph-go ist ein CLI-first Infrastruktur-Mapper. Es erkennt Ihre Infrastruktur automatisch, indem es eine Verbindung zum Docker-Daemon herstellt, laufende Container inspiziert und Datenbanken sowie Speicherdienste abfragt. Die UI wird vom Backend bereitgestellt und spiegelt den echten Backend-Status wider – kein manuelles Inventar erforderlich.
| Fähigkeit | Details |
|---|---|
| Auto-Discovery | Erkennt Infrastruktur aus Docker-Containern und Kubernetes-Clustern – kein manuelles Inventar erforderlich |
| Kubernetes | Namespaces, Deployments, StatefulSets, DaemonSets, Pods, Services – mit informer-basiertem Echtzeit-Watching |
| Docker | Klassifiziert laufende Container, extrahiert Anmeldedaten, beobachtet Docker-Ereignisse, berücksichtigt graphgo.*-Labels zur Überschreibung 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-Prefixes |
| HTTP-Dienste | Health-Endpunkte, Abhängigkeitszuordnung 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 Anzahl von graphgo.*-Container-Labels (setzen Sie diese auf jedem Container, den Sie kontrollieren möchten):
| Label | Wirkung |
|---|---|
graphgo.ignore=true | Diesen Container vollständig überspringen |
graphgo.type=postgres | Erzwingt den Adaptertyp (postgres, mongodb, mysql, redis, elasticsearch, s3, http) |
graphgo.dsn=... | Injiziert einen Verbindungsstring (DSN für postgres/mysql, URI für mongodb, fällt auf dsn zurück, falls nicht anders) |
graphgo.node-type=gateway | Überschreibt den visuellen Knotentyp (service, gateway, auth, api, queue, cache) |
graphgo.name=... | Überschreibt den im Graphen angezeigten Knotennamen, der auch in Knoten-IDs/Logs verwendet wird |
Verwenden Sie diese, um falsch klassifizierte Container zu korrigieren, graph-go auf eine benutzerdefinierte DSN zu lenken oder einen Container aus dem Graphen auszublenden, ohne ihn zu entfernen.
Starten Sie den vorkonfigurierten Demo-Stack mit der CLI. Dies ist der schnellste Weg, graph-go in einer realistischen Umgebung zu sehen und der empfohlene Onboarding-Pfad für Erstbenutzer:
git clone https://github.com/guilherme-grimm/graph-go.git
cd graph-go
go run ./cmd/app demo
Öffnen Sie http://localhost:8080. Der Befehl läuft als attachter Docker Compose-Container. Drücken Sie Ctrl+C, um die Sitzung zu beenden.
Der erste Start kann auf einem kalten Rechner mehrere Minuten dauern, da Docker möglicherweise Basis-Images herunterladen und die lokalen Demo-Images erstellen muss. Spätere Starts sind viel schneller.
Der Demo-Stack erwartet, dass die folgenden Host-Ports frei sind: 8080, 5432, 27017, 9000 und 9001.
Falls Sie einen expliziten Teardown benötigen:
docker compose -f docker-compose.demo.yml down
Ein Container, ein Port. Mounten Sie den Docker-Socket schreibgeschützt und graph-go erkennt 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 – behalten Sie es bei.
Öffnen Sie http://localhost:8080. Auto-Discovery behandelt Docker-Container und (wenn eine Kubeconfig oder ein In-Cluster-Service-Account vorhanden ist) Kubernetes-Ressourcen ohne Konfigurationsdatei.
Für Dienste außerhalb von Docker/Kubernetes (Remote-Datenbanken, Managed-Cloud-Dienste) mounten Sie eine Konfigurationsdatei – siehe Konfiguration.
Einzige eigenständige Binärdatei – UI ist eingebettet, aber der Einstiegspunkt bleibt die CLI.
# Linux amd64 (erfordert die GitHub-CLI; andere Plattformen in den Releases durchsuchen)
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 # oder einfach `./graph-go` – dasselbe
Öffnen Sie http://localhost:8080. Andere Plattformen auf der Releases-Seite.
| Befehl | Wirkung |
|---|---|
graph-go demo | Startet den vorkonfigurierten Docker Compose-Demo-Stack aus dem Repository und gibt dessen Ausgabe im Vordergrund aus. |
graph-go serve | Startet den HTTP-Server mit Auto-Discovery und Live-Updates (Standard – gleich wie Aufruf ohne Argumente). |
graph-go scan | Führt Discovery einmalig aus und gibt den Graphen als JSON nach stdout aus. Nützlich für Weiterleitung an jq, CI-Checks oder einmalige Exporte. |
graph-go version | Gibt Version, Commit und Build-Datum aus. |
graph-go --health-check | Ruft lokales /health auf und beendet mit 0/1. Wird vom Container-HEALTHCHECK verwendet; nicht für interaktive Nutzung. |
Globale Flags (für jeden Unterbefehl): --config, --log-level, --log-format. Siehe graph-go <command> --help für die vollständige befehlsspezifische Oberfläche.
Typischer Ablauf:
graph-go demo für einen realistischen lokalen Durchlauf.graph-go serve zur Ausführung gegen Ihre eigene Infrastruktur.graph-go scan für einmalige Automatisierung, Exporte oder CI-Checks.| Port | Zweck |
|---|---|
8080 | graph-go (UI + API + WebSocket – Produktion) |
5173 | Vite-Entwicklungsserver (nur Entwicklung – siehe CONTRIBUTING.md) |
9001 | MinIO-Konsole (nur Demo-Stack) |
Auto-Discovery ist der Weg. Mounten Sie den Docker-Socket und/oder führen Sie ihn innerhalb eines Kubernetes-Clusters aus – graph-go erkennt Ihre Infrastruktur ohne Konfigurationsdatei.
Verwenden Sie die YAML-Konfiguration (conf/config.yaml) nur als Notausstieg für Dienste, die nicht über Discovery erreichbar sind – Remote-Datenbanken, Managed Cloud Services, 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).
Zur Verwendung einer Konfigurationsdatei mit dem obigen Docker-Run:
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 für autorisierte Nutzung: graph-go dient der Visualisierung von Infrastruktur, die Ihnen gehört oder auf die Sie Zugriff haben. Richten Sie es nicht gegen Systeme ohne Autorisierung.