2026 — OpenClaw Gateway, métriques Prometheus et tableaux Grafana : activer le scrape /metrics, seuils d’alerte et tri des faux positifs sur Mac physique distant 7j/7 (extraits scrape, requêtes de panneaux + FAQ)
Plateforme et astreinte : héberger OpenClaw Gateway sur un Mac physique distant donne souvent l’impression que tout va bien en SSH alors que Prometheus affiche up=0, ou que Grafana déclenche des « pics nocturnes » à 3h. Cet article propose une matrice topologie de scrape / pardon d’alerte, un runbook reproductible en sept étapes, des extraits scrape / PromQL / règles à coller et une FAQ sur les faux positifs.
1. Introduction et préfixes de noms de métriques
Ce guide s’adresse aux équipes qui exécutent OpenClaw sur des Mac physiques loués (par ex. nœuds ZoneMac). Vous avez besoin de latence HTTP, de taux d’erreur et de santé process sous forme de séries temporelles interrogeables, auditables et alertables — pas seulement d’un curl ad hoc par SSH.
Les noms de métriques varient selon la version OpenClaw et le runtime (Node.js prom-client, OpenTelemetry ou stats intégrées). Le PromQL ci-dessous suppose des métriques HTTP serveur typiques telles que http_request_duration_seconds_* et http_requests_total (ou *_bucket/_sum/_count). Sur l’hôte, exécutez curl -s localhost:<port>/metrics | grep -E 'http_|process_' et adaptez les noms dans les requêtes.
Si vous durcissez encore l’installation et la ligne de base processus, commencez par le tutoriel d’installation OpenClaw v2026.4 sur ZoneMac ; pour le réglage Node et les descripteurs de fichiers, voir Comment exécuter OpenClaw efficacement sur Mac : environnement et performances. Pour les évolutions d’API compatibles OpenAI sur le même type de nœud, voir aussi Mise à jour mineure OpenClaw Gateway : /v1/embeddings et transfert de modèle sur Mac physique distant.
2. Points de friction
- Contrainte : adresse d’écoute vs. emplacement de Prometheus. Si la passerelle n’écoute que sur
127.0.0.1alors que Prometheus est dans un conteneur ou sur un autre hôte d’observabilité, les scrapes échouent —up=0— alors que le curl local sur le Mac fonctionne. - Coût caché : labels à forte cardinalité et scrape_interval agressif. Mettre des chemins bruts ou des fragments de clé API dans les labels fait exploser la cardinalité TSDB ; des scrapes à 1 s sur Wi‑Fi ou tunnel amplifient le jitter en « graphiques en cheveux » Grafana.
- Stabilité et faux positifs : économie d’énergie macOS et fenêtres de déploiement. Veille écran, veille disque ou rechargement à chaud peuvent faire grimper le p95 brièvement ; des alertes avec
for: 0sréveillent l’astreinte pour du bruit.
3. Matrice scrape et alertes
Avant la mise en production, alignez-vous sur « qui scrape depuis quel espace réseau » et si les alertes doivent respecter les heures ouvrées.
| Dimension | Prometheus / vmagent local | Prometheus centralisé distant |
|---|---|---|
| Chemin réseau | Même machine ou pont que la passerelle — usage simple de 127.0.0.1 |
La passerelle doit écouter sur le LAN ou exposer les métriques en lecture seule via reverse proxy / Tailscale |
| Charge opérationnelle | Config par nœud ; les mises à jour touchent beaucoup de fichiers | Règles et tableaux centralisés ; dépend de la joignabilité stable |
| Cas d’usage typique | Mono-locataire, isolation forte, première boucle d’observabilité | Pools multi-régions avec SLO et routage d’alertes unifiés |
| Style d’alerte | Idéal pour | Risque principal |
|---|---|---|
| for: 2–5m + expr. basée sur rate | HTTP 5xx, timeouts, ratio d’erreur élevé | Détecte les pannes prolongées quelques minutes plus tard (acceptable si le SLA le permet) |
| for: 0 + sonde up | Processus absent, port fermé | Bruyant lors des redémarrages rolling sauf silence ou fusion |
| Silence horaire | Maintenance connue, sauvegardes, pics GC | Les silences oubliés masquent de vrais incidents |
4. Runbook en sept étapes (Mac physique distant)
- Confirmer le point de terminaison et l’écoute. Activez les métriques dans la config passerelle ; vérifiez
metrics_path(souvent/metrics) et l’IP d’écoute. Pour des scrapes distants, évitez127.0.0.1seul sauf si le scraper partage ce namespace. - Test fumée local.
curl -sS http://127.0.0.1:<port>/metrics | head -n 40et vérifiez les lignes HELP/TYPE pour HTTP et process. - Choisir l’emplacement du scraper. PoC mono-nœud : Prometheus colocalisé. Nombreux nœuds : remote-write vmagent ou Prometheus central avec listes de pare-feu.
- Rédiger scrape_configs (ci-dessous). Utilisez
scrape_interval: 15s–30s, unscrape_timeoutraisonnable, un relabelinginstancestable. - Brancher Grafana. Ajoutez la datasource Prometheus ; panneaux pour RPS global, p95, ratio 5xx,
upet durée de scrape. - Définir alertes et routes. Utilisez des
fordifférents pour les ratios d’erreur vs.upbrut ; silences Alertmanager ou drapeaux de maintenance CI pendant les déploiements. - Aligner macOS pour le 7j/7. Privilégiez l’Ethernet filaire, désactivez la veille disque, vérifiez fuseau et NTP. Séparez les problèmes de droits et de secrets des métriques : si le scrape est sain mais l’app renvoie 500, lisez les journaux applicatifs avant d’incriminer Prometheus. Pour le TCO nœuds distants multi-régions, voir aussi équipes Apple transfrontalières — Mac mini ou nœuds distants multi-régions ? TCO 3 ans (tableau).
5. Extraits scrape, PromQL et alertes
5.1 Extrait Prometheus scrape_configs
Remplacez targets et le port par l’adresse d’écoute de votre passerelle. Derrière un reverse proxy, laissez passer /metrics et désactivez le cache pour ce chemin.
scrape_configs:
- job_name: openclaw-gateway
scrape_interval: 15s
scrape_timeout: 10s
metrics_path: /metrics
static_configs:
- targets:
- '127.0.0.1:18789'
labels:
env: prod
role: gateway
# relabel_configs:
# - source_labels: [__address__]
# target_label: instance
5.2 Requêtes de panneaux Grafana (adaptez les noms de métriques)
- Requêtes par seconde (RPS) :
sum(rate(http_requests_total{job="openclaw-gateway"}[5m])) - Latence p95 (histogramme) :
histogram_quantile(0.95, sum(rate(http_request_duration_seconds_bucket{job="openclaw-gateway"}[5m])) by (le)) - Ratio 5xx (exemple) :
sum(rate(http_requests_total{job="openclaw-gateway",status=~"5.."}[5m])) / sum(rate(http_requests_total{job="openclaw-gateway"}[5m])) - Santé du scrape :
up{job="openclaw-gateway"}etscrape_duration_seconds{job="openclaw-gateway"}
5.3 Règles d’alerte (Prometheus rule_files)
groups:
- name: openclaw_gateway
rules:
- alert: GatewayScrapeDown
expr: up{job="openclaw-gateway"} == 0
for: 2m
labels:
severity: critical
annotations:
summary: "Point de terminaison métriques OpenClaw injoignable"
- alert: GatewayHigh5xxRatio
expr: sum(rate(http_requests_total{job="openclaw-gateway",status=~"5.."}[5m])) / sum(rate(http_requests_total{job="openclaw-gateway"}[5m])) > 0.05
for: 5m
labels:
severity: warning
annotations:
summary: "Ratio 5xx > 5 % (adapter les labels au schéma réel)"
Si vos métriques utilisent code ou un label outcome au lieu de status, réécrivez les sélecteurs — validez des vecteurs non vides dans Grafana Explore avant de promouvoir en alertes.
6. Tri typique des faux positifs
| Symptôme | Soupçonner en premier | Atténuation |
|---|---|---|
up=0 intermittent |
Reconnexion tunnel, économie Wi‑Fi, écoute loopback seule | Ethernet, corriger l’écoute, allonger for pour les jobs dépendants du tunnel |
| Pics p95 nocturnes | Veille disque, Time Machine, Spotlight | Désactiver la veille disque ; déplacer les sauvegardes ; exiger « deux fenêtres consécutives » dans l’expr d’alerte |
| Alertes 5xx pendant le déploiement | Redémarrage rolling, readiness pas encore vraie | Silence Alertmanager déclenché par la CI ; séparer jobs readiness vs. métriques |
| Croissance mémoire TSDB | Chemin ou identifiant utilisateur dans les labels | Réduire la cardinalité côté appli ; metric_relabel_configs pour supprimer des labels |
7. Seuils prêts à citer
- scrape_interval : 15 s en production (ne descendez pas plus bas que la latence de queue de la passerelle sans raison) ; 30 s sur des liaisons intercontinentales.
- scrape_timeout : gardez ≤ ~2/3 de scrape_interval ; commencez à 10 s sur chemins tunnelisés.
- for sur les alertes : règles de disponibilité à partir de 2 min ; ratios à partir de 5 min, puis resserrez après alignement avec les taux de burn SLO.
8. FAQ
Q : Mettre une Basic Auth devant /metrics ?
R : Oui, si le chemin traverse un réseau non fiable ou multi-locataire. Préférez réseaux privés + mTLS ou tunnels SSH et gardez la complexité d’auth en périphérie.
Q : Le fuseau macOS influence-t-il le PromQL ?
R : Prometheus stocke en UTC ; choisissez le fuseau d’affichage dans Grafana. Si vous corrélez avec des journaux en heure locale, restez cohérent pour éviter l’effet « alerte avant la ligne de log ».
Q : Ajouter node_exporter pour l’hôte ?
R : Oui — ajoutez un job_name: node séparé pour corréler les 5xx passerelle avec disque plein ou CPU saturé.
9. Synthèse et choix de nœud
Une fois les métriques HTTP et process de la passerelle OpenClaw dans Prometheus et Grafana, les incidents sur nœuds physiques 7j/7 passent du « SSH et intuition » à la vérification conjointe de up, des taux d’erreur et du p95. Les thèmes récurrents sont l’alignement adresse d’écoute / chemin réseau du scraper, l’usage de for sur les alertes et l’exclusion du bruit lié à l’énergie macOS et aux déploiements du périmètre SLO.
Ce duo « passerelle + pile d’observabilité » se prête bien à macOS : launchd, journaux et outillage Unix partagent une même stack ; Apple Silicon consomme très peu au ralenti — adapté aux passerelles toujours actives. Face à de petits boîtiers x86 au prix comparable, vous gagnez en général en stabilité et efficacité énergétique, tandis que Gatekeeper, SIP et FileVault durcissent identifiants et points de terminaison tunnel — ce qui compte pour l’exploitation distante.
Si vous voulez déployer les extraits scrape et tableaux de cet article sur du matériel silencieux, sobre et taillé pour le 7j/7, le Mac mini M4 reste l’un des meilleurs rapports qualité-prix en 2026 — louez un Mac physique via ZoneMac et intégrez les métriques passerelle à votre ligne de base production en une passe.
OpenClaw et Prometheus de bout en bout sur du vrai matériel Mac ?
ZoneMac propose des Mac physiques multi-régions pour passerelles 7j/7 et déploiements d’observabilité — capacité à la demande avec la même barre d’acceptation que les scrape_configs de ce guide.