
simplement des nœuds et des graphes
Visualisez votre infrastructure. Zéro configuration.
Pointez graph-go vers votre stack et obtenez une carte interactive et en direct de chaque base de données, table, service et bucket de stockage — avec une surveillance de l'état en temps réel.
graph-go est un cartographe d'infrastructure orienté CLI. Il découvre automatiquement votre infrastructure en se connectant au démon Docker, en inspectant les conteneurs en cours d'exécution et en sondant les bases de données et les services de stockage. L'interface utilisateur est servie par le backend et reflète l'état réel du backend — aucun inventaire manuel n'est nécessaire.
| Capacité | Détails |
|---|---|
| Auto-découverte | Détecte l'infrastructure à partir des conteneurs Docker et des clusters Kubernetes — aucun inventaire manuel nécessaire |
| Kubernetes | Namespaces, Deployments, StatefulSets, DaemonSets, Pods, Services — avec surveillance en temps réel basée sur les informers |
| Docker | Classifie les conteneurs en cours d'exécution, extrait les identifiants, surveille les événements Docker, respecte les labels graphgo.* pour remplacer le type/DSN/node-type/name ou ignorer un conteneur |
| PostgreSQL | Tables, relations de clés étrangères, topologie du schéma |
| MongoDB | Bases de données et collections |
| MySQL | Tables, relations de clés étrangères |
| Redis | Espaces de clés et distribution des clés |
| Elasticsearch | Index, état du cluster, état des shards |
| S3 / MinIO | Buckets et préfixes de premier niveau |
| Services HTTP | Points de terminaison de santé, cartographie des dépendances entre services |
| État en temps réel | Mises à jour d'état en direct via WebSocket toutes les 5 secondes |
| Graphe interactif | Disposition en swimlanes, conteneurs de groupe par namespace, panoramique/zoom, filtrage par type/état, recherche de nœuds |
graph-go respecte un petit ensemble de labels de conteneur graphgo.* (définissez-les sur n'importe quel conteneur que vous souhaitez contrôler) :
| Label | Effet |
|---|---|
graphgo.ignore=true | Ignorer complètement ce conteneur |
graphgo.type=postgres | Forcer le type d'adaptateur (postgres, mongodb, mysql, redis, elasticsearch, s3, http) |
graphgo.dsn=... | Injecter une chaîne de connexion (DSN pour postgres/mysql, URI pour mongodb, sinon repli sur dsn) |
graphgo.node-type=gateway | Remplacer le type visuel du nœud (service, gateway, auth, api, queue, cache) |
graphgo.name=... | Remplacer le nom du nœud affiché dans le graphe et utilisé dans les ID de nœuds / les logs |
Utilisez-les pour récupérer des conteneurs mal classifiés, pointer graph-go vers un DSN personnalisé, ou masquer un conteneur du graphe sans le supprimer.
Démarrez la stack de démonstration pré-remplie avec la CLI. C'est le moyen le plus rapide de voir graph-go face à un environnement réaliste et le parcours d'intégration prévu pour les nouveaux utilisateurs :
git clone https://github.com/guilherme-grimm/graph-go.git
cd graph-go
go run ./cmd/app demo
Ouvrez http://localhost:8080. La commande s'exécute en mode attaché via Docker Compose. Appuyez sur Ctrl+C pour arrêter la session attachée.
Le premier lancement peut prendre plusieurs minutes sur une machine froide, car Docker peut avoir besoin de télécharger les images de base et de construire les images de démonstration locales. Les lancements suivants sont beaucoup plus rapides.
La stack de démonstration nécessite que ces ports hôtes soient libres : 8080, 5432, 27017, 9000 et 9001.
Si vous avez besoin d'un démontage explicite par la suite :
docker compose -f docker-compose.demo.yml down
Un conteneur, un port. Montez le socket Docker en lecture seule et graph-go découvre automatiquement tout ce qui tourne sur l'hôte :
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 ne fait que lire depuis le socket Docker. Le flag
:rol'impose — conservez-le.
Ouvrez http://localhost:8080. L'auto-découverte gère les conteneurs Docker et (lorsqu'un kubeconfig ou un compte de service in-cluster est présent) les ressources Kubernetes sans aucun fichier de configuration.
Pour les services qui vivent en dehors de Docker/Kubernetes (bases de données distantes, services cloud managés), montez un fichier de configuration — voir Configuration.
Binaire unique autonome — l'interface utilisateur est intégrée, mais le point d'entrée reste 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
Ouvrez http://localhost:8080. Autres plateformes sur la page Releases.
| Commande | Ce qu'elle fait |
|---|---|
graph-go demo | Démarre la stack de démonstration Docker Compose pré-remplie depuis le dépôt et diffuse sa sortie au premier plan. |
graph-go serve | Démarre le serveur HTTP avec auto-découverte et mises à jour en direct (par défaut - identique à une exécution sans argument). |
graph-go scan | Exécute la découverte une fois et émet le graphe en JSON sur stdout. Utile pour le pipe vers jq, les vérifications CI, ou les exports ponctuels. |
graph-go version | Affiche la version, le commit et la date de build. |
graph-go --health-check | Interroge /health en local et se termine avec 0/1. Utilisé par le HEALTHCHECK du conteneur ; pas pour un usage interactif. |
Flags globaux (s'appliquent à chaque sous-commande) : --config, --log-level, --log-format. Voir graph-go <command> --help pour la surface complète par commande.
Flux typique :
graph-go demo pour une visite locale réaliste.graph-go serve pour exécuter contre votre propre infrastructure.graph-go scan pour l'automatisation ponctuelle, les exports, ou les vérifications CI.| Port | Objectif |
|---|---|
8080 | graph-go (UI + API + WebSocket — production) |
5173 | Serveur de développement Vite (développement uniquement — voir CONTRIBUTING.md) |
9001 | Console MinIO (stack de démonstration uniquement) |
L'auto-découverte est la voie à suivre. Montez le socket Docker et/ou exécutez-vous dans un cluster Kubernetes — graph-go découvre votre infrastructure sans aucun fichier de configuration nécessaire.
Utilisez le fichier de configuration YAML (conf/config.yaml) uniquement comme échappatoire pour les services qui ne sont pas joignables via la découverte — bases de données distantes, services cloud managés, points de terminaison externes. Voir conf/config.sample.yaml pour le schéma complet — des exemples pour chaque adaptateur et chaque bloc de configuration (server, docker, kubernetes, connections).
Pour utiliser un fichier de configuration avec la commande Docker ci-dessus :