Мониторинг
Ongrid поставляет рабочий конвейер мониторинга «из коробки» и спроектирован, чтобы подстраиваться под ваш существующий, если он у вас есть.
Плоскость данных
edge:
hostmetrics, procmetrics, node-exporter ─┐
│ remote_write (HTTPS direct)
▼
┌─────────┐
│ Prom │ (default: bundled)
└────┬────┘
│ query_range / instant
▼
┌──────────────────────┐
│ manager: │
│ - alert evaluator │
│ - query_promql │
│ - /api/grafana │
└──────────────────────┘По умолчанию — bundled Prometheus, запущенный в docker-compose на prometheus:9090. Edge пушат напрямую в него через HTTPS — без scrape, без node discovery. Это разделение data-plane / control-plane из ADR-014: туннель geminio несёт control, телеметрия идёт напрямую.
Почему напрямую, а не через туннель
При cardinality ≥ 5 k series/sec на установке из 50 хостов мультиплексирование remote_write через контрольный туннель geminio захлёбывалось. Прямой remote_write убирает manager с горячего пути и позволяет собственному write-ahead-log Prom обрабатывать буферизацию ingest. Trade-off — ещё один HTTPS-эндпоинт, который нужно выставить; см. Установка сервера для сниппета nginx reverse-proxy.
Встроенный vs внешний Prom
Оба режима — first-class.
Встроенный (по умолчанию)
docker compose up поднимает prometheus:v2.55 с --web.enable-remote-write-receiver. Хранилище — именованный том ongrid_prom_data. Retention по умолчанию 15d — настраивайте через PROMETHEUS_RETENTION в .env.
Manager разговаривает с ним по http://prometheus:9090 через env ONGRID_PROM_QUERY_URL. Дальнейшая конфигурация не нужна.
Внешний
Укажите ONGRID_PROM_QUERY_URL на ваш собственный query-эндпоинт Prom / VictoriaMetrics / Thanos. Edge всё ещё remote_write — направьте их на ваш ingest-URL, поставив per-edge remote_write_url в конфиге Edge plugin (internal/manager/biz/edge/plugin_config.go).
Bundled Prom может оставаться запущенным как «self-observability» Prom, который скрейпит только сам manager (метрики self-obs из ADR-026 живут там). Алерты, которым нужны обе половины, могут быть определены дважды с разными match_scope_types.
Путь запроса
Два потребителя, один клиент.
Alert evaluator
PipelineEvaluator.evaluatePromQuery запускает Expr каждого включённого правила metric_raw на tick. Собственные операторы сравнения PromQL (up == 0, cpu_pct > 90) И ЕСТЬ предикат — Prom выбрасывает несовпадающие серии из ответа, так что evaluator просто срабатывает по одному инциденту на возвращённую запись вектора и подметает остаток на recovery sweep следующего тика.
// pipeline.go:269
res, err := e.prom.Query(ctx, rule.Expr, now)
// ...
for _, ent := range entries {
dedupeKey := fmt.Sprintf("pipeline:%s:%s", rule.RuleKey, labelSetKey(ent.Metric))
// ... RecordFiring + notify
}Инструмент query_promql
LLM получает BaseTool под именем query_promql, который принимает instant или range-запрос и возвращает JSON-вектор / матрицу. Персона investigator использует его как основную metric-пробу; coordinator chat использует его, когда вы спрашиваете «какой cpu на edge-prod-04 прямо сейчас?»
Схема живёт в query_promql_basetool.go; базовый движок — internal/pkg/promquery.
Встроенный Grafana
Compose поставляет Grafana на grafana:3000. Manager проксирует его под /api/grafana/* (auth проверяется на прокси), чтобы MonitorPanel.tsx в SPA мог встраивать iframe одним кликом — без отдельного Grafana-логина.
Из коробки manager зеркалит определения внутренней панели мониторинга в Grafana через biz/grafana/Service на sync-tick. Операторы редактируют панели в Grafana (богатый редактор), manager их подхватывает. Страница MonitorEditor в SPA — это тонкий read-then-redirect, который открывает редактор панелей Grafana, предзаполненный релевантной серией.
Учётные данные Grafana
Bundled Grafana поставляется с admin / admin. Поменяйте до выставления. См. Чек-лист первого запуска.
Self-observability
ADR-026 подключил /metrics на manager + 6 baseline-алертов (LLM token spike, alert evaluator stall, tunnel disconnect storm, audit-log lag, investigator backlog, RCA latency p99). Они засеваются при первом запуске в таблицы правил + dashboard и переутверждаются на каждом апгрейде.
Bundled Prom скрейпит /metrics manager. Режим внешнего Prom требует от вас добавить scrape-таргет на manager:9100 (по умолчанию ONGRID_METRICS_ADDR).
См. также
- Алерты — типы правил, которые запрашивают Prom.
- Трейсы — генератор spanmetrics, который кормит серии
traces_spanmetrics_*обратно в тот же Prom. - Логи — параллельный конвейер для Loki.
- Переменные окружения — каждая ручка
ONGRID_PROM_*иPROMETHEUS_*.