
просто узлы и графы
Смотрите свою инфраструктуру. Без конфигурации.
Направьте graph-go на свой стек и получите живую интерактивную карту каждой базы данных, таблицы, сервиса и хранилища — с мониторингом состояния в реальном времени.
graph-go — это CLI-ориентированный инструмент для картирования инфраструктуры. Он автоматически обнаруживает вашу инфраструктуру, подключаясь к демону Docker, инспектируя запущенные контейнеры и проверяя базы данных и сервисы хранения. Интерфейс обслуживается бэкендом и отражает реальное состояние бэкенда — ручная инвентаризация не требуется.
| Возможность | Подробности |
|---|---|
| Автообнаружение | Определяет инфраструктуру из контейнеров Docker и кластеров Kubernetes — ручная инвентаризация не требуется |
| Kubernetes | Namespaces, Deployments, StatefulSets, DaemonSets, Pods, Services — с наблюдением в реальном времени на основе informer |
| Docker | Классифицирует запущенные контейнеры, извлекает учётные данные, отслеживает события Docker, учитывает метки graphgo.* для переопределения типа/DSN/типа узла/имени или игнорирования контейнера |
| PostgreSQL | Таблицы, связи внешних ключей, топология схемы |
| MongoDB | Базы данных и коллекции |
| MySQL | Таблицы, связи внешних ключей |
| Redis | Ключевые пространства и распределение ключей |
| Elasticsearch | Индексы, состояние кластера, статус шардов |
| S3 / MinIO | Бакеты и префиксы верхнего уровня |
| HTTP-сервисы | Эндпоинты проверки работоспособности, картирование зависимостей между сервисами |
| Состояние в реальном времени | Обновления статуса в реальном времени через WebSocket каждые 5 секунд |
| Интерактивный граф | Swimlane-раскладка, групповые контейнеры пространств имён, панорамирование/масштабирование, фильтрация по типу/состоянию, поиск узлов |
graph-go учитывает небольшой набор меток контейнеров graphgo.* (задайте их на любом контейнере, которым хотите управлять):
| Метка | Эффект |
|---|---|
graphgo.ignore=true | Полностью пропустить этот контейнер |
graphgo.type=postgres | Принудительно задать тип адаптера (postgres, mongodb, mysql, redis, elasticsearch, s3, http) |
graphgo.dsn=... | Внедрить строку подключения (DSN для postgres/mysql, URI для mongodb, иначе используется dsn) |
graphgo.node-type=gateway | Переопределить визуальный тип узла (service, gateway, auth, api, queue, cache) |
graphgo.name=... | Переопределить имя узла, отображаемое в графе и используемое в ID узлов / логах |
Используйте их, чтобы спасти неверно классифицированные контейнеры, направить graph-go на пользовательский DSN или скрыть контейнер из графа без его удаления.
Запустите демонстрационный стек с предзаполненными данными через CLI. Это самый быстрый способ увидеть graph-go в реалистичной среде и рекомендуемый путь для первого знакомства:
git clone https://github.com/guilherme-grimm/graph-go.git
cd graph-go
go run ./cmd/app demo
Откройте http://localhost:8080. Команда выполняется в присоединённом режиме через Docker Compose. Нажмите Ctrl+C, чтобы остановить присоединённую сессию.
Первый запуск может занять несколько минут на «холодной» машине, так как Docker может потребоваться загрузить базовые образы и собрать локальные демонстрационные образы. Последующие запуски проходят гораздо быстрее.
Демонстрационный стек ожидает, что эти порты хоста свободны: 8080, 5432, 27017, 9000 и 9001.
Если после этого нужно явно всё удалить:
docker compose -f docker-compose.demo.yml down
Один контейнер, один порт. Смонтируйте сокет Docker в режиме только для чтения, и graph-go автоматически обнаружит всё, что работает на хосте:
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 только читает из сокета Docker. Флаг
:roобеспечивает это — не убирайте его.
Откройте http://localhost:8080. Автообнаружение обрабатывает контейнеры Docker и (при наличии kubeconfig или сервисной учётной записи внутри кластера) ресурсы Kubernetes без какого-либо файла конфигурации.
Для сервисов, находящихся вне Docker/Kubernetes (удалённые базы данных, управляемые облачные сервисы), смонтируйте файл конфигурации — см. Конфигурация.
Единый самодостаточный бинарный файл — интерфейс встроен, но точкой входа по-прежнему остаётся 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
Откройте http://localhost:8080. Другие платформы на странице Releases.
| Команда | Что делает |
|---|---|
graph-go demo | Запускает демонстрационный стек Docker Compose с предзаполненными данными из репозитория и транслирует его вывод на переднем плане. |
graph-go serve | Запускает HTTP-сервер с автообнаружением и живыми обновлениями (по умолчанию — то же, что запуск без аргументов). |
graph-go scan | Выполняет обнаружение один раз и выводит граф в формате JSON в stdout. Полезно для передачи в jq, проверок CI или разовых экспортов. |
graph-go version | Выводит версию, коммит и дату сборки. |
graph-go --health-check | Обращается к локальному /health и завершается с кодом 0/1. Используется HEALTHCHECK контейнера; не для интерактивного использования. |
Глобальные флаги (применяются к каждой подкоманде): --config, --log-level, --log-format. Полный набор параметров для каждой команды см. в graph-go <command> --help.
Типичный сценарий:
graph-go demo для реалистичного локального ознакомления.graph-go serve для работы с собственной инфраструктурой.graph-go scan для разовой автоматизации, экспортов или проверок CI.| Порт | Назначение |
|---|---|
8080 | graph-go (UI + API + WebSocket — production) |
5173 | Vite dev server (только для разработки — см. CONTRIBUTING.md) |
9001 | Консоль MinIO (только демонстрационный стек) |
Автообнаружение — это основной путь. Смонтируйте сокет Docker и/или запустите внутри кластера Kubernetes — graph-go обнаружит вашу инфраструктуру без необходимости в файле конфигурации.
Используйте YAML-конфигурацию (conf/config.yaml) только как запасной вариант для сервисов, недоступных через обнаружение — удалённых баз данных, управляемых облачных сервисов, внешних эндпоинтов. Полную схему см. в conf/config.sample.yaml — примеры для каждого адаптера и каждого блока конфигурации (server, docker, kubernetes, connections).
Чтобы использовать файл конфигурации с приведённым выше запуском Docker:
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