Die Organisation von Monitoring und Logging in verteilten IT-Architekturen ist der Schlüssel zur Gewährleistung der Stabilität, zur Identifizierung und Analyse von Fehlern sowie zur Bewertung der Leistung von Diensten. Es ist wichtig, ein zentrales Logging und ein Metriksystem für alle Dienste einzuführen, um ein umfassendes Bild der Vorgänge im System zu erhalten.
Allgemeine Schritte:
Beispiel für die Konfiguration von Logging in Python:
import logging from pythonjsonlogger import jsonlogger logger = logging.getLogger() logHandler = logging.StreamHandler() formatter = jsonlogger.JsonFormatter() logHandler.setFormatter(formatter) logger.addHandler(logHandler) logger.setLevel(logging.INFO) logger.info('Service gestartet', extra={'service': 'orders', 'env': 'prod'})
Wichtige Merkmale:
Sollte man immer alle Aktionen eines Dienstes auf der INFO-Ebene protokollieren?
Antwort: Nein, denn das kann schnell zu einem Anstieg des Logvolumens führen, die Leistung beeinträchtigen und die Suche nach echten Fehlern erschweren. Es ist besser, sich an die Semantik der Log-Ebenen zu halten (DEBUG für Debugging, ERROR für kritische Probleme, INFO für wichtige Ereignisse).
Kann man Metriken nur auf der Infrastruktur-Ebene (CPU, RAM) sammeln und die Metriken auf der Anwendungsebene ignorieren?
Antwort: Nein. Anwendungsmetriken (z. B. Antwortzeit, Anzahl der Fehler) sind entscheidend für die Geschäftsanalytik und die operative Reaktion, da sie helfen, „Engpässe“ genau in der Logik der Dienste zu erkennen und nicht nur in der „Hardware“.
Ist in einem verteilten System die Standardverfolgung von HTTP-Anfragen über den Webserver immer ausreichend?
Antwort: Falsch. Für komplexe Szenarien, die Ketten von Diensten umfassen, ist eine vollständige verteilte Verfolgung mit einer eindeutigen Trace-Id erforderlich, um den Pfad und die Verarbeitungszeit der Anfrage in allen Phasen zu sehen.