Application Performance Monitoring

Aufbau einer Lösung zum Monitoring eines Front-to-Back Handelssystems

Ziel der Lösung war es insbesondere auch Nicht-Experten einen Überblick über den Systemzustand zu gewähren, Performanceabgleiche neuer Softwarereleases gegen den Produktionsstand zu ermöglichen, Laufzeiten auf Methodenebene zu erfassen und insbesondere das Gesamtsystem im Kontext zu betrachten. Das heißt, dass klassisches Servermonitoring, Datenbankmonitoring und anwendungsspezifische Metriken im Gesamtzusammenhang betrachtbar sind.

Zusammen mit unserem Kunden haben wir eine Lösung geschaffen, welche in der Lage ist, alle notwendigen Aspekte zur Performance Überwachung des Handelssystems aufzunehmen.

Die Kernkomponenten sind Collectd, InfluxDB und Grafana, gängige Open Source Tools, so wie eine Reihe von in der Anwendung programmierten Zusatzfunktionen, diverse Scripte und gängige Rest-API’s.

Der Schwerpunkt lag einerseits auf einer verlustfreien Speicherung der Rohdaten, zum anderen in der freien Korrelierbarkeit der Metriken.

Beispielsweise werden alle internen Statistiken aller beteiligten JVM’s vorgehalten, es werden Ausführungsstatistiken der JBoss Instanzen über EJB Calls gespeichert, Laufzeiten von Batchverarbeitungen und vieles mehr.

Insgesamt werden über 300 Zeitreihen verschiedener Messwerte gespeichert. Das Intervall der Metriken geht von 10 sekündlich bis täglich, Serverauslastungsdaten können mit Anwendungsmetriken verglichen werden, Datenbanklast mit JVM Zuständen korreliert werden und vieles mehr.

In Summe werden mit dem System bis zu 18 Oracle Datenbanken, ca. 250 JVM’s und 12 Server überwacht.

Grundsätzlich besitzt diese Konfiguration keine Grenzen hinsichtlich der Aufnahme von Metriken. 

Besondere Mehrwerte können in QA Phasen generiert werden, da es möglich ist, die Performance eines neuen Softwarereleases gegen das vorherige detailliert abzugleichen. Dadurch können Performanceengpässe frühzeitig erkannt und die Software optimiert werden.

Insbesondere die Verbesserung bei der JVM Parametrisierung für neue Lastszenarien war ein großer Schritt hin zu mehr Stabilität und Performance.

Die vollständige Visualisierung der Daten lässt nicht nur Experten einen Blick auf das System werfen, sondern ist insbesondere für jeden Verantwortlichen lesbar und verständlich.