Ein Incident-Runbook für PHP-Anwendungen verwandelt einen Alert in eine Abfolge kontrollierter Entscheidungen. Es ist keine Liste von Befehlen und kein Dokument, das eine Ursache voraussetzt: Es muss angeben, welches Symptom erkannt wurde, welche Evidenz zu sammeln ist, welche Maßnahmen zulässig sind, wann angehalten werden muss und wer über den nächsten Schritt entscheiden kann.
Das ist besonders wichtig bei Anwendungen mit Web-Traffic, PHP-Hintergrundprozessen, Queues, Cron, externen Integrationen und gemeinsam genutzten Datenbanken. Ein scheinbar einfacher Eingriff, wie der Neustart von Consumern oder das Wiederholen von Nachrichten, kann die Ursache verschleiern, Vorgänge duplizieren oder die Last auf einem bereits beeinträchtigten Dienst erhöhen.
Was ein Runbook leistet und was es nicht ersetzen darf

Ein Runbook reduziert Improvisation in wiederholbaren oder vorhersehbaren Situationen. Es macht die Reihenfolge der Prüfungen, die Grenzen eines Eingriffs und die erforderliche Evidenz explizit, um eine Wiederherstellung festzustellen. Außerdem ermöglicht es Entwicklung, Betrieb und Fachbereich, bei einem Incident dieselbe Sprache zu sprechen.
Es ersetzt nicht die Kontrollen, die vor dem Incident vorhanden sein müssen:
- Beobachtbarkeit: Metriken, korrelierte Logs, Traces und Alerts mit verständlichen Schwellenwerten. Ein Verfahren gleicht kein mehrdeutiges oder kontextloses Signal aus.
- Schulung und Berechtigungen: Die ausführenden Personen müssen das Risiko verstehen und nur über die erforderlichen Zugriffe verfügen.
- Backups und erprobte Wiederherstellung: Ein Backup ist keine Wiederherstellungsstrategie, wenn dessen Integrität, Umfang und Wiederherstellungszeit nicht bekannt sind.
- Architektur: idempotente Wiederholungsversuche, Ressourcenlimits, Timeouts, Circuit Breaker und die Isolierung von Abhängigkeiten verringern den Bedarf an manuellen Eingriffen.
- Änderungsmanagement: Ein Deployment ist nicht gleichbedeutend mit einem Release. Das Runbook muss wissen, welche Version aktiv ist und ob ein schrittweiser Rollout das Risiko eines Rollbacks verringern kann.
Das Ziel ist nicht, jeden möglichen Fehler zu dokumentieren. Es geht darum, Antworten für Signale zu standardisieren, die operative Auswirkungen haben und bei denen eine falsche Entscheidung den Zustand des Systems verschlimmern kann.
Wann ein Alert ein spezifisches Verfahren verdient
Nicht jeder Alert benötigt ein eigenes Dokument. Priorisiert werden sollten Situationen, die Häufigkeit, Auswirkungen, Zeitdruck oder Abhängigkeiten zwischen Teams verbinden. Ein Alert verdient ein Runbook, wenn die Reaktion nicht davon abhängen sollte, sich unter Stress an Schritte zu erinnern.
- Er tritt wiederholt auf und erfordert meist dieselben anfänglichen Prüfungen.
- Er beeinträchtigt Einnahmen, Kundenprozesse, die Einhaltung von Fristen oder die Verfügbarkeit einer kritischen Funktion.
- Die Korrekturmaßnahme ist nur innerhalb eines begrenzten Zeitfensters reversibel.
- Er erfordert Koordination zwischen PHP-Anwendung, Infrastruktur, Datenbank oder einem API-Anbieter.
- Eine manuelle Maßnahme kann Verlust, Duplizierung oder Offenlegung von Daten verursachen.
- Der Alarm hat bekannte False Positives, die mit konkreter Evidenz ausgeschlossen werden müssen.
Beginnen Sie mit dem beobachtbaren Symptom, nicht mit einer Theorie. „Die ausstehenden Jobs nehmen zu“, „die Endpoint-Latenz überschreitet den Schwellenwert“, „die 5xx-Fehler nehmen zu“ oder „eine Integration liefert ungültige Antworten“ sind hilfreiche Ausgangspunkte. „Die Datenbank ist überlastet“ ist eine Hypothese, die überprüft werden muss, nicht der Ausgangspunkt des Verfahrens.
Die Mindeststruktur eines ausführbaren Runbooks
Ein nützliches operatives Dokument kann während eines Incidents gelesen und ausgeführt werden. Es muss Formulierungen wie „Logs prüfen“ vermeiden, ohne zu präzisieren, wonach gesucht wird, in welchem Zeitraum und welches Ergebnis die Entscheidung verändert.
- Zweck und Umfang: Beschreiben Sie das abgedeckte Symptom, die betroffenen Komponenten und die ausgenommenen Komponenten. Geben Sie an, ob es für Produktion, bestimmte Umgebungen oder einen Prozesstyp gilt.
- Eingangssignale: Nehmen Sie den Alert, Schwellenwerte, relevante Dashboards, Fehlermeldungen und Bedingungen auf, die einen echten Alert von Rauschen unterscheiden.
- Erstverantwortliche Person und Berechtigungen: Legen Sie fest, wer den Incident entgegennimmt, wer Maßnahmen ausführt und wer Vorgänge mit hohen Auswirkungen autorisiert.
- Risiken und Abbruchbedingungen: Machen Sie deutlich, welche Maßnahmen nicht durchgeführt werden dürfen, welche Daten betroffen sein könnten und wann ohne Fortsetzung eskaliert werden muss.
- Schritte und Evidenz: Jeder Schritt muss eine Prüfung verlangen, ein erwartetes Ergebnis festhalten und den nächsten Entscheidungszweig definieren.
- Abschluss: Definieren Sie, welche Nachweise den Abschluss des Incidents erlauben und welche Nachverfolgung danach offen bleibt.
Interne Links zu Dashboards, Repositories oder Tools können in der operativen Version nützlich sein, dürfen aber nicht der einzige Kontext sein. Notieren Sie, welche Metrik zu beobachten, nach welchem Label zu filtern und welches Zeitfenster zu verwenden ist. Wenn ein Tool nicht verfügbar ist, muss das Team wissen, welche alternative Evidenz es sammeln kann.
Diagnose, Mitigation und Wiederherstellung trennen
Eine häufige Ursache für langwierige Incidents ist die Vermischung von Untersuchung und Änderungen. Das Runbook muss Maßnahmen nach ihrem Risikoniveau und ihrem Zweck klassifizieren.
Sichere Maßnahmen und Diagnose
Den Alert zu bestätigen, einen Koordinationskanal zu öffnen, Metriken zu erfassen, Fehler-Logs abzufragen und den Zustand von Abhängigkeiten zu prüfen, sind in der Regel Maßnahmen mit geringem Risiko. Dennoch müssen sie Grenzen haben: Teure Abfragen auf einer beeinträchtigten Datenbank oder ungefilterte Log-Suchen können ebenfalls zusätzlichen Druck erzeugen.
Die Diagnose muss überprüfbare Hypothesen formulieren. Wenn beispielsweise Verbindungsfehler zunehmen und der Connection Pool erschöpft ist, werden die Abhängigkeit und das Nutzungsmuster untersucht, bevor Limits geändert werden. Wenn nur eine kürzlich ausgerollte Version fehlschlägt, werden ihr Traffic und ihre Fehler mit der vorherigen Version verglichen.
Mitigation und Wiederherstellung
Mitigation begrenzt den Schaden, ohne zu behaupten, dass die Ursache behoben wurde: Die Exposition einer Funktion zu reduzieren, die Annahme von Jobs anzuhalten oder Rate Limiting anzuwenden, sind mögliche Beispiele. Wiederherstellung versetzt den Dienst in einen akzeptablen Zustand zurück: einen Consumer wiederherzustellen, eine Version zurückzurollen oder ausstehende Arbeit kontrolliert zu verarbeiten.
Jede Maßnahme muss einen Entscheidungspunkt enthalten: Welche Metrik verbessert sich, wie lange wird sie beobachtet und was geschieht bei einer Verschlechterung? Einen PHP-Prozess neu zu starten, kann als begrenzte Mitigation gültig sein, darf aber keine automatische Anweisung sein, wenn nicht idempotente Tasks, Datenbanksperren oder ungeklärter Speicherverbrauch bestehen.
Hypothetisches Beispiel: Anhäufung von Jobs in einer PHP-Queue
Betrachten Sie eine PHP-Anwendung mit Consumern, die Benachrichtigungen, Synchronisierungen oder Commerce-Aufgaben verarbeiten. Der Alert zeigt an, dass die Anzahl ausstehender Jobs kontinuierlich zunimmt. Das Runbook darf nicht einfach anordnen, „die Queue zu leeren“.
- Bestätigen Sie den Umfang: Messen Sie ausstehende Jobs nach Job-Typ, Alter der Nachricht, Eingangsrate und Verarbeitungsrate. Prüfen Sie, ob die Verzögerung alle Consumer oder einen konkreten Pfad betrifft.
- Prüfen Sie den Zustand der Consumer: aktive Prozesse, Neustarts, Speicher, PHP-Fehler, Timeouts und wiederholte Exceptions. Prüfen Sie außerdem die Verbindung zur Queue und zu den Abhängigkeiten, die von den Jobs aufgerufen werden.
- Klassifizieren Sie die Hypothese: ungewöhnlich hoher Eingang, unzureichende Kapazität, blockierter Job, Codefehler, langsame externe Abhängigkeit oder ungültige Daten. Erhöhen Sie die Zahl der Consumer nicht, wenn die Zielabhängigkeit bereits überlastet ist.
- Definieren Sie Wiederholungsgrenzen. Nachrichten, die wiederholt fehlschlagen, müssen, sofern das Design es zulässt, in einen Überprüfungspfad oder eine Fehler-Queue gelangen; unbegrenzte Wiederholungsversuche können den Traffic verstärken und Effekte duplizieren.
- Wenden Sie eine schrittweise Wiederherstellung an: Stellen Sie Consumer schrittweise wieder her oder skalieren Sie sie hoch, beobachten Sie die Erfolgsrate und überwachen Sie Fehler, Latenz und Datenbanklast. Behalten Sie eine Abbruchbedingung bei, falls der Backlog schneller wächst oder die Fehler zunehmen.
- Validieren Sie das Ergebnis: Prüfen Sie, dass ältere Arbeit abnimmt, keine Duplikate vorhanden sind, die zugehörigen Vorgänge konsistent sind und sich der Alert während eines definierten Zeitfensters stabilisiert.
Wenn Jobs externe Effekte erzeugen, wie Abbuchungen, E-Mails oder Änderungen am Inventar, muss das Runbook vor der erneuten Verarbeitung von Batches eine menschliche Prüfung verlangen. Idempotenz verringert das Risiko, darf jedoch nicht ohne Evidenz aus dem Design und den betroffenen Daten vorausgesetzt werden.
Sensible Daten und irreversible Vorgänge schützen
Ein Verfahren, das personenbezogene Daten, Zugangsdaten, Bestellungen, Zahlungen oder regulatorische Aufzeichnungen berührt, benötigt zusätzliche Kontrollen. Es reicht nicht aus, dass der Befehl technisch korrekt ist.
- Verwenden Sie minimale Berechtigungen und getrennte Konten für Lesen, operative Eingriffe und Administration.
- Fordern Sie eine doppelte Bestätigung für Löschungen, Massenwiederverarbeitungen, Wiederherstellungen oder direkte Datenänderungen.
- Dokumentieren Sie, wer die Maßnahme autorisiert und ausgeführt hat, welchen Datenzeitraum sie umfasste und welches Ergebnis sie erzielte.
- Definieren Sie eine Validierungsstichprobe, bevor Sie auf den gesamten Bestand einwirken.
- Legen Sie bei Abweichungen, nicht identifizierbaren Daten oder Auswirkungen außerhalb des ursprünglichen Umfangs eine explizite Abbruchbedingung fest.
Vermeiden Sie, Geheimnisse in das Runbook, in Logs oder Screenshots aufzunehmen. Das Dokument kann das autorisierte System zur Beschaffung temporärer Zugangsdaten angeben, darf sensible Informationen jedoch nicht in dauerhaften Text verwandeln.
Eskalation und Verifizierung nach der Wiederherstellung

Eskalation ist kein Versagen des Teams, das den Alert bearbeitet; sie ist eine Entscheidung zur Risikokontrolle. Eskalieren Sie an die Entwicklung, wenn ein möglicher Anwendungsfehler, eine Versionsregression oder nicht idempotentes Verhalten vorliegt. Eskalieren Sie an die Infrastruktur, wenn Ressourcen, Netzwerk, Speicher oder die Ausführungsplattform erschöpft sind. Beziehen Sie den externen Anbieter ein, wenn die Evidenz auf dessen API oder Dienst hinweist. Fordern Sie eine Entscheidung des Fachbereichs an, wenn die Mitigation erfordert, Verkäufe anzuhalten, Kommunikation zu verzögern oder eine andere Verarbeitungsreihenfolge zu akzeptieren.
Definieren Sie außerdem eine maximale Zeit für jede Phase. Wenn nach der anfänglichen Diagnose nicht genügend Evidenz vorliegt oder eine Mitigation das Signal nicht im erwarteten Intervall verbessert, muss die verantwortliche Person eskalieren, statt Maßnahmen zu wiederholen.
Die Wiederherstellung endet, wenn mehr als das Verschwinden des Alerts verifiziert wird:
- Das ursprüngliche Symptom bleibt während eines Beobachtungsfensters innerhalb der Grenzen.
- Ausstehende Arbeit, Transaktionen und betroffene Daten sind konsistent.
- Benutzer können die relevanten Abläufe ohne merkliche Beeinträchtigung abschließen.
- Verwandte Alerts zeigen nach der Änderung keine Nebeneffekte.
- Chronologie, bestätigte oder verworfene Hypothesen, Maßnahmen und ausstehende Verbesserungen sind dokumentiert.
Überprüfen Sie das Runbook nach seiner Verwendung. Entfernen Sie Schritte, die keine Evidenz lieferten, nehmen Sie notwendige Entscheidungen auf und wandeln Sie wiederkehrende Erkenntnisse in Verbesserungen bei Observability, Tests oder Architektur um. So wird das Verfahren nicht zu statischer Dokumentation, sondern zu einem Werkzeug für sichere Wiederherstellung.



