Zum Inhalt springen

Verfügbarkeit von außen und Fehlerbudget in Grafana

Stellen Sie die Prüfungen von OKStatus neben die Metriken Ihrer Anwendung, um auf einen Blick zu sehen, woher ein Ausfall kommt, und alarmieren Sie auf die Verbrauchsrate des Fehlerbudgets statt auf jede fehlgeschlagene Prüfung. Die Seite Prometheus und Grafana bleibt die Referenz für Scrape, fertiges Dashboard und Metriken.

  • ein Panel, das den von den OKStatus-Sonden gesehenen Zustand und die von Ihrer Anwendung gemessene Fehlerrate übereinanderlegt;
  • drei Recording Rules, die die Verbrauchsrate des Fehlerbudgets berechnen;
  • zwei Alarme: einer weckt, wenn das Budget schmilzt, einer eröffnet ein Ticket, wenn es sich langsam abnutzt.
  • Der Prometheus-Export eingerichtet, verfügbar ab dem Pro-Tarif (siehe Prometheus und Grafana).
  • Ein Verfügbarkeitsziel pro Monitor (sloTarget, Tarife Max und Enterprise, siehe SLO und Fehlerbudget). Ohne Ziel zeigt Schritt 3, wie Sie das SLA-Ziel der Organisation verwenden.
  • Eine Request-Metrik auf Anwendungsseite, zum Beispiel http_requests_total mit einem Label code.

OKStatus versieht jede Serie mit monitor_host: Host (und Port) des überwachten Dienstes, nie Pfad oder Zugangsdaten. Wählen Sie Ihren Dienst damit aus, oder mit monitor_name:

okstatus_monitor_up{monitor_host="api.shop.example.com"}

In einem Time series-Panel zwei Abfragen auf derselben Zeitachse:

# 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 responses
sum(rate(http_requests_total{service="api", code=~"5.."}[5m]))
/ sum(rate(http_requests_total{service="api"}[5m]))

Legen Sie B auf eine rechte Achse von 0 bis 1. Das Ablesen läuft auf vier Fälle hinaus:

Von außenVon innenWo suchen
ausgefallen5xx-Fehlerdie Anwendung oder ihre Abhängigkeiten
ausgefallennormal oder kein Trafficder Zugangsweg: DNS, CDN, Zertifikat, Load Balancer
online5xx-Fehlernur ein Teil der Routen: Die Prüfung deckt den kaputten Pfad nicht ab
online, eine Region fehlerhaftnormaldas Netz zwischen dieser Region und Ihnen; niemand wurde alarmiert

Der letzte Fall hat eine eigene Serie: okstatus_region_up == 0, während okstatus_monitor_up == 1.

Bei einem Ziel von 99,9 % über 30 Tage beträgt das Budget 0,1 %: etwa 43 Minuten Ausfall. Die Verbrauchsrate sagt, wie schnell Sie es aufbrauchen. Bei 1 reicht es genau 30 Tage. Bei 3 ist es in 10 Tagen weg.

okstatus-slo.yml
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 geht von 1 (Budget unberührt) bis 0 (aufgebraucht) und fällt unter 0, sobald das Ziel verfehlt ist. Zeigen Sie es als Gauge pro Monitor.

Ohne Ziel pro Monitor teilen Sie durch das SLA-Ziel der Organisation: Ersetzen Sie jedes / on (monitor_id) (1 - okstatus_monitor_sla_target_ratio) durch / on () group_left () (1 - okstatus_org_sla_target_ratio).

Sie lesen die Recording Rules aus Schritt 3, in einer zweiten Datei:

okstatus-slo-alerts.yml
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"

Laden Sie beide Dateien mit rule_files: in prometheus.yml, oder verpacken Sie jedes groups: in eine PrometheusRule für den Prometheus Operator.

  • Der Export liefert Fenster von 24 Stunden, 7 Tagen und 30 Tagen. Die klassischen Alarme über 1 oder 6 Stunden sind mit diesen Metriken allein nicht möglich.
  • Die exportierte Verfügbarkeit ist die des Dashboards und der SLA-Berichte, nach der Mehrheitsregel berechnet und alle 5 Minuten aktualisiert. Grafana und das PDF stimmen überein.
  • Ein pausierter Monitor, oder einer im Wartungsfenster, verbraucht kein Budget.