So erkennen Sie, ob Ihre Anwendung tatsächlich korrekt läuft
Sie haben gerade eine neue Version deployed. Die Pipeline zeigt grün. Das Artefakt ist in der Produktion angekommen. Und jetzt?
Wenn Ihre Anwendung nur eine Handvoll Benutzer hat, können Sie einen Browser öffnen, ein paar Klicks machen und bestätigen, dass alles funktioniert. Aber sobald Ihre App Dutzende, Hunderte oder Tausende von Menschen gleichzeitig bedient, skaliert diese manuelle Überprüfung nicht mehr. Es gibt zu viele Codepfade zu testen, zu viele Benutzer, die verschiedene Funktionen nutzen, und zu wenig Zeit, um jeden einzelnen von Hand zu verifizieren.
Die Kernfrage ist einfach: Woher wissen Sie, dass die neue Version nach dem Deployment tatsächlich wie erwartet läuft?
Was Gesundheitsignale Ihnen sagen
Jede laufende Anwendung produziert Anzeichen dafür, ob sie gesund ist oder nicht. Betrachten Sie diese als Vitalzeichen. Ein Arzt prüft Puls und Temperatur, um den Zustand eines Patienten zu beurteilen. Ähnlich benötigen Sie Signale, die Ihnen sagen, ob Ihre Anwendung lebt, korrekt antwortet und innerhalb akzeptabler Grenzen bleibt.
Diese Signale werden als Gesundheitssignale bezeichnet. Sie sind die Datenpunkte, anhand derer Sie feststellen können, ob Ihre Anwendung nach einem Deployment und während des laufenden Betriebs normal funktioniert.
Hier ist eine schnelle Möglichkeit, direkt nach einem Deployment zwei der häufigsten Gesundheitssignale manuell zu überprüfen:
# Prüfen, ob der Health-Endpunkt der Anwendung antwortet
curl http://localhost:8080/health
# Erwartete Ausgabe (Beispiel):
# {"status":"ok","uptime":"2m34s"}
# Das Anwendungslog nach aktuellen Fehlern durchsuchen
grep 'ERROR' /var/log/app.log | tail -20
Gesundheitssignale stammen aus verschiedenen Quellen, und jede dient einem anderen Zweck.
Logs: Die rohe Geschichte des Geschehenen
Logs sind die grundlegendste Form von Gesundheitssignalen. Jedes Mal, wenn Ihre Anwendung eine Anfrage erhält, keine Verbindung zur Datenbank herstellen kann oder die Verarbeitung eines Jobs abschließt, kann sie eine Zeile schreiben, die beschreibt, was passiert ist. Logs liefern Ihnen eine chronologische Aufzeichnung der Ereignisse.
Wenn Benutzer beginnen, Fehler zu melden, sind Logs oft der erste Ort, an den Sie sich wenden. Sie öffnen die Logdatei oder das Suchtool, filtern nach dem Zeitfenster, in dem das Problem begann, und gehen rückwärts, um herauszufinden, was schiefgelaufen ist. Logs beantworten die Frage: "Was ist direkt vor diesem Fehler passiert?"
Aber Logs haben eine Einschränkung. Stellen Sie sich vor, Sie müssten Tausende von Logzeilen pro Minute lesen, nur um zu bestätigen, dass alles normal ist. Das ist nicht praktikabel. Logs sind hervorragend für das Debugging, aber sie sind nicht effizient für die laufende Gesundheitsbewertung.
Metriken: Zahlen, die Trends zeigen
Metriken lösen das Mengenproblem, das Logs verursachen. Anstatt einzelne Ereignisse zu lesen, sammeln Sie in regelmäßigen Abständen numerische Messwerte. Übliche Metriken sind:
- Wie viele Anfragen pro Sekunde eingehen
- Durchschnittliche Antwortzeit
- Prozentsatz der Anfragen, die Fehler zurückgeben
- Speichernutzung
- CPU-Auslastung
Mit Metriken sehen Sie Trends im Zeitverlauf. Wenn sich die Antwortzeit plötzlich verdoppelt, ist das ein Warnsignal, auch wenn noch keine Fehler aufgetreten sind. Wenn die Speichernutzung über Tage hinweg stetig ansteigt, könnte es sich um ein Speicherleck handeln, das die Anwendung irgendwann zum Absturz bringt.
Metriken ermöglichen es Ihnen, Probleme zu erkennen, bevor sie für Benutzer sichtbar werden. Sie komprimieren Tausende von Ereignissen in eine einzige Zahl, die Sie verfolgen und auf die Sie alarmieren können.
Monitoring: Sammeln, Anzeigen und Alarmieren
Logs und Metriken müssen gesammelt und an einem Ort angezeigt werden, den Sie kontinuierlich überwachen können. Dieser Prozess wird als Monitoring bezeichnet. Monitoring bedeutet nicht nur, Daten zu sammeln. Es geht darum, diese Daten nutzbar zu machen.
Ein gutes Monitoring-Setup erfüllt drei Aufgaben:
- Sammelt Logs und Metriken von Ihrer Anwendung und Infrastruktur
- Zeigt sie auf Dashboards an, damit Sie den aktuellen Status auf einen Blick sehen können
- Alarmiert Sie, wenn etwas außerhalb der normalen Grenzen liegt
Sie könnten zum Beispiel eine Regel aufstellen: Wenn innerhalb eines Fünf-Minuten-Fensters mehr als fünf Prozent der Anfragen fehlschlagen, senden Sie eine Benachrichtigung. Dieser Alarm könnte als Telefonbenachrichtigung, E-Mail oder Nachricht in Ihrem Team-Chat eingehen. Das Ziel ist, von Problemen zu erfahren, bevor Ihre Benutzer es Ihnen sagen.
Warum Gesundheitssignale früh wichtig sind
Je früher Sie ein Problem erkennen, desto schneller können Sie reagieren. Wenn Sie erst bemerken, dass Ihre Anwendung defekt ist, nachdem Benutzer die sozialen Medien mit Beschwerden überflutet haben, läuft das Problem bereits eine Weile. Im Kontext von CI/CD dienen Gesundheitssignale als Ihr Verifikationsschritt nach dem Deployment. Sie beantworten: "Hat diese Version tatsächlich in der Produktion funktioniert?"
Ohne Gesundheitssignale deployen Sie blind. Sie pushen eine neue Version, hoffen auf das Beste und warten darauf, dass sich jemand beschwert. Mit Gesundheitssignalen wissen Sie innerhalb von Minuten, ob das Release stabil ist oder zurückgerollt werden muss.
Gesundheitssignale fangen auch Probleme ab, die allmählich auftreten. Ein Speicherleck kann Stunden oder Tage dauern, bis es sichtbare Probleme verursacht. Eine langsame Verschlechterung der Antwortzeit könnte von Benutzern unbemerkt bleiben, bis sie einen Schwellenwert überschreitet. Die kontinuierliche Überwachung von Gesundheitssignalen erfasst diese sich langsam bewegenden Probleme, bevor sie Benutzer beeinträchtigen.
Eine praktische Checkliste für Gesundheitssignale
Wenn Sie zum ersten Mal Gesundheitssignale einrichten, finden Sie hier eine minimale Checkliste für den Einstieg:
- Wählen Sie zunächst drei Metriken aus: Anfrage-Erfolgsrate, durchschnittliche Antwortzeit und Fehleranzahl. Diese decken die häufigsten Fehlermodi ab.
- Richten Sie einen Alarm ein: Benachrichtigen Sie Ihr Team, wenn die Fehlerrate fünf Minuten lang über fünf Prozent liegt.
- Überprüfen Sie die Logs nach jedem Deployment: Auch wenn die Metriken gut aussehen, scannen Sie die Logs in den ersten zehn Minuten nach einem Release auf unerwartete Fehler.
- Fügen Sie einen Health-Endpunkt hinzu: Erstellen Sie eine einfache URL, die den Anwendungsstatus zurückgibt. Überwachungstools können diesen Endpunkt alle paar Sekunden anpingen, um zu bestätigen, dass die App lebt.
Dies ist nicht umfassend, aber es reicht aus, um die meisten Probleme zu erkennen, die nach einem Deployment auftreten.
Das Fazit
Gesundheitssignale verwandeln das Deployment von einem blinden Push in einen überprüfbaren Prozess. Logs liefern Ihnen die Geschichte des Geschehenen. Metriken zeigen Ihnen Trends im Zeitverlauf. Monitoring verbindet alles und alarmiert Sie, wenn etwas nicht stimmt. Beginnen Sie mit den Grundlagen: ein paar Metriken, ein Alarm und die Gewohnheit, nach jedem Deployment zu prüfen. Das allein wird die meisten Probleme abfangen, bevor Ihre Benutzer es tun.