Quartalsupdate 2023-Q4

Nachvollziehbarkeit und Anwendungsüberwachung mit Prometheus

In unserem Quartalsupdate 2023-Q4 liegt der Fokus auf der Nachvollziehbarkeit von Änderungen im ilabServer sowie erweiterten Möglichkeiten zur Überwachung der Anwendung basierend auf dem Open Source Monitoring Framework Prometheus.

Diese Neuerungen sollen dazu beitragen, den Support und die Wartung der Systeme zu vereinfachen und uns allen so eine möglichst ruhige Zeit zu Weihnachten schenken.

Nachvollziehbarkeit von Änderungen

Jegliche Änderungen an Postfächern, Versandwegen, Methodenumsetzungen, Konfigurationen, Transformationen oder Quellsystemen können nun jederzeit über die Verwaltungsoberfläche des ilabServers nachvollzogen werden. Wenn bei einem Einsender beispielsweise ein Problem auftaucht, kann so ohne Weiteres überprüft werden, ob in letzter Zeit eine Änderung an dem jeweiligen Versandweg vorgenommen wurde und etwa Einsenderkennungen hinzugefügt oder entfernt wurden:

Da die Änderungshistorie selbst von Anfang an gefüllt wurde, steht die neue Funktion sofort auch rückwirkend für alle bisherigen Änderungen zur Verfügung.

Um die Nachvollziehbarkeit in Zukunft weiter zu verbessern, wird bei neuen Änderungen ab sofort analog zu gängigen Versionierungssystemen auch ein Kommentar abgefragt. Während die Historie bisher bereits das „Was?“ und „Wer?“ beantwortet, kann so auch das „Warum?“ dokumentiert werden, bspw. durch Angabe einer Ticketnummer oder einer kurzen Erläuterung. Die Anzeige der Nutzernamen ist hier übrigens frei konfigurierbar und kann je nach Unternehmensrichtlinien entsprechend aktiviert oder deaktiviert werden.

Anwendungsüberwachung mit Prometheus

Intern sowie bei einigen externen Kundensystemen setzen wir bereits seit einiger Zeit das Open Source Monitoring Framework Prometheus ein, um Hardwareressourcen wie etwa den verfügbaren Speicherplatz zu überwachen. Das bestehende System ermöglicht es uns schon heute, frühzeitig bei Hardwareproblemen vorgewarnt zu werden und so auf eine Vielzahl von Problemen zu reagieren, bevor es zu einem möglichen Ausfall von Systemen kommt.

Diese Überwachung möchten wir in Zukunft auch auf die Anwendungslogik ausweiten. Die Prometheus Überwachung basiert grundsätzlich auf der Überwachung von Metriken, die aus dem zu überwachenden System exportiert werden. Wir haben ein System entwickelt, um die zu überwachenden Metriken in Form von Datenbankabfragen zu definieren. Hierdurch können wir ganz ohne Anpassungen am Quellcode neue Metriken definieren und so die Überwachung ausbauen.

Zum Start haben wir drei Metriken definiert, mit denen wir voraussichtlich bereits einen Großteil der möglichen Fehlerquellen überwachen können:

  • modulstatus
    Liefert die Anzahl der Module unterteilt nach Modul, Instanz, Version und Status.
  • nachrichten_heute
    Zählt die erstellten Nachrichten seit Mitternacht unterteilt nach Quelle, Ziel, Typ und Status.
  • protokolleintraege_heute
    Zählt die erstellten Protokolleinträge seit Mitternacht unterteilt nach Protokollcode, Versandweg und Quellsystem.

Basierend auf den Metriken können dann Abfragen über das System definiert werden. Die folgende Abfrage liefert beispielsweise alle Versandwege, in denen in der letzten Stunde mindestens 10 Nachrichten vom Typ FAX_FUER_VERSANDWEG fehlgeschlagen sind:

sum by (typ, status, ziel) (delta(nachrichten_heute { typ = „FAX_FUER_VERSANDWEG“, status = „FEHLGESCHLAGEN“ } [1h]) > 10)

Über den Prometheus Alert Manager können anschließend Benachrichtigungskanäle definiert werden. Beispielsweise kann automatisch eine Email Benachrichtigung versendet werden. Außerdem ist es möglich, eine Benachrichtigung in einem Teams Kanal zu erhalten, sobald die Bedingung eintritt.

Eine weitere interessante Integration bietet Grafana. Hier können Dashboards erstellt werden, um den aktuellen Anwendungsstatus zusätzlich zu visualisieren. Aus ersten Tests können wir berichten, dass die Visualisierung enorm dabei hilft, Fehlerfälle nachzuvollziehen. Basierend darauf können dann wiederum neue Warnungen für die Zukunft definiert werden. Vermutlich ist es nicht möglich, sich von vornherein auf alle möglichen Fehlerfälle vorzubereiten und diese auszuschließen. Ziel sollte es jedoch sein, dass sich ein Fehlerfall nicht unnötig wiederholt. Im Idealfall sollten also kritische Fehlerfälle nachbearbeitet werden und in Warnungen überführt werden, die in ähnlichen Situationen frühzeitig warnen. Auf Wunsch stellen wir gerne eine Grafana Instanz mit vorbereiteten Dashboards bereit.

Die folgende Abbildung zeigt ein von uns vorbereitetes Dashboard zu der Metrik nachrichten_heute. Im oberen Graphen lässt sich die Fehlerquote in Prozent je Nachrichtentyp, also die Anzahl der Nachrichten des jeweiligen Nachrichtentyps im Status FEHLGESCHLAGEN dividiert durch die Anzahl der Nachrichten des jeweiligen Nachrichtentyps insgesamt, ablesen. Hierdurch ist u.a. die Interpretation möglich, dass zum aktuellen Zeitpunkt zwar fast jede dritte Faxübermittlung (FAX_FUER_EMPFAENGER) fehlschlägt, aber durch die Wiederholungsstrategie des ilabServers nur ca. 2% der Faxe endgültig (FAX_FUER_VERSANDWEG) fehlschlagen.