
simplesmente nós e grafos
Veja sua infraestrutura. Zero Configuração.
Aponte o graph-go para seu stack e obtenha um mapa interativo e ao vivo de todos os bancos de dados, tabelas, serviços e buckets de armazenamento — com monitoramento de saúde em tempo real.
graph-go é um mapeador de infraestrutura focado em CLI. Ele descobre automaticamente sua infraestrutura conectando-se ao daemon Docker, inspecionando contêineres em execução e sondando bancos de dados e serviços de armazenamento. A interface é servida pelo backend e reflete o estado real do backend — sem necessidade de inventário manual.
| Capacidade | Detalhes |
|---|---|
| Descoberta automática | Detecta infraestrutura a partir de contêineres Docker e clusters Kubernetes — sem inventário manual |
| Kubernetes | Namespaces, Deployments, StatefulSets, DaemonSets, Pods, Services — com monitoramento em tempo real baseado em informers |
| Docker | Classifica contêineres em execução, extrai credenciais, observa eventos Docker, respeita labels graphgo.* para sobrescrever tipo/DSN/tipo-de-nó/nome ou ignorar um contêiner |
| PostgreSQL | Tabelas, relações de chave estrangeira, topologia de esquema |
| MongoDB | Bancos de dados e coleções |
| MySQL | Tabelas, relações de chave estrangeira |
| Redis | Keyspaces e distribuição de chaves |
| Elasticsearch | Índices, saúde do cluster, status de shards |
| S3 / MinIO | Buckets e prefixos de primeiro nível |
| Serviços HTTP | Endpoints de saúde, mapeamento de dependências entre serviços |
| Saúde em tempo real | Atualizações de status ao vivo via WebSocket a cada 5 segundos |
| Grafo interativo | Layout de raias (swimlane), contêineres de agrupamento por namespace, pan/zoom, filtro por tipo/saúde, busca de nós |
O graph-go respeita um conjunto pequeno de labels de contêiner graphgo.* (defina-as em qualquer contêiner que deseja controlar):
| Label | Efeito |
|---|---|
graphgo.ignore=true | Ignorar este contêiner completamente |
graphgo.type=postgres | Forçar o tipo de adaptador (postgres, mongodb, mysql, redis, elasticsearch, s3, http) |
graphgo.dsn=... | Injetar uma string de conexão (DSN para postgres/mysql, URI para mongodb, caso contrário usa dsn) |
graphgo.node-type=gateway | Sobrescrever o tipo visual do nó (service, gateway, auth, api, queue, cache) |
graphgo.name=... | Sobrescrever o nome do nó mostrado no grafo e usado em IDs de nó / logs |
Use estas para resgatar contêineres mal classificados, apontar o graph-go para um DSN personalizado ou ocultar um contêiner do grafo sem removê-lo.
Inicie o stack de demonstração com dados de exemplo usando a CLI. Esta é a maneira mais rápida de ver o graph-go em um ambiente realista e o caminho de integração recomendado para novos usuários:
git clone https://github.com/guilherme-grimm/graph-go.git
cd graph-go
go run ./cmd/app demo
Abra http://localhost:8080. O comando é executado anexado via Docker Compose. Pressione Ctrl+C para parar a sessão anexada.
A primeira execução pode levar vários minutos em uma máquina fria porque o Docker pode precisar baixar imagens base e construir as imagens de demonstração locais. Execuções posteriores são muito mais rápidas.
O stack de demonstração espera que as seguintes portas do host estejam livres: 8080, 5432, 27017, 9000 e 9001.
Se precisar de uma desmontagem explícita após:
docker compose -f docker-compose.demo.yml down
Um contêiner, uma porta. Monte o socket do Docker como somente leitura e o graph-go descobre automaticamente tudo que está rodando no host:
docker run -d -p 8080:8080 \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
ghcr.io/guilherme-grimm/graph-go:latest
O graph-go apenas lê do socket Docker. A flag
:roimpõe isso — mantenha-a.
Abra http://localhost:8080. A descoberta automática lida com contêineres Docker e (quando um kubeconfig ou conta de serviço in-cluster está presente) recursos Kubernetes sem qualquer arquivo de configuração.
Para serviços que estão fora do Docker/Kubernetes (bancos de dados remotos, serviços gerenciados em nuvem), monte um arquivo de configuração — veja Configuração.
Binário único auto-contido — a interface está embutida, mas o ponto de entrada ainda é a CLI.
# Linux amd64 (requer a CLI do GitHub; veja Releases para outras plataformas)
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 # ou apenas `./graph-go` - mesma coisa
Abra http://localhost:8080. Outras plataformas na página de Releases.
| Comando | O que faz |
|---|---|
graph-go demo | Inicia o stack de demonstração do Docker Compose com dados de exemplo a partir do repositório e exibe sua saída em primeiro plano. |
graph-go serve | Inicia o servidor HTTP com descoberta automática e atualizações ao vivo (padrão - o mesmo que executar sem argumentos). |
graph-go scan | Executa a descoberta uma vez e emite o grafo como JSON para stdout. Útil para canalizar para jq, verificações em CI ou exportações pontuais. |
graph-go version | Exibe versão, commit e data de compilação. |
graph-go --health-check | Acessa o endpoint /health local e sai com 0/1. Usado pelo HEALTHCHECK do contêiner; não para uso interativo. |
Flags globais (aplicam-se a todos os subcomandos): --config, --log-level, --log-format. Veja graph-go <comando> --help para a superfície completa de cada comando.
Fluxo típico:
graph-go demo para um passo-a-passo realista local.graph-go serve para executar contra sua própria infraestrutura.graph-go scan para automação pontual, exportações ou verificações em CI.| Porta | Propósito |
|---|---|
8080 | graph-go (UI + API + WebSocket — produção) |
5173 | Servidor de desenvolvimento Vite (apenas desenvolvimento — veja CONTRIBUTING.md) |
9001 | Console MinIO (apenas stack de demonstração) |
A descoberta automática é o caminho. Monte o socket Docker e/ou execute dentro de um cluster Kubernetes — o graph-go descobre sua infraestrutura sem necessidade de arquivo de configuração.
Use a configuração YAML (conf/config.yaml) apenas como uma saída de emergência para serviços que não são alcançáveis via descoberta — bancos de dados remotos, serviços gerenciados em nuvem, endpoints externos. Veja conf/config.sample.yaml para o esquema completo — exemplos para cada adaptador e cada bloco de configuração (server, docker, kubernetes, connections).
Para usar um arquivo de configuração com o comando Docker acima:
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 autorizado apenas: o graph-go é para visualizar infraestrutura que você possui ou tem permissão para acessar. Não o aponte para sistemas sem autorização.