Monitoring auf Geschäftsergebnisse: grüne Dashboards, leere Kasse
Jedes Plattform-Team kennt den Moment: CPU bei 30 Prozent, keine Fehler im Log, alle Dashboards grün, und seit zwei Stunden kann kein Kunde bezahlen. Klassisches Monitoring beobachtet die Maschinen. Das Geschäft muss aber wissen, ob Menschen tun können, wofür sie gekommen sind: buchen, bezahlen, sich anmelden. So richte ich Monitoring ein, das auf Ergebnisse schaut, Probleme von aussen erkennt, bevor Kunden sie melden, und ruhig genug bleibt, dass die Leute die Alerts noch lesen.
10 Min. Lesezeit
1. Symptome beobachten, nicht Maschinen
Das SRE-Buch von Google ordnet Monitoring entlang zweier Fragen: Was ist kaputt, und warum. Das "Was" ist ein Symptom, das ein Nutzer spürt: eine Seite, die nicht lädt, eine Zahlung, die scheitert, eine Buchung, die nie ankommt. Das "Warum" ist eine Ursache: eine volle Festplatte, eine langsame Abfrage, ein abgelaufenes Zertifikat. Symptome verdienen Alerts, weil sie immer zählen; Ursachen gehören auf Dashboards, auf die man schaut, wenn ein Symptom anschlägt.
Das Prometheus-Projekt rät dasselbe: auf Symptome alarmieren, Alerting einfach halten und Alarme vermeiden, bei denen es nichts zu tun gibt. Ein CPU-Alert um 3 Uhr nachts für eine Maschine, die ausgelastet ist, aber jeden Kunden bedient, ist das Gegenteil, und er bringt Leuten bei, den Pager zu ignorieren.
2. Die Kundenwege benennen und ihnen Ziele geben
Mit drei bis fünf Kundenwegen beginnen, die das Geschäft tragen, und jeden aus Kundensicht beschreiben: einen Aufenthalt suchen und buchen, bezahlen, die Bestätigung erhalten, sich für einen Kurs anmelden. Für jeden einen Indikator wählen, der sagt, ob es geklappt hat, etwa den Anteil begonnener Buchungen, die abgeschlossen werden, oder den Anteil erfolgreicher Zahlungen, und mit dem Fachverantwortlichen ein Ziel vereinbaren.
Ein Ziel von 99,5 Prozent erfolgreichen Buchungen pro Tag definiert zugleich ein Fehlerbudget: die 0,5 Prozent, die verloren gehen dürfen, bevor das Geschäft Schaden nimmt. Das SRE-Buch nutzt dieses Budget, um Zuverlässigkeitsarbeit gegen neue Features abzuwägen. In der Praxis gibt es jedem Alert eine klare Schwelle und jeder Release-Diskussion eine Zahl.
3. Von aussen prüfen, wie ein Kunde
Metriken aus der Plattform sehen keinen kaputten DNS-Eintrag, kein abgelaufenes Zertifikat und kein CDN, das eine alte Seite ausliefert. Synthetische Checks schon: kleine Skripte, die von aussen laufen und tun, was ein Kunde tut. Auf einer Plattform, die ich betreibe, prüfen sie die wichtigen Seiten alle 10 Minuten, gehen jede Stunde einmal durch den Buchungs-Funnel und machen jeden Tag eine echte Testzahlung. Als der Anbieter des Hostel-Systems seine API ohne Vorwarnung änderte, schlugen die Probes an, und Aufenthalte waren am selben Tag wieder buchbar.
Diese Website hat dasselbe im Kleinen: Ein geplanter Workflow ruft einmal pro Stunde die wichtigsten Seiten, jeden Artikel, den KI-Guide, jeden PDF-Leitfaden, die Sitemap und den Buchungslink auf, und ein Fehler landet in meinem Postfach.
# GitHub Actions: a synthetic check that fails (and emails the owner) when a vital page breaks
on:
schedule:
- cron: "*/10 * * * *"
jobs:
check:
runs-on: ubuntu-latest
steps:
- run: |
for path in / /book /checkout; do
code=$(curl -s -o /dev/null -L --max-time 20 -w '%{http_code}' "https://www.example.com$path")
[ "$code" = "200" ] || { echo "FAIL $path -> $code"; exit 1; }
doneTipp aus der Praxis
Synthetischen Checks einen eigenen Testkunden geben und ihre Buchungen und Zahlungen markieren, damit sie nie in Umsatzberichten auftauchen oder das Team verwirren.
4. Watchdogs gegen die Quelle der Wahrheit
Manche Fehler zeigen sich erst, wenn zwei Systeme sich widersprechen. Ein Kunde hat bezahlt, aber es gibt keine Reservierung. Die Website hatte den ganzen Morgen Besucher, aber keine einzige Buchung. Ein Webhook kam an, aber die Bestellung wechselte nie den Status. Jeder dieser Fälle ist eine kurze Abfrage gegen die Datenbank oder den Zahlungsanbieter, alle paar Minuten ausgeführt, die immer leer sein sollte.
Diese Watchdogs sind die wertvollsten Prüfungen, die ich kenne, weil sie genau die Fehler fangen, die technische Metriken übersehen: Alles war schnell und gab 200 zurück, und das Ergebnis war trotzdem falsch. Das Resultat als Metrik exportieren, damit es alarmiert wie alles andere.
-- Paid, but no reservation after 15 minutes: should always be empty
SELECT p.id, p.amount, p.created_at
FROM payments p
LEFT JOIN reservations r ON r.payment_id = p.id
WHERE p.status = 'succeeded'
AND r.id IS NULL
AND p.created_at < now() - interval '15 minutes';5. Auf das Ziel alarmieren, nicht auf jedes Zucken
Die Indikatoren der Kundenwege in Prometheus zu Recording Rules machen und dann alarmieren, wenn sie lange genug unter das Ziel fallen, um eine Rolle zu spielen. Eine Mindestmenge an Verkehr verhindert Alerts in der Nacht, wenn zwei gescheiterte von drei Buchungen wie eine Katastrophe aussehen. Jeder Alert trägt eine Zusammenfassung in klaren Worten und einen Link zum Runbook, das sagt, was zuerst zu prüfen ist.
Auf der oben erwähnten Plattform laufen Prometheus, Grafana, Loki und Alertmanager mit 143 Alert-Regeln auf Kubernetes. Das klingt nach viel, aber die meisten speisen Dashboards und Tickets; nur jene, die an Kundenwege gebunden sind, wecken eine Person.
groups:
- name: booking-slo
rules:
- record: booking:success_ratio:rate1h
expr: |
sum(rate(bookings_completed_total[1h]))
/ sum(rate(bookings_started_total[1h]))
- alert: BookingSuccessBelowObjective
expr: |
booking:success_ratio:rate1h < 0.995
and sum(rate(bookings_started_total[1h])) * 3600 > 20 # enough traffic to judge
for: 15m
labels:
severity: page
annotations:
summary: "Fewer than 99.5% of started bookings complete"
runbook_url: "https://runbooks.example.com/booking-success"6. Ruhig genug halten, um gelesen zu werden
Ein Alerting-System stirbt an Lärm, lange bevor es an fehlender Abdeckung stirbt. Was sich für mich bewährt: ein GitHub-Issue pro Ausfall, automatisch eröffnet, wenn ein Check scheitert, und automatisch geschlossen, wenn er sich erholt, dedupliziert, damit ein flackernder Check denselben Issue aktualisiert statt zwanzig neue zu eröffnen, und stündliche Obergrenzen, damit ein Sturm den Team-Chat nicht flutet. Der Issue wird so ganz nebenbei zum Protokoll des Vorfalls, mit Zeitstempeln.
Einmal im Monat die Alerts durchgehen. Jeder Alert, der ausgelöst hat, ohne dass jemand handeln musste, ist ein Kandidat zum Löschen, zum Verschieben auf ein Dashboard oder zum Nachjustieren. Das Ziel: Jeder Alarm bedeutet etwas.
7. Jeden Release sich beweisen lassen
Der günstigste Vorfall ist der, den eine Release-Schranke stoppt. Zwei Schranken leisten den Grossteil: Datenbank-Migrationen laufen als Probedurchlauf gegen eine Kopie, bevor eine Änderung gemergt werden kann, und ein Smoke-Test läuft direkt nach jedem Deploy und färbt den Deploy rot, wenn ein wichtiger Pfad bricht. Beide nutzen dieselben Prüfungen wie das Monitoring, also scheitert eine kaputte Buchungsseite am Release, bevor ein Kunde sie je sieht.
Die Checkliste unten deckt diese Grundlagen ab, von Backups, die tatsächlich wiederhergestellt wurden, bis zu Geschäfts-Checks, die eine Person alarmieren. Jede Lücke, die sie zeigt, ist eine Stelle, an der Ihre Dashboards grün bleiben können, während das Geschäft es nicht ist.
Interaktiv
Ist Ihre KI-gebaute App bereit für Produktion?
Haken Sie ab, was schon stimmt. Was übrig bleibt, ist Ihre To-do-Liste, in Reihenfolge.
Ihre nächsten drei Schritte
- Code liegt in Git, Änderungen laufen über Pull Requests
- Keine geheimen Keys im Frontend, Server-Keys nur auf dem Server
- Row-Level-Security (oder Gleichwertiges) auf jeder Tabelle
Fazit
Beobachten, was Kunden tun, von aussen und gegen die Quelle der Wahrheit, nur auf die Kundenwege alarmieren, die Geld bringen, und es ruhig genug halten, dass jeder Alarm etwas bedeutet.
Echte Projekte dazu
Selbst ausprobieren
Quellen und offizielle Leitfäden
Weitere Artikel
- 3'025 Pull Requests in zehn Monaten: ein KI-gestützter Delivery-Prozess von innen
- Der EU AI Act für den Mittelstand: was für Sie gilt, und ab wann
- FinOps für KI-Kosten: Tokens, Caching, Routing und Budgets, die halten
- Ein Restaurant-Netzwerk in KI-Antworten sichtbar machen: ein GEO-Projekt Schritt für Schritt
- Wie diese Website gebaut ist: statisch, wo es geht, streamend, wo es muss
- Kubernetes-Kosten auf EKS und GKE: dasselbe Playbook, andere Hebel
- Eine Landing Zone für den Mittelstand, in Terraform oder Bicep: die Teile, die zählen
- Das Playbook für Legacy-Migrationen: Wellen, Parallelbetrieb und identische Zeilenzahlen und Prüfsummen
- MCP-Sicherheit im Detail: KI-Assistenten ins Produkt lassen, ohne die Türen zu öffnen
- KI-Agenten am Telefon: die Architektur, und die Stolperfallen, die keine Demo zeigt
- Restore-Tests: Ein Backup, das nie wiederhergestellt wurde, ist nur eine Hoffnung
- KI-Antworten auf Azure Static Web Apps streamen: der eine Header, der alles zurückhielt
- Einen KI-Assistenten für WhatsApp bauen, von Anfang bis Ende: was es über die Demo hinaus braucht
- Air-gapped-Systeme: kritische Software ganz ohne Internet betreiben
- Produktive KI auf AWS: Amazon Bedrock und AgentCore in einem privaten Setup
- Produktive KI auf Microsoft Foundry: ein privates Referenz-Setup für Agenten
- /goal, /loop oder Routines: Hören Sie auf, Ihren Coding-Agenten zu babysitten
- Claudes neue Pläne: Max, Ultra und was sie für Teams bedeuten
- OpenAI Codex Ende 2026: Goal Mode, Dots und wie man es absichert
- GitHub Copilot, Claude Code oder Codex? So würde ich für ein Unternehmen entscheiden
- GEO-Grundlagen: So erscheinen Sie in KI-Antworten
- Produktive KI auf Google Cloud: von Vertex AI zur Gemini Enterprise Agent Platform
- Lokale LLMs im Air-Gap-Netz: KI für Ihre sensibelsten Daten
- Ich will ein lokales LLM betreiben: Welchen Server soll ich kaufen?
- MiniMax M3: ein offenes Spitzenmodell zum Selbstbetreiben?
- Prompt-Research im grossen Stil mit einem offenen Modell
- SEO und GEO zusammen: ein praktisches Audit in 6 Schritten
- Kubernetes richtig dimensionieren: das Playbook, mit dem ein Cluster von 7 auf 4 Nodes kam
- Private KI für sensible Daten: ein lokales LLM-Setup, das durch die Sicherheitsprüfung kommt
- Vom KI-Prototyp zur Produktion: die acht Schichten, die ich ergänze, in dieser Reihenfolge
