モニタリング
Ongrid は箱から出してすぐ動くモニタリングパイプラインを同梱し、既存の ものがあればそれに 寄り添う 設計です。
データプレーン
edge:
hostmetrics, procmetrics, node-exporter ─┐
│ remote_write (HTTPS direct)
▼
┌─────────┐
│ Prom │ (default: bundled)
└────┬────┘
│ query_range / instant
▼
┌──────────────────────┐
│ manager: │
│ - alert evaluator │
│ - query_promql │
│ - /api/grafana │
└──────────────────────┘デフォルト は docker-compose 内で prometheus:9090 で動く同梱 Prometheus です。edge は HTTPS で直接プッシュします —— スクレイプも ノード検出もありません。これは ADR-014 のデータプレーン / コントロール プレーン分割です:geminio トンネルはコントロールを運び、テレメトリは 直接行きます。
なぜトンネル経由ではなく直接か
50 ホストインストールで 5k 系列/秒以上のカーディナリティになると、 remote_write を geminio コントロールトンネルにマルチプレックスすると 詰まりました。直接 remote_write は manager をホットパスから外し、Prom 独自の write-ahead-log が取り込みバッファリングを処理します。トレード オフは公開する HTTPS エンドポイントが 1 つ増えること —— nginx の リバースプロキシスニペットは サーバーインストール を参照。
組み込み vs 外部 Prom
両モードともファーストクラスです。
組み込み(デフォルト)
docker compose up で prometheus:v2.55 が --web.enable-remote-write-receiver 付きで立ち上がります。ストレージは named volume ongrid_prom_data。 保存期間はデフォルト 15d —— .env の PROMETHEUS_RETENTION でチューン。
manager は ONGRID_PROM_QUERY_URL 環境変数経由で http://prometheus:9090 と話します。追加の設定は不要です。
外部
ONGRID_PROM_QUERY_URL を自前の Prom / VictoriaMetrics / Thanos の クエリエンドポイントに向けます。edge は依然 remote_write します —— Edge プラグイン設定(internal/manager/biz/edge/plugin_config.go)の エッジごとの remote_write_url でインゲスト URL を指してください。
クラウド同梱の Prom は manager 自身だけをスクレイプする「セルフ可観測性」 Prom として走り続けることができます(ADR-026 のセルフ obs メトリクス はそこに居ます)。両半分が必要なアラートは異なる match_scope_types で 2 度定義できます。
クエリパス
2 つのコンシューマー、1 つのクライアント。
Alert evaluator
PipelineEvaluator.evaluatePromQuery は tick ごとに、有効な metric_raw ルールの Expr を走らせます。PromQL 自身の比較オペレーター (up == 0、cpu_pct > 90)が述語です —— Prom はマッチしない系列を レスポンスから落とすので、evaluator は返ってきたベクトルエントリごとに 1 インシデント発火し、次の tick の復旧スイープで残りを刈り取ります。
// 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 は instant または range クエリを取って JSON ベクトル / 行列を返す query_promql という BaseTool を持ちます。investigator ペルソナはこれ を主要なメトリクスプローブとして使い、coordinator のチャットは「今 edge-prod-04 の cpu は?」と訊いたときに使います。
スキーマは query_promql_basetool.go にあり、基底エンジンは internal/pkg/promquery です。
埋め込み Grafana
compose は grafana:3000 で Grafana を出します。manager は /api/grafana/* でプロキシ(プロキシで認証チェック)するので、SPA の MonitorPanel.tsx はワンクリックで iframe を埋め込めます —— Grafana への 別ログインなし。
箱から出した状態で、manager は同期 tick で内部のモニターパネル定義を biz/grafana/Service 経由で Grafana に ミラー します。operator はリッチエディタである Grafana でパネルを編集し、manager がそれを拾います。SPA の MonitorEditor ページは薄い read-then-redirect で、関連系列がプリ入力された Grafana パネルエディタをポップします。
Grafana 認証情報
同梱 Grafana は admin / admin で出荷されます。公開する前に変更して ください。初回起動チェックリスト を参照。
セルフ可観測性
ADR-026 は manager に /metrics + 6 つのベースラインアラート(LLM トークン スパイク、alert evaluator のストール、トンネル切断ストーム、監査ログ ラグ、investigator バックログ、RCA レイテンシ p99)を配線しました。これら は初回起動でルール + ダッシュボードテーブルに seed され、アップグレード ごとに再アサートされます。
同梱 Prom は manager の /metrics をスクレイプします。外部 Prom モード では manager:9100(デフォルト ONGRID_METRICS_ADDR)にスクレイプ ターゲットを追加する必要があります。