Zurück zum BlogEnglish version
KI-Automatisierung

Burn-Rate-Alarme für KI-Dienste: Bei Nutzerauswirkung alarmieren, nicht bei jedem Modellfehler

Definieren Sie nutzerbezogene Ereigniszähler, kombinieren Sie Burn-Rate-Fenster und testen Sie die Rücksetzung. Mit sechs synthetischen Prometheus-Regeltests.

9 min readAktualisiert
Zwei Messing-Mittelungskammern mit roter Alarmsperre als dunkle technische Schnittzeichnung. Text: AIOPS — MUSS DAFÜR DER ALARM LOS?

Alarmieren Sie die Rufbereitschaft, wenn Ihr KI-Dienst sein vereinbartes Fehlerbudget so schnell verbraucht, dass ein Eingriff erforderlich ist – nicht bei jedem fehlgeschlagenen Modellaufruf. Definieren Sie erfolgreiche Ereignisse an der Nutzergrenze, kombinieren Sie lange und kurze Burn-Rate-Fenster und testen Sie Auslösung sowie Rücksetzung. Behandeln Sie geringe Last und fehlende Telemetrie ausdrücklich: Eine fehlende Fehlerquote bedeutet keinen gesunden Dienst.

Diese Implementierungsanleitung trennt drei Entscheidungen: Ist das Nutzerergebnis fehlgeschlagen? Rechtfertigt die Fehlerrate eine Unterbrechung der Rufbereitschaft? Welches Team erhält die Benachrichtigung? Die Zahlen sind ein Beispiel. Sechs synthetische Prometheus-Regeltests wurden mit promtool 3.14.0 ausgeführt; sie sind keine Produktionsmessungen und kein Nachweis reduzierter Bereitschaftsbelastung.

Beginnen Sie an der Nutzergrenze, nicht am Modell-SDK

Definieren Sie für einen interaktiven Assistenten genau ein berechtigtes Ereignis je logischem Nutzervorgang an einer festgelegten Dienstgrenze. Ein betrieblich erfolgreiches Ereignis kann eine vollständig übermittelte Antwort innerhalb der vereinbarten Frist sein, die synchrone Schema- oder Richtlinienprüfungen besteht. Zählen Sie den Vorgang einmal, auch wenn er Wiederholungen oder mehrere Modellaufrufe auslöst. Ein Anbieterfehler mit rechtzeitiger erfolgreicher Wiederherstellung muss kein fehlgeschlagener Nutzervorgang sein; ein HTTP 200 mit unbrauchbarem Teilstream kann dagegen einer sein.

Legen Sie die Behandlung abgewiesener Anfragen, Client-Abbrüche, Richtlinienablehnungen und unvollständiger Streams vor der Instrumentierung fest. Wenn Sie Überlastabweisungen ausschließen, verbergen Sie möglicherweise genau den Ausfall, den das SLO erkennen soll. Eine berechtigte Sicherheitsablehnung ist nicht automatisch ein Fehler. Für nie abgeschlossene Vorgänge benötigen Sie einen Timeout- oder Ablaufpfad; andernfalls werden hängende Anfragen in Abschlussmetriken systematisch unsichtbar.

Verwenden Sie begrenzte Labels wie Dienst und Lastklasse. Prompts, Nutzer-IDs und Request-IDs gehören nicht in Prometheus-Labels. Exportieren Sie Zähler für berechtigte und fehlerhafte Ereignisse kontinuierlich, einschließlich initialisierter Fehlerzähler mit Wert null. Prüfen Sie in Instrumentierungstests, dass fehlerhafte Ereignisse die berechtigten nicht übersteigen. Fehler einzelner Modellversuche bleiben Diagnosesignale, nicht der Nenner für die Zuverlässigkeit logischer Nutzervorgänge.

Diese Ebene ergänzt den Inferenzbetrieb mit nutzerbezogenen SLOs: Der Grundlagenbeitrag definiert Dienstversprechen und Anfragephasen; hier geht es um Alarmzustand und Benachrichtigungsregeln. Semantische Korrektheit aus späterer menschlicher Prüfung benötigt einen separaten Qualitätsindikator. Unterstellen Sie nicht für jede Antwort ein sofort verfügbares, verlässliches Korrektheitslabel.

Leiten Sie die Burn-Rate-Schwelle aus der Reaktionsentscheidung ab

Die Burn Rate ist der beobachtete Anteil fehlerhafter Ereignisse geteilt durch den zulässigen Fehleranteil. Bei einem beispielhaften Ziel von 99,9 % beträgt die Toleranz 0,001. Eine Fehlerquote von 1,44 % entspricht damit einer Burn Rate von 14,4. Für einen Berichtszeitraum von 30 Tagen gilt die übliche Beziehung: Burn-Rate-Schwelle = gewählter Budgetanteil × 720 Stunden ÷ Stunden des langen Fensters.

Bei anfragebasierten SLOs setzt die Übersetzung von Zeit in einen Anteil des monatlichen Anfragebudgets eine repräsentative Anfragerate voraus. Eine ruhige Stunde und eine Spitzenlaststunde enthalten nicht zwangsläufig denselben Anteil berechtigter Ereignisse. Erfassen Sie deshalb zusätzlich die tatsächlichen fehlerhaften und berechtigten Ereignisse im Berichtszeitraum. Die zeitbasierte Berechnung ist eine Näherung für die Alarmgestaltung, keine exakte Budgetbuchhaltung bei beliebigem Lastverlauf.

Das Google SRE Workbook empfiehlt mehrere Fenster und Burn Rates, weil ein einzelnes kurzes Fenster unruhig reagiert und ein einzelnes langes Fenster langsam zurücksetzt. Beide Fenster eines Paares müssen dieselbe Burn-Rate-Schwelle überschreiten. Verknüpfen Sie unterschiedliche Dringlichkeitspaare mit OR. Das kurze Fenster prüft, ob das Problem noch aktiv ist.

RegelklasseLanges / kurzes FensterBurn-Rate-SchwelleBeabsichtigte Reaktion und Grenze
Schneller Bereitschaftsalarm1 Stunde / 5 Minuten14,4Beispielhaft 2 % Budgetanteil; nur bei sinnvoller sofortiger Reaktion unterbrechen
Langsamer Bereitschaftsalarm6 Stunden / 30 Minuten6Beispielhaft 5 % Budgetanteil; anhaltende Verschlechterung mit mehr Reaktionszeit
Ticket72 Stunden / 6 Stunden1Beispielhaft 10 % Budgetanteil; Untersuchung mit Verantwortung statt unbeachteter Warteschlange
Geringe oder keine LastExplizite Mengen- und GesundheitsprüfungenKeine universelle QuotenschwelleProbes oder Geschäftsfristen prüfen; eine Mengenschwelle kann vollständige Ausfälle bei geringer Last verdecken

Dies sind mögliche Regelklassen, keine universellen Schwellen. Die ausgeführte Testimplementierung umfasst nur den schnellen Bereitschaftsalarm und ein unabhängiges Signal für fehlende Zeitreihen. Ergänzen Sie weitere Klassen erst mit benannten Verantwortlichen und eigenen Tests. Lange Bereichsabfragen kosten außerdem Speicher und Auswertungszeit; überwachen Sie Regelauswertungen und wählen Sie eine passende Recording-Strategie für Ihr Prometheus-Deployment.

Recording Rules: Erst Ereignisse aggregieren, dann dividieren

Legen Sie für jedes Fenster W aus 5m und 1h die Recording Rule service:sli_error_ratio:W an. Verwenden Sie folgenden Ausdruck und ersetzen Sie beide W durch das jeweilige Fenster:

sum by (service) (rate(ai_service_bad_total[W])) / sum by (service) (rate(ai_service_eligible_total[W]))

Berechnen Sie Raten pro Zähler vor der Aggregation, damit Resets je Zeitreihe behandelt werden. Dividieren Sie Summen, nicht den Mittelwert einzelner Instanzquoten; andernfalls kann eine fast ungenutzte Instanz dasselbe Gewicht wie die meistbelastete Replik erhalten. Behalten Sie auf beiden Seiten dasselbe service-Label. Das Beispiel enthält bewusst eine Lastklasse. Wenn Ihr Vertrag getrennte Klassen verlangt, ergänzen Sie dasselbe begrenzte Klassenlabel durchgängig in Recordings, Vergleichen und Vektormatching.

Der getestete Ausdruck für den schnellen Bereitschaftsalarm lautet:

(service:sli_error_ratio:1h > 14.4 * 0.001) and on (service) (service:sli_error_ratio:5m > 14.4 * 0.001) and on (service) (sum by (service) (increase(ai_service_eligible_total[1h])) >= 100) and on (service) (sum by (service) (increase(ai_service_eligible_total[5m])) >= 20)

Die Mindestmengen von 100 und 20 Ereignissen sind ausdrücklich beispielhafte technische Entscheidungen, keine statistischen Konfidenzgarantien. increase extrapoliert an Fenstergrenzen und ist kein exakter Audit-Zähler. Diese Grenzen unterdrücken unruhige Quotenalarme, können aber auch einen echten Ausfall bei geringer Last unterdrücken. Ergänzen Sie deshalb eine separat verantwortete synthetische Transaktion, eine Prüfung des Rückstaualters oder einer Geschäftsfrist. Synthetische Transaktionen müssen sicher, repräsentativ und separat gekennzeichnet sein; sie dürfen den Nenner realer Nutzervorgänge nicht unbemerkt vergrößern.

Für den einzelnen erwarteten Testdienst lautet der unabhängige Telemetrieausdruck absent_over_time(ai_service_eligible_total{service="assistant"}[5m]). Benennen Sie den Alarm AISLIMissing und setzen Sie severity=ticket. In einer Flotte benötigen Sie ein Verzeichnis erwarteter Dienste sowie Prüfungen pro Dienst und der Scrape-Gesundheit: Ein globaler absent-Ausdruck erkennt kein fehlendes Mitglied, solange andere weiterhin exportieren. Fehlende Fehlerzähler, teilweise verlorene Targets und eingefrorene, aber vorhandene Zähler benötigen eigene Integritätsprüfungen. Ein Nenner von null bleibt undefiniert und darf nicht durch eine erfundene Fehlerfreiheit ersetzt werden.

Prüfen Sie Auslösung und Rücksetzung, nicht nur Syntax

Prometheus dokumentiert das Format für Regel-Unit-Tests, einschließlich expandierender Eingaben und stale-Samples. Die folgenden Fälle nutzen einminütige Samples und Auswertungen, ein service-Label und die beiden Recording Rules vor AIServiceFastBurn, ohne for und ohne keep_firing_for. Burn-Rate-Alarme tragen severity=page, Alarme für fehlende Zeitreihen severity=ticket. Für diese minimalen Assertions sind keine Annotationen erforderlich.

TestfallWerte für berechtigte / fehlerhafte EreignisseAuswertungErwartete aktive Alarme
Anhaltender Fehler0+100x120 / 0+2x12060mAIServiceFastBurn
Kurzer Ausschlag0+100x120 / 0+0x59 2+0x6061m und 65mKein schneller Burn-Rate-Alarm
Wiederherstellung0+100x120 / 0+2x60 120+0x5960m, danach 65mSchneller Alarm aktiv, danach zurückgesetzt
Fehlende Telemetrie0+100x10 stale _x110 / 0+2x10 stale _x11020mAISLIMissing; kein schneller Burn-Rate-Alarm
Vollständiger Fehler bei geringer Last0+0.1x120 / 0+0.1x12060mKein schneller Alarm: Mengenschwelle unterdrückt ihn
Keine Last0+0x120 / 0+0x12060mKeiner der Alarme; Exporter vorhanden, Dienstzustand unbekannt

Die gebrochenen Zählerinkremente des Niedriglastfalls sind synthetische Eingaben zum Testen der Mengenschwelle, keine Behauptung über gebrochene Anfragen. Die Kurznotation x120 bezeichnet wiederholte Sample-Inkremente und kein produktives Lastmodell. Übernehmen Sie jeden Fall in input_series für ai_service_eligible_total{service="assistant"} und ai_service_bad_total{service="assistant"}; prüfen Sie die genannten Alarme über alert_rule_test. Für einen aktiven schnellen Alarm enthält exp_labels service=assistant und severity=page; eine leere Liste exp_alerts prüft dessen Abwesenheit. Setzen Sie rule_files auf Ihre Regeldatei und führen Sie promtool test rules tests.yml aus.

Ausgeführtes Ergebnis: Alle sechs Fälle bestanden. Der Test belegt Recording-, Vektormatching-, Schwellen- und Rücksetzverhalten für diese Eingaben. Er prüft weder Alertmanager-Zustellung noch Scrape-Planung, produktive Zählerintegrität, weitere Burn-Rate-Klassen oder die Eignung des SLO für Ihre Kunden. Ergänzen Sie vor dem Rollout Zählerresets, Replikwechsel, eine fehlende Fehlerzeitreihe, abweichende service-Labels, teilweise verlorene Telemetrie und Fehler nahe Auswertungsgrenzen.

Synthetischer Zeitverlauf: Wiederherstellung gehört zum Vertrag

Synthetischer Alarmverlauf: Zwei Prozent Fehler bis Minute 60 lösen den schnellen Alarm aus; erfolgreiche Anfragen lassen das kurze Fenster bis Minute 65 zurücksetzen. Nur Regelzustand, keine Zustellzeit.

Der Wiederherstellungsfall ist ausdrücklich synthetisch: Bis Minute 60 steigen die Zähler pro Minute um 100 berechtigte und zwei fehlerhafte Ereignisse. In Minute 60 ist der schnelle Burn-Rate-Alarm aktiv. Danach steigen die berechtigten Ereignisse weiter, während der Fehlerzähler konstant bleibt. In Minute 65 ist die Kurzfensterbedingung falsch; der Alarm ist nicht mehr aktiv, obwohl das lange Fenster noch Ausfallhistorie enthält. Das beschreibt den Regelzustand, nicht die exakten Zustell- oder Auflösungszeitpunkte eines Bereitschaftssystems.

Die Prometheus-Dokumentation zu Alarmregeln unterscheidet for von keep_firing_for. Ersteres verlangt kontinuierlich aktive Auswertungen vor der Auslösung und ist kein weiteres Mittelungsfenster. Ein langes for kann einen Totalausfall verzögert melden und bei intermittierenden Fehlern immer wieder zurückgesetzt werden. keep_firing_for hält einen bereits ausgelösten Alarm nach Ende der Bedingung für eine festgelegte Zeit aktiv. Das kann Flattern reduzieren, verzögert aber bewusst die Auflösung. Keines der Felder repariert fehlende Instrumentierung. Wiederholen Sie die Zeitverlaufstests, wenn Sie eines ergänzen.

Ordnen Sie jedem Alarm eine Reaktion zu

Alertmanager gruppiert, dedupliziert und verteilt Alarme; Inhibition unterdrückt Benachrichtigungen, während ein verwandter Alarm aktiv ist. Keine dieser Funktionen verändert den SLI oder repariert eine Abhängigkeit. Wählen Sie einen begrenzten Gruppierungsschlüssel wie Dienst, Umgebung und Alarmfamilie. Fassen Sie nicht unabhängige Dienstverantwortliche in einer unübersichtlichen Benachrichtigung zusammen. Ein veränderlicher Fehlerwert gehört nicht in ein identitätsbildendes Alarm-Label.

Routing-Checkliste: Jeder Bereitschaftsalarm hat einen Verantwortlichen, ein aktuelles Runbook, eine Beschreibung der Nutzerauswirkung und eine sofort mögliche sichere Handlung. Tickets haben Verantwortliche und Reaktionsfristen. Wählen Sie group_wait, group_interval und repeat_interval passend zum Reaktionsziel und prüfen Sie tatsächliche Zustellzeitpunkte. Gruppierungsverzögerung kommt zu Scrape-, Auswertungs- und etwaigen for-Verzögerungen hinzu. Ein bestandener Prometheus-Regeltest beweist nicht, dass ein Empfänger konfiguriert oder erreichbar ist.

Wenn schnelle und langsame Alarmklassen gleichzeitig existieren, unterdrücken Sie redundante weniger dringliche Benachrichtigungen nur mit explizit übereinstimmenden Dienst- und Umgebungslabels. Verlangen Sie diese Labels auf beiden Alarmen; verlassen Sie sich nicht auf Gleichheit fehlender Labels. Nehmen Sie Telemetrieintegritätsalarme von pauschaler Abhängigkeits-Inhibition aus, solange unabhängige Gesundheitsüberwachung nicht nachgewiesen ist. Silences benötigen Umfang, Verantwortlichen, Grund und Ablaufzeit. Eine aufgelöste Benachrichtigung darf bei Telemetrieverlust nicht als nachgewiesene Dienstwiederherstellung gelten.

Automatische Gegenmaßnahmen bleiben eine separate Autorisierungsentscheidung. Die Freigabegrenze für AIOps-Remediation gilt auch bei einem begründeten Alarm. Messen Sie Erkennungs- und Zustellverzögerungen getrennt von Diagnose und Reparatur, wie in der MTTR-Aufschlüsselung. Weniger Alarme allein beweisen keine schnellere Wiederherstellung.

Standardisieren Sie erst nach einem belastbaren Dienstvertrag

Prüfen Sie zunächst Definitionen für berechtigte, erfolgreiche und fehlerhafte Ereignisse mit Produktverantwortlichen und Bereitschaftsleitung. Rollen Sie anschließend Zähler und Integritätsprüfungen ohne Alarmierung aus und untersuchen Sie tatsächliche Lastlücken. Führen Sie dann deterministische Regeltests und Ende-zu-Ende-Zustelltests einschließlich Silences, Inhibition und Wiederherstellung aus. Aktivieren Sie schließlich einen Dienst mit rücksetzbarer Regelrevision und expliziter Absicherung für geringe Last. Bewerten Sie übersehene Vorfälle ebenso wie Fehlalarme, bevor Sie die Regeln übertragen.

Die Abwägung ist bewusst: Mengenschwellen reduzieren Rauschen, aber auch Empfindlichkeit bei geringer Last. Zusätzliche Fenster erhöhen Zustand und Abfragekosten. Verlängerte Aktivität stabilisiert Alarme, verzögert aber deren Rücksetzung. Betriebliche Erfolgsmetriken beweisen weiterhin keine Antwortqualität. Behalten Sie für folgenreiche KI-Entscheidungen separate Qualitäts-, Sicherheits- und Freigabekontrollen bei, statt alles in eine Zuverlässigkeitsquote zu pressen.

Wenn Ihr KI-Dienst bei jedem vorgelagerten Modellfehler alarmiert, bringen Sie einen Nutzerablauf, den zugehörigen Zählervertrag und einen aktuellen Alarmzeitverlauf in eine Architekturprüfung ein. Ich unterstütze Sie dabei, daraus versionierte Recording Rules, ausführbare Auslöse- und Rücksetztests sowie eine verantwortete Bereitschafts- und Ticketregelung zu entwickeln – ohne ein ruhigeres Dashboard mit nachgewiesener Zuverlässigkeit gleichzusetzen.

#enterprise-ki#ai-evaluation

KI in Ihren Betrieb integrieren?

Ich unterstütze Teams dabei, konforme KI-Automatisierung zu entwerfen und produktiv auszuliefern — mit produktionsreifen Agenten, n8n-/LangGraph-Workflows, RAG-Systemen und belastbaren Evals.

A

Geschrieben von

Ade Christanto

KI-Automatisierungsspezialist und ehemaliger Netzwerkingenieur mit Fokus auf praktische KI-Implementierung für deutsche B2B- und Mittelstandsunternehmen.