Adam Bien Selbstständig

Mit der Verfügbarkeit von bunten Dashboards und Diagrammen sinkt in Projekten die Bereitschaft, das Monitoring als zentralen Use Case zu betrachten.

Eine wirklich interessante Information lässt sich kaum durch die bloße Beobachtung eines Systems gewinnen. Ein Autofahrer muss nicht die Geschwindigkeit des Fahrzeugs anhand der Radumdrehungen ablesen. Auch der Benutzer eines Laptops schätzt nicht den Ladezustand des Akkus über die Spannung der Batterie.

In Enterprise-Systemen werden dagegen fachliche Metriken gar nicht erst implementiert – man verlässt sich lieber auf die Fähigkeiten von Kaufwerkzeugen und nachträgliche Auswertung von generischen Daten. So bleibt dem Softwarebetreiber nichts anders übrig, als aus Informationen wie z. B. Transaktionen pro Sekunde, Anzahl der Sessions, Anfragen pro Sekunden auf die Anzahl von beispielsweise erfolgreichen Bestellungen zu schließen. Insbesondere in verteilten Anwendungen wie etwa Microservices sollten Metriken, Diagnostikinformationen und das Monitoring als essenzielle Use Cases gesehen werden, die speziell für einen bestimmten Stakeholder entwickelt werden.

Artikelserie

  • Teil 1: Microservices mit Java EE
  • Teil 2: Microservices mit Java EE, Application Server und Docker
  • Teil 3: Microservices mit Java EE, Fehlerbehandlung und Konfiguration
  • Teil 4: Java EE Microservices überwachen
  • Teil 5: Java EE Microservices anwendungsbezogen überwachen

Write only

Obwohl die Logging-Faszination etwas abgenommen hat, sind Diskussionen über mögliche Features der Logging-Frameworks immer noch sehr beliebt. Zielführender, wenn auch nicht so spannend, sind die Bestimmung der Struktur, die Intention der Einträge und die Definition der Anforderungen der Zielgruppe, für die die Logfiles geschrieben werden.

Beim Logging werden unstrukturierte Einträge in Dateien geschrieben – in der Hoffnung, dass sich bei Bedarf wertvolle Informationen nachträglich extrahieren lassen. Es werden sogar Logfiles geschrieben, um sie sofort nach dem Schreiben wieder einzulesen, zu parsen und in eine Datenbank zu schreiben. Hier stellen sich zwei Fragen: Warum nimmt man den Umweg über die Datei? Warum gilt das Schreiben von unstrukturierten Inhalten als eine Best Practice?

Nehmen wir an, die in den Logdateien gespeicherte Information sei tatsächlich wertvoll. In diesem Fall müsste man doch die Extraktion mithilfe von z. B. regulären Ausdrücken kontinuierlich testen. Je einfacher die Extraktion der Daten, desto höher die Qualität der geschriebenen Logs. Im Optimalfall würde die wirklich interessante Information in Echtzeit zur Verfügung stehen und wäre ohne aufwendiges Parsen verfügbar. Anstatt Methodenaufrufe und mögliche Exceptions in eine Datei zu schreiben, um sie gleich wieder für die Berechnung der Statistiken einzulesen, könnte man doch in Echtzeit interessante Metriken aktualisieren und bequem z. B. via HTTP/JSON veröffentlichen.

Den vollständigen Artikel lesen Sie in der Ausgabe:

Java Magazin 12.17 - "Ordnung im Containerchaos"

Alle Infos zum Heft
579817649Java EE Microservices anwendungsbezogen überwachen
X
- Gib Deinen Standort ein -
- or -