
simplesmente nós e grafos
Veja sua infraestrutura. Zero Configuração.
Aponte o graph-go para sua stack e obtenha um mapa interativo e ao vivo de cada banco de dados, tabela, serviço e bucket de armazenamento — com monitoramento de saúde em tempo real.
graph-go é um mapeador de infraestrutura com CLI em primeiro lugar. Ele descobre automaticamente sua infraestrutura conectando-se ao daemon do Docker, inspecionando contêineres em execução e sondando bancos de dados e serviços de armazenamento. A UI é servida pelo backend e reflete o estado real do backend — nenhum inventário manual é necessário.
| Capacidade | Detalhes |
|---|---|
| Descoberta automática | Detecta infraestrutura a partir de contêineres Docker e clusters Kubernetes — nenhum inventário manual é necessário |
| Kubernetes | Namespaces, Deployments, StatefulSets, DaemonSets, Pods, Services — com observação em tempo real baseada em informers |
| Docker | Classifica contêineres em execução, extrai credenciais, observa eventos do Docker, respeita rótulos graphgo.* para sobrescrever tipo/DSN/node-type/name ou ignorar um contêiner |
| PostgreSQL | Tabelas, relacionamentos de chave estrangeira, topologia de schema |
| MongoDB | Bancos de dados e coleções |
| MySQL | Tabelas, relacionamentos 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 nível superior |
| 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 em swimlane, contêineres de agrupamento por namespace, pan/zoom, filtro por tipo/saúde, busca de nós |
O graph-go respeita um pequeno conjunto de rótulos de contêiner graphgo.* (defina-os em qualquer contêiner que você queira controlar):
| Rótulo | Efeito |
|---|---|
graphgo.ignore=true | Ignora completamente este contêiner |
graphgo.type=postgres | Força o tipo de adaptador (postgres, mongodb, mysql, redis, elasticsearch, s3, http) |
graphgo.dsn=... | Injeta uma string de conexão (DSN para postgres/mysql, URI para mongodb, caso contrário usa dsn) |
graphgo.node-type=gateway | Sobrescreve o tipo visual do nó (service, gateway, auth, api, queue, cache) |
graphgo.name=... | Sobrescreve o nome do nó exibido no grafo e usado em IDs de nós / logs |
Use-os 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 a stack de demonstração pré-configurada com a CLI. Esta é a maneira mais rápida de ver o graph-go em um ambiente realista e o caminho de integração pretendido para usuários de primeira viagem:
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 em anexo via Docker Compose. Pressione Ctrl+C para parar a sessão em anexo.
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.
A stack de demonstração espera que estas portas do host estejam livres: 8080, 5432, 27017, 9000 e 9001.
Se você precisar de uma desmontagem explícita depois:
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 o 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 do Docker. A flag
:rogarante isso — mantenha-a.
Abra http://localhost:8080. A descoberta automática lida com contêineres Docker e (quando um kubeconfig ou service account in-cluster está presente) recursos do Kubernetes sem nenhum arquivo de configuração.
Para serviços que vivem fora do Docker/Kubernetes (bancos de dados remotos, serviços de nuvem gerenciados), monte um arquivo de configuração — veja Configuração.
Binário único e autocontido — a UI é embutida, mas o ponto de entrada ainda é a 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
Abra http://localhost:8080. Outras plataformas na página de Releases.
| Comando | O que faz |
|---|---|
graph-go demo | Inicia a stack de demonstração pré-configurada do Docker Compose a partir do repositório e transmite 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 encadear em jq, verificações de CI ou exportações pontuais. |
graph-go version | Imprime versão, commit e data de build. |
graph-go --health-check | Acessa o /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 <command> --help para a superfície completa por comando.
Fluxo típico:
graph-go demo para um passo a passo local realista.graph-go serve para executar contra sua própria infraestrutura.graph-go scan para automação pontual, exportações ou verificações de CI.| Porta | Propósito |
|---|---|
8080 | graph-go (UI + API + WebSocket — produção) |
5173 | Servidor de desenvolvimento Vite (apenas desenvolvimento — veja CONTRIBUTING.md) |
9001 | Console do MinIO (apenas stack de demonstração) |
A descoberta automática é o caminho. Monte o socket do Docker e/ou execute dentro de um cluster Kubernetes — o graph-go descobre sua infraestrutura com nenhum arquivo de configuração necessário.
Use o arquivo de configuração YAML (conf/config.yaml) apenas como uma válvula de escape para serviços que não são acessíveis via descoberta — bancos de dados remotos, serviços de nuvem gerenciados, endpoints externos. Veja conf/config.sample.yaml para o schema 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
Apenas uso autorizado: o graph-go é para visualizar infraestrutura que você possui ou tem permissão para acessar. Não o aponte para sistemas sem autorização.