Skip to content

Monitoring ​

Ongrid livre un pipeline de monitoring fonctionnel out of the box et est conçu pour s'incliner vers le vôtre quand vous en avez un.

Le plan de données ​

text
edge:
  hostmetrics, procmetrics, node-exporter  ─┐
                                            │  remote_write (HTTPS direct)
                                            ▼
                                       ┌─────────┐
                                       │  Prom   │  (default: bundled)
                                       └────┬────┘
                                            │ query_range / instant
                                            ▼
                                  ┌──────────────────────┐
                                  │  manager:            │
                                  │   - alert evaluator  │
                                  │   - query_promql     │
                                  │   - /api/grafana     │
                                  └──────────────────────┘

Le défaut est un Prometheus embarqué tournant dans le docker-compose à prometheus:9090. Les edges poussent directement vers lui sur HTTPS — pas de scrape, pas de découverte de nœuds. C'est la séparation plan-de-données / plan-de-contrôle d'ADR-014 : le tunnel geminio porte le contrôle, la télémétrie va en direct.

Pourquoi en direct, pas via le tunnel

À une cardinalité ≥ 5 k séries/sec sur une install de 50 hosts, multiplexer remote_write à travers le tunnel de contrôle geminio s'étouffait. Le remote_write direct retire le manager du chemin chaud et laisse le write-ahead-log de Prom gérer le buffering d'ingestion. Le compromis est un endpoint HTTPS de plus à exposer ; voir Installation serveur pour le snippet de reverse-proxy nginx.

Built-in vs Prom externe ​

Les deux modes sont de première classe.

Built-in (défaut) ​

docker compose up amène prometheus:v2.55 avec --web.enable-remote-write-receiver. Le stockage est un volume nommé ongrid_prom_data. La rétention est par défaut à 15j — ajustez via PROMETHEUS_RETENTION dans .env.

Le manager lui parle à http://prometheus:9090 via l'env ONGRID_PROM_QUERY_URL. Pas d'autre config nécessaire.

Externe ​

Pointez ONGRID_PROM_QUERY_URL vers votre propre endpoint de requête Prom / VictoriaMetrics / Thanos. Les edges continuent à remote_write — pointez-les vers votre URL d'ingest en settant le remote_write_url par edge dans la config plugin Edge (internal/manager/biz/edge/plugin_config.go).

Le Prom cloud-embarqué peut rester en marche comme Prom d'« auto-observabilité » qui ne scrape que le manager lui-même (les métriques self-obs d'ADR-026 y vivent). Les alertes qui ont besoin des deux moitiés peuvent être définies deux fois avec des match_scope_types différents.

Le chemin de requête ​

Deux consommateurs, un client.

Evaluator d'alerte ​

PipelineEvaluator.evaluatePromQuery tourne l'Expr de chaque règle metric_raw activée sur un tick. Les opérateurs de comparaison de PromQL (up == 0, cpu_pct > 90) SONT le prédicat — Prom drop les séries non-matchantes de la réponse, donc l'evaluator part juste un incident par entrée de vecteur renvoyée et balaye le reste lors du sweep de récupération du tick suivant.

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
}

L'outil query_promql ​

Le LLM reçoit un BaseTool appelé query_promql qui prend une requête instant ou range et renvoie le JSON vector / matrix. La persona investigator l'utilise comme sa sonde de métriques principale ; le chat coordinator l'utilise chaque fois que vous demandez « quel est le cpu sur edge-prod-04 maintenant ? ».

Le schéma vit dans query_promql_basetool.go ; le moteur sous-jacent est internal/pkg/promquery.

Grafana embarqué ​

Le compose livre Grafana à grafana:3000. Le manager le proxify sous /api/grafana/* (auth vérifiée au proxy) pour que MonitorPanel.tsx de la SPA puisse embarquer des iframes en un clic — pas de login Grafana séparé.

Out of box, le manager mirroir les définitions de panel de monitoring internes dans Grafana via biz/grafana/Service sur un tick de sync. Les opérateurs éditent les panels dans Grafana (l'éditeur riche), le manager les reprend. La page MonitorEditor dans la SPA est un mince read-then-redirect qui ouvre l'éditeur de panel Grafana pré-rempli avec la série pertinente.

Credentials Grafana

Le Grafana embarqué est livré avec admin / admin. Changez avant exposition. Voir Check-list du premier démarrage.

Auto-observabilité ​

ADR-026 a câblé /metrics sur le manager + 6 alertes baseline (spike de tokens LLM, stall de l'evaluator d'alertes, tempête de déconnexion de tunnel, lag d'audit-log, backlog d'investigator, latence RCA p99). Celles-ci sont seedées au premier démarrage dans les tables rules + dashboard et ré-asserties à chaque upgrade.

Le Prom embarqué scrape le /metrics du manager. Le mode Prom externe vous demande d'ajouter une cible de scrape à manager:9100 (défaut ONGRID_METRICS_ADDR).

Voir aussi ​

  • Alertes — les types de règles qui interrogent Prom.
  • Traces — le générateur spanmetrics qui réécrit les séries traces_spanmetrics_* dans le même Prom.
  • Logs — le pipeline parallèle pour Loki.
  • Variables d'environnement — chaque bouton ONGRID_PROM_* et PROMETHEUS_*.