Monitoring
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 로 직접 push — scrape, 노드 발견 없음. 이는 ADR-014 의 데이터 플레인 / 컨트롤 플레인 분할: geminio 터널이 컨트롤을 운반, 텔레메트리는 직접.
왜 터널 경유가 아닌 직접
50 호스트 설치의 카디널리티 ≥ 5 k series/sec 에서 geminio 컨트롤 터널을 통해 remote_write 를 멀티플렉싱하면 막혔습니다. 직접 remote_write 는 매니저를 hot 경로에서 제거하고 Prom 자체의 write-ahead-log 가 인제스션 버퍼링을 처리하게 합니다. 트레이드오프는 노출할 HTTPS 엔드포인트 하나 추가; nginx 리버스 프록시 스니펫은 Server install 참고.
내장 vs 외부 Prom
두 모드 모두 일급.
내장 (기본)
docker compose up 이 --web.enable-remote-write-receiver 와 함께 prometheus:v2.55 를 띄움. 스토리지는 명명 볼륨 ongrid_prom_data. 보존 기본 15d — .env 의 PROMETHEUS_RETENTION 으로 튜닝.
매니저는 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) 의 edge 별 remote_write_url 설정으로 인제스트 URL 을 가리키게 합니다.
클라우드 번들 Prom 은 매니저 자체만 scrape 하는 "self-observability" Prom (ADR-026 self-obs 메트릭이 거기 산다) 으로 계속 실행 가능. 두 절반 모두 필요한 알림은 다른 match_scope_types 로 두 번 정의 가능.
쿼리 경로
두 소비자, 하나의 클라이언트.
알림 evaluator
PipelineEvaluator.evaluatePromQuery 가 매 틱마다 활성 metric_raw 규칙의 Expr 을 실행. PromQL 자체 비교 연산자 (up == 0, cpu_pct > 90) 가 predicate — Prom 이 응답에서 비매칭 시리즈를 떨어뜨리므로 evaluator 는 반환된 벡터 엔트리당 하나의 incident 만 발화하고 나머지는 다음 틱의 회복 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 은 instant 또는 range 쿼리를 받아 JSON 벡터 / 매트릭스를 반환하는 query_promql BaseTool 을 얻습니다. Investigator persona 가 주 메트릭 프로브로 사용; coordinator 채팅은 "edge-prod-04 의 지금 cpu 가 뭐야?" 라고 물을 때마다 사용.
스키마는 query_promql_basetool.go; 기반 엔진은 internal/pkg/promquery.
임베디드 Grafana
Compose 는 grafana:3000 에 Grafana 를 출하. 매니저가 /api/grafana/* 아래에서 프록시 (인증은 프록시에서 검사) 하므로 SPA 의 MonitorPanel.tsx 가 한 번의 클릭으로 iframe 임베드 가능 — 별도 Grafana 로그인 없음.
박스 그대로 매니저는 sync 틱마다 biz/grafana/Service 를 통해 내부 모니터 패널 정의를 Grafana 로 미러링 합니다. 운영자는 Grafana 에서 패널 편집 (풍부한 에디터), 매니저가 픽업. SPA 의 MonitorEditor 페이지는 관련 시리즈가 미리 채워진 Grafana 패널 에디터를 띄우는 얇은 read-then-redirect.
Grafana 자격 증명
번들 Grafana 는 admin / admin 으로 출하. 노출 전에 변경. 첫 부팅 체크리스트 참고.
Self-observability
ADR-026 이 매니저에 /metrics + 6 기준선 알림 (LLM 토큰 스파이크, 알림 evaluator 멈춤, 터널 disconnect 폭풍, 감사 로그 지연, investigator 백로그, RCA 지연 p99) 을 배선. 이들은 첫 부팅 시 규칙 + 대시보드 테이블에 시드되며 모든 업그레이드 시 재단언.
번들 Prom 이 매니저의 /metrics 를 scrape. 외부 Prom 모드는 manager:9100 (기본 ONGRID_METRICS_ADDR) 에 scrape 타깃 추가 필요.