Skip to content

Мониторинг

Ongrid поставляет рабочий конвейер мониторинга «из коробки» и спроектирован, чтобы подстраиваться под ваш существующий, если он у вас есть.

Плоскость данных

text
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 следующего тика.

go
// 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_*.