Disponibilité vue de dehors et budget d'erreur dans Grafana
Mettez les checks d’OKStatus à côté des métriques de votre application pour savoir en un coup d’œil d’où vient une panne, et alertez sur la vitesse de consommation du budget d’erreur plutôt que sur chaque check raté. La page Prometheus et Grafana reste la référence pour le scrape, le tableau de bord prêt à importer et les métriques.
Ce que vous allez construire
Section intitulée « Ce que vous allez construire »- un panneau qui superpose l’état vu par les sondes OKStatus et le taux d’erreurs mesuré par votre application ;
- trois règles d’enregistrement qui calculent la vitesse de consommation du budget d’erreur ;
- deux alertes : une qui réveille quand le budget fond, une qui ouvre un ticket quand il s’use lentement.
Avant de commencer
Section intitulée « Avant de commencer »- L’export Prometheus configuré, disponible dès l’offre Pro (voir Prometheus et Grafana).
- Une cible de disponibilité par monitor (
sloTarget, offres Max et Enterprise, voir SLO et budget d’erreur). Sans elle, l’étape 3 montre comment utiliser la cible SLA de l’organisation. - Une métrique de requêtes côté application, par exemple
http_requests_totalavec un labelcode.
1. Le même service des deux côtés
Section intitulée « 1. Le même service des deux côtés »OKStatus étiquette chaque série avec monitor_host : l’hôte (et le port) du service surveillé, jamais son chemin ni ses identifiants. Sélectionnez votre service avec lui, ou avec monitor_name :
okstatus_monitor_up{monitor_host="api.shop.example.com"}2. Le panneau dehors / dedans
Section intitulée « 2. Le panneau dehors / dedans »Dans un panneau Time series, deux requêtes sur le même axe de temps :
# A · seen from outside: 1 up, 0 down (majority of regions)okstatus_monitor_up{monitor_host="api.shop.example.com"}
# B · seen from inside: share of 5xx responsessum(rate(http_requests_total{service="api", code=~"5.."}[5m])) / sum(rate(http_requests_total{service="api"}[5m]))Placez B sur un axe de droite de 0 à 1. La lecture tient en quatre cas :
| Vu de dehors | Vu de dedans | Où chercher |
|---|---|---|
| en panne | erreurs 5xx | l’application ou ses dépendances |
| en panne | normal, ou sans trafic | le chemin d’accès : DNS, CDN, certificat, load balancer |
| en ligne | erreurs 5xx | une partie des routes seulement : le check ne couvre pas le chemin cassé |
| en ligne, une région en échec | normal | le réseau entre cette région et vous ; personne n’a été alerté |
Le dernier cas a sa propre série : okstatus_region_up == 0 pendant que okstatus_monitor_up == 1.
3. Le budget d’erreur
Section intitulée « 3. Le budget d’erreur »Avec une cible de 99,9 % sur 30 jours, le budget est de 0,1 % : environ 43 minutes de panne. La vitesse de consommation dit à quel rythme vous l’épuisez. À 1, il dure exactement 30 jours. À 3, il fond en 10 jours.
groups: - name: okstatus-slo rules: - record: okstatus:budget_burn:24h expr: | (1 - okstatus_monitor_availability_ratio{window="24h"}) / on (monitor_id) (1 - okstatus_monitor_sla_target_ratio) - record: okstatus:budget_burn:7d expr: | (1 - okstatus_monitor_availability_ratio{window="7d"}) / on (monitor_id) (1 - okstatus_monitor_sla_target_ratio) - record: okstatus:budget_left:30d expr: | 1 - (1 - okstatus_monitor_availability_ratio{window="30d"}) / on (monitor_id) (1 - okstatus_monitor_sla_target_ratio)okstatus:budget_left:30d va de 1 (budget intact) à 0 (épuisé), et passe sous 0 une fois la cible manquée. Affichez-le dans une jauge par monitor.
Sans cible par monitor, divisez par la cible SLA de l’organisation : remplacez chaque / on (monitor_id) (1 - okstatus_monitor_sla_target_ratio) par / on () group_left () (1 - okstatus_org_sla_target_ratio).
4. Les alertes
Section intitulée « 4. Les alertes »Elles lisent les règles d’enregistrement de l’étape 3, dans un second fichier :
groups: - name: okstatus-slo-alerts rules: - alert: OKStatusBudgetFastBurn expr: okstatus:budget_burn:24h > 3 for: 15m labels: severity: page annotations: summary: "{{ $labels.monitor_name }}: 10 % of the monthly budget spent in a day"
- alert: OKStatusBudgetSlowBurn expr: okstatus:budget_burn:7d > 1 for: 1h labels: severity: ticket annotations: summary: "{{ $labels.monitor_name }}: at this rate the budget runs out before the month ends"Chargez les deux fichiers avec rule_files: dans prometheus.yml, ou enveloppez chaque groups: dans une PrometheusRule pour le Prometheus Operator.
Les limites
Section intitulée « Les limites »- L’export fournit des fenêtres de 24 heures, 7 jours et 30 jours. Les alertes classiques sur 1 heure ou 6 heures ne sont pas possibles avec ces seules métriques.
- La disponibilité exportée est celle du tableau de bord et des rapports SLA, calculée selon la règle de majorité et actualisée toutes les 5 minutes. Grafana et le PDF concordent.
- Un monitor en pause, ou pendant une maintenance, ne consomme pas de budget.
Pour aller plus loin
Section intitulée « Pour aller plus loin »- SLO et budget d’erreur : définir les cibles dans OKStatus.
- Prometheus et Grafana : toutes les métriques et le tableau de bord 25909.
- La supervision dans Git avec Terraform : définir
slo_targeten code.