Debugging in der Produktion
Produktionsprobleme debuggen — strukturiertes Logging, Error-Tracking, Monitoring und KI-gestuetzte Log-Analyse, wenn du Bugs nicht lokal reproduzieren kannst.
🔄 Quick Recall: In der vorherigen Lektion hast du haeufige Bug-Muster kennengelernt — Off-by-One, Null-Referenzen, Race Conditions, Async-Fehler. Du weisst jetzt, wie du Bugs anhand ihrer Symptome erkennen kannst. Jetzt debuggen wir in der Umgebung, in der du keine Breakpoints setzen und keine Print-Statements einfuegen kannst: Produktion.
Produktions-Debugging unterscheidet sich grundlegend vom lokalen Debugging. Du kannst keinen Debugger anschliessen, keine Print-Statements einfuegen und das Problem nicht auf Knopfdruck reproduzieren. Deine Werkzeuge sind Logs, Error-Tracking, Monitoring und die Spuren, die der Bug hinterlassen hat.
Strukturiertes Logging
Unstrukturiertes Log (schwer zu analysieren):
Error processing request for user Max
Strukturiertes Log (abfragbar und analysierbar):
{"level": "error", "timestamp": "2026-02-27T08:15:23Z", "service": "api",
"action": "process_order", "user_id": "usr_123", "order_id": "ord_456",
"error": "InsufficientBalance", "balance": 45.50, "required": 89.99,
"duration_ms": 234}
Der Unterschied: Unstrukturierte Logs sind Freitext, den du manuell durchlesen musst. Strukturierte Logs sind maschinenlesbar — du kannst sie filtern, gruppieren und von KI analysieren lassen.
Was auf welchem Level loggen:
| Level | Wann loggen | Was einschliessen |
|---|---|---|
| ERROR | Operation fehlgeschlagen | Exception, Stack Trace, Kontext (Nutzer, Request, Daten) |
| WARN | Unerwartet, aber behandelt | Was unerwartet war, welcher Fallback genutzt wurde |
| INFO | Wichtige Geschaeftsereignisse | Request empfangen/abgeschlossen, Meilensteine, Timing |
| DEBUG | Detaillierte Diagnose-Infos | Variablenwerte, Entscheidungspfade (in Produktion deaktivieren) |
✅ Quick Check: Warum sollte DEBUG-Level in Produktion deaktiviert sein? (Antwort: DEBUG-Logs erzeugen enorme Datenmengen, die (a) Speicherkosten verursachen, (b) die Performance der Anwendung beeintraechtigen koennen, (c) wichtige Error-Logs in einer Flut von Informationen untergehen lassen und (d) moeglicherweise sensible Daten wie Variablenwerte loggen.)
Error-Tracking
Error-Tracking-Tools (Sentry, Bugsnag, Datadog) erfassen Exceptions mit Kontext:
| Erfasste Daten | Warum wichtig |
|---|---|
| Stack Trace | Wo im Code der Fehler aufgetreten ist |
| Request-Kontext | Welche Eingabe den Fehler ausgeloest hat |
| Nutzer-Info | Wer betroffen ist (anonymisiert) |
| Umgebung | Browser, OS, API-Version |
| Haeufigkeit | Wie viele Nutzer betroffen, Trend steigend oder fallend? |
| Erstes/letztes Auftreten | Wann hat das angefangen? Korreliert mit Deployments? |
KI-Prompt fuer Fehler-Untersuchung:
„Mein Error-Tracking zeigt diesen wiederkehrenden Fehler: [FEHLERMELDUNG + STACK TRACE]. Er betrifft [N] Nutzer pro Stunde. Er begann am [DATUM]. Hier ist das Deployment-Changelog: [AENDERUNGEN]. Analysiere: (1) Welche Code-Aenderung hat das wahrscheinlich eingefuehrt? (2) Was ist die wahrscheinliche Ursache? (3) Was sollte ich zuerst untersuchen?"
KI-gestuetzte Log-Analyse
KI-Prompt fuer Mustererkennung:
„Hier sind Logs von 50 fehlgeschlagenen Requests: [LOGS]. Und hier 10 erfolgreiche Requests zum Vergleich: [LOGS]. Identifiziere: (1) Welche Muster haben die fehlgeschlagenen Requests gemeinsam? (2) Was unterscheidet fehlgeschlagene von erfolgreichen Requests? (3) Was ist die wahrscheinlichste Ursache? (4) Welches zusaetzliche Logging wuerde bei der Diagnose helfen?"
Debugging ohne Reproduktion
Wenn du einen Bug lokal nicht reproduzieren kannst:
| Technik | Wann einsetzen |
|---|---|
| Log-Analyse | Fehlgeschlagene vs. erfolgreiche Request-Logs vergleichen |
| Error-Tracking | Stack Trace, Kontext und Haeufigkeit analysieren |
| Feature Flags | Features schrittweise ein-/ausschalten zur Isolation |
| Canary Deployment | Fix an kleinem Prozentsatz deployen, ueberwachen |
| Korrelationsanalyse | Pruefen ob Fehler mit Tageszeit, Nutzertyp oder Region korrelieren |
✅ Quick Check: Dein Monitoring zeigt, dass die Fehlerrate um genau 14:15 Uhr von 0,1% auf 5% gestiegen ist. Was ist der schnellste Weg, die Ursache zu finden? (Antwort: Pruefen, was sich um 14:15 geaendert hat: (1) Gab es ein Deployment? CI/CD-Pipeline checken. (2) Wurde eine Dependency aktualisiert? Paketversionen pruefen. (3) Hat ein externer Service sich geaendert? Status-Seiten von Drittanbietern checken. (4) Hat sich das Traffic-Muster geaendert? Load-Metriken pruefen. Der exakte Zeitpunkt schraenkt die Untersuchung dramatisch ein.)
Key Takeaways
- Strukturiertes Logging (JSON-Format mit Zeitstempel, Level, Kontext, Dauer) ist das Fundament von Produktions-Debugging — unstrukturierter Text ist bei 10.000+ Eintraegen kaum durchsuchbar, waehrend strukturierte Logs KI-Analyse und automatische Mustererkennung ermoeglichen
- Error-Tracking-Tools erfassen, was Print-Statements nicht koennen: Stack Traces mit vollem Kontext (Nutzer, Request, Umgebung), Haeufigkeitstrends und Korrelation mit Deployments — generische „Internal Server Error"-Meldungen bedeuten, dass dein Error-Tracking mehr Detail braucht
- KI ist stark bei Log-Analyse: fehlgeschlagene und erfolgreiche Request-Logs zusammen einfuegen, und KI findet Muster (gemeinsame Merkmale, fehlende Felder, Timing-Korrelationen), die manuell Stunden dauern wuerden
Up Next
In der naechsten Lektion lernst du die Ursachenanalyse — die 5-Warum-Methode, um das eigentliche Problem zu finden und zu beheben, statt nur Symptome zu flicken.
Wissenscheck
Erst das Quiz oben abschließen
Lektion abgeschlossen!