Alle Beiträge, jStage Platform, Technologien & Entwicklung

Performance Monitoring mit stagemonitor während der Entwicklung

Der erste Blogpost über stagemonitor gab einen groben Überblick über die vielseitigen Einsatzzwecke und Funktionen des Open Source Performance Monitoring Tools stagemonitor. In diesem Teil beschäftigen wir uns näher mit dem In Browser Widget, welches bereits während der Entwicklung einer Webanwendung Analysemöglichkeiten bietet und ein konstantes Feedback über die Performance gibt.

In vielen Fällen bekommt man oft erst mit, dass eine Webanwendung langsam ist, wenn es eigentlich schon zu spät ist und sich ein verärgerter Kunde über eine langsame Seite beschwert. Gerade bei eCommerce Webseiten führt dies teilweise zu erheblichen wirtschaftlichen Schäden. Nicht nur, dass ein verärgerter Kunde wahrscheinlich nicht nochmals einen langsamen Shop besucht, viele machen ihrem Unmut auch bei Freunden oder in sozialen Netzwerken Luft. Deshalb ist es entscheidend, Performance-Bugs so früh wie möglich im Entwicklungszyklus zu beheben.

Das In Browser Widget

Stagemonitor bietet mit dem In Browser ein Werkzeug an, mit dem die Performance während der Entwicklung analysiert und optimiert werden kann. Zudem wird der Entwickler auf Probleme hingewiesen, die sonst evtl. erst in der Produktion sichtbar werden. Das In Browser Widget ist ein Monitoring Dashboard, welches automatisch in das HTML von Webapplikationen eingefügt wird. Dies sind die wichtigsten Funktionen des In Browser Widgets:

  • Call Tree – Nach dem Öffnen wird ein Call Tree aller Methoden, SQL und Elastichsearch Queries angezeigt, die während dem Request ausgeführt wurden. Hierdurch lassen sich die Bottlenecks einer Anwendung identifizieren. Ajax Requests können ebenfalls analysiert werden.

    In Browser Widget - Call Tree

    Abb. 1: In Browser Widget – Call Tree

  • HTTP Request Informationen Im Request Tab finden sich allgemeine Informationen zum abgesetzten Request wie die Größe der Response, die Request Header und Details zum User Agent (von welchem Device und von welchem Betriebssystem der Request abgesetzt wurde). Zudem wird die Ladezeit der Seite in die Kategorien Netzwerk, Server, DOM Processing und Page Rendering aufgeteilt.
  • Konfigurierbare Notifications – Es können Grenzwerte für die Seitenladezeit und die Anzahl an SQL Queries während eines Requests definiert werden. Das Widget zeigt eine Notification an, falls diese Grenzwerte nicht eingehalten wurden.
  • Real Time Performance Graphen – Im Metrics Tab befinden sich Graphen, welche in Echtzeit beispielsweise Metriken der JVM, des Betriebssystems und der Antwortzeiten darstellen.

    In Browser Widget - Metrics

    Abb. 2: In Browser Widget – Metrics

  • Alerts – Im Alerts Tab können Grenzwerte für alle gesammelten Metriken wie z. B. die Antwortzeit festgelegt werden. Hiermit können beispielsweise Email Benachrichtigungen versendet werden, falls die durchschnittliche Antwortzeit der Suchfunktion im Produktivsystem einen bestimmten Wert überschreitet.

    In Browser Widget - Alerts

    Abb. 3: In Browser Widget – Alerts

Installation

Die Installation gestaltet sich sehr einfach, da kein Backend erforderlich ist. Um stagemonitor in ein Projekt einzubinden, müssen nur einige Dependencies hinzugefügt werden. Um im Call Tree nur Methoden des eigenen Projekts anzuzeigen, kann dies mittels einer Properties Datei konfiguriert werden.

Um stagemonitor selbst auszuprobieren, habe ich auf GitHub ein Beispielprojekt auf Basis der Beispielapplikation Spring PetClinic erstellt. Um die Anwendung zu starten müssen lediglich drei Befehle auf der Konsole ausgeführt werden. Die Anleitung befindet sich hier.
Für einen schnellen ersten Eindruck des In Browser Widgets steht unter http://stagemonitor-demo.isys-software.de ebenfalls eine Live Demo der PetClinic zur Verfügung. Eine Installationsanleitung zur Einbindung des Widgets in Ihre Applikation finden Sie hier.

Weitere Informationen zu stagemonitor befinden sich auf www.stagemonitor.org.

Der nächste Teil dieser Serie beschäftigt sich mit den beiden anderen Komponenten von stagemonitor, welche bei der Analyse von bearbeiteten Requests und dem Cluster-Monitoring unterstützen.

Weitere Beiträge der Serie

Teil 1: Performance Monitoring mit stagemonitor
Teil 2: Performance Monitoring mit stagemonitor während der Entwicklung
Teil 3: Analyse von Nutzeranfragen mit stagemonitor