
просто узлы и графы
Увидьте свою инфраструктуру. Ноль конфигурации.
Направьте graph-go на ваш стек и получите живую интерактивную карту каждой базы данных, таблицы, сервиса и хранилища — с мониторингом состояния в реальном времени.
graph-go — это инфраструктурный картограф с CLI-интерфейсом. Он автоматически обнаруживает вашу инфраструктуру, подключаясь к демону Docker, проверяя запущенные контейнеры и опрашивая базы данных и службы хранения. Веб-интерфейс обслуживается бэкендом и отражает реальное состояние — ручной инвентаризации не требуется.
| Возможность | Подробности |
|---|---|
| Автообнаружение | Обнаруживает инфраструктуру через контейнеры Docker и кластеры Kubernetes — без ручного ввода. |
| Kubernetes | Пространства имён, Deployment'ы, StatefulSet'ы, DaemonSet'ы, Pod'ы, Service'ы — с отслеживанием в реальном времени на основе информеров. |
| 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=... | Переопределить имя узла, отображаемое в графе и используемое в идентификаторах узлов/логах. |
Используйте их для «спасения» неправильно классифицированных контейнеров, указания 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 (требуется GitHub CLI; другие платформы смотрите в Releases)
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 # или просто `./graph-go` — то же самое
Откройте http://localhost:8080. Другие платформы на странице релизов.
| Команда | Что делает |
|---|---|
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 | Dev-сервер Vite (только разработка — см. CONTRIBUTING.md) |
9001 | Консоль MinIO (только демо-стек) |
Автообнаружение — это путь. Подключите сокет Docker и/или запустите внутри кластера Kubernetes — graph-go обнаружит вашу инфраструктуру без конфигурационного файла.
Используйте YAML-конфигурацию (conf/config.yaml) только как запасной вариант для сервисов, недоступных через обнаружение — удалённые базы данных, управляемые облачные службы, внешние эндпоинты. Полную схему с примерами для каждого адаптера и каждого блока конфигурации (server, docker, kubernetes, connections) см. в conf/config.sample.yaml.
Для использования конфигурационного файла при запуске через 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
Только авторизованное использование: graph-go предназначен для визуализации инфраструктуры, которой вы владеете или на доступ к которой имеете разрешение. Не направляйте его на системы без авторизации.