In der komplexen Welt moderner Anwendungen stehen Entwickler oft vor der Herausforderung, Logs von Anwendungen auf verschiedenen Systemen abzurufen. Zum Beispiel müssen sie sich auf einem Linux-Server anmelden, um Logs von System A einzusehen, eine Datenbank nach Logs von System B abfragen und zum Azure-Dashboard navigieren, um Neustarts von Anwendungen zu verfolgen. Darüber hinaus erschwert die Abstimmung von Zeitstempeln in verschiedenen Zeitzonen die Aufgabe zusätzlich. Die Zentralisierung von Application Logs bietet einen großen Vorteil und vereinfacht den Zugriff, die Einblicke und die Handlungen im gesamten Log-Management-Prozess.
Vereinfachter Zugriff und bessere Überwachung
Die Zentralisierung von Logs ermöglicht Entwicklern den Zugriff auf alle Logs von einem einzigen zentralen Ort aus. Anstatt sich durch verschiedene Server und Datenbanken zu navigieren, können sie Logs von verschiedenen Komponenten und Umgebungen einfach an einem Ort einsehen, was die Produktivität steigert und die Zeit für manuelles Abrufen von Logs reduziert.
Durch die Konsolidierung dieser Logs können Entwickler Ereignisse einfach korrelieren, Abhängigkeiten identifizieren und eine genaue Synchronisierung von Zeitstempeln, sogar über verschiedene Zeitzonen hinweg gewährleisten. Dieser Ansatz vereinfacht das Troubleshooting und ermöglicht ein besseres Verständnis des Systems.
Durch den Einsatz fortschrittlicher Abfragen, Filterung und Visualisierung können sie Trends identifizieren und sogar eine automatische Überwachung basierend auf Logs erstellen. Diese kann zum Beispiel eine Meldung auslösen, wenn ein Prozess einen Fehler hat oder zu lange dauert. Die Verwendung eines Managed Service wie zB AppInsights oder Google Logs ermöglicht auch das einfache Löschen oder Archivieren von Logs. Keine Bash-Skripte oder Cron-Jobs mehr, um zu verhindern, dass die Festplatten des Servers vollgeschrieben werden.
Erkenntnisse aus unseren Teams
Beim Einrichten von Logging für viele Anwendungen haben wir einige bewährte Verfahren gelernt und auch einige Probleme erlebt. Hier sind unsere aktuellen Richtlinien für bessere Logging-Ergebnisse:
- Umgebungen getrennt halten. Logs aus Entwicklung, Test und Produktion sollten getrennt aufbewahrt werden.
- Die Anwendung protokollieren. Manchmal teilen sich mehrere Anwendungen Code und können dieselben Logs erzeugen. In solchen Fällen ist es von grossem Wert, ein Tag oder ein Präfix zu haben, das angibt, welche Applikation für diesen Logeintrag verantwortlich ist.
- Standardisierte Log-Levels verwenden. In der Vergangenheit benutzten wir oft nur ein Level für Logs. Wenn wir kurzfristig mehr Informationen brauchten, mussten wir die Applikation anpassen, kompilieren, auf dem Server installieren und dann alles wieder rückgängig machen, nachdem das Problem gelöst wurde. Heute verwenden wir spezielle Log-Levels wie “Error”, “Information” oder "Debug", die wir je nach Bedarf ein- oder ausschalten können.
Fazit
Logs sind ein wichtiger Bestandteil jeder Applikation und es lohnt sich, ihnen die gebührende Aufmerksamkeit zu schenken. Vor allem wenn eine Applikationslandschaft wächst, werden sie unentbehrlich für die Nachverfolgung, was in einem System passiert ist. Weiterhin erhöht die automatisierte Überwachung die Reaktionszeit bei Fehlern im System erheblich und es können viele zusätzliche Informationen über ein System gewonnen werden.