Alle Beiträge, jStage Platform, Technologien & Entwicklung

Performance Monitoring mit stagemonitor

Jedes Software Projekt muss sich früher oder später Gedanken über die Performance machen, um marktfähig zu bleiben und den Erwartungen der Nutzer zu entsprechen. Hierzu ist ein gutes Monitoring Werkzeug unerlässlich. Kommerzielle Lösungen sind teuer und bestehende Open-Source-Projekte sind meistens nicht speziell für Webanwendungen ausgelegt oder tun sich schwer mit dem Monitoring von geclusterten Anwendungen.

Genau hier setzt stagemonitor an. Stagemonitor ist eine Open-Source Java Application Performance Monitoring Lösung, welche alle Werkzeuge bietet, die während der Entwicklung, Qualitätssicherung und Produktion nötig sind, um die Performance einer Java Webanwendung überwachen zu können. Stagemonitor ist speziell dafür ausgelegt, aktuelle und historische Metriken von geclusterten Anwendungen zu überwachen. Durch die Plug-In Architektur kann der Funktionsumfang beliebig erweitert werden.

Stagemonitor in der Praxis bei Hama GmbH & Co KG

Aktuell setzen wir stagemonitor für die Entwicklung und die Überwachung der produktiven Shop-Webseite unseres Kunden Hama GmbH & Co KG ein. Das Beispiel Hama zeigt dabei sehr schön die flexiblen Möglichkeiten von stagemonitor, einzelne Server bis zu komplexen Serverclustern mit verschiedenen Anwendungen zu überwachen. Die folgende Grafik veranschaulicht vereinfacht die Struktur der Hama Server: Auf mehreren physikalischen Hosts sind jeweils mehrere Tomcat Server, auf denen die Hama Webshops laufen.

struktur-hama-server

Struktur Hama Server

Die von uns individuell entwickelten und betriebenen Hama Shops sind so strukturiert, dass für jedes Land eine eigene (Sub-) Domain existiert und speziell angepasste Webdesigns und Artikelsortimente möglich sind. Hierdurch kann es zu unterschiedlichen Antwortzeiten kommen, wodurch jede einzelne Instanz ihre eine eigene Performance Charakteristik hat. Für Administratoren ist es deshalb wichtig, sowohl das gesamte Cluster im Überblick als auch auch gezielt einzelne Server monitoren zu können. Aus diesem Grund erhebt stagemonitor neben dem Anwendungsnamen (in diesem Fall: hama-shop) und dem Hostnamen auch den Domainnamen als zusätzlichen Identifier (die sog. Instanz in der stagemonitor Terminologie). In den Dashboards wiederum kann nach diesen Kriterien gefiltert werden.

Die Anwendungszwecke im Überblick

Stagemonitor besteht im Wesentlichen aus drei Komponenten, welche unterschiedliche Anwendungszwecke abdecken.

  • In-Browser-Widget: Continuous Performance Testing während der Entwicklung
  • Kibana Dashboard: Analyse von Requests, beispielsweise Fehleranalyse und Ursachenforschung
  • Grafana Dashboard: Das gesamte Cluster im Überblick

In-Browser-Widget

in-browser-widget

In-Browser-Widget

Das In-Browser-Widget wird automatisch in die zu überwachende Webanwendung eingefügt und gibt während der Entwicklung konstantes Feedback über die Performance. Es handelt sich hierbei um ein kleines stagemonitor Icon, welches sich an der rechten unteren Ecke im Browser befindet. Durch einen Klick darauf öffnet sich das Widget. Ein Call Tree der durchlaufenen Methoden des aktuellen Requests hilft beim Erkennen von Performancefressern. Das Widget benachrichtigt auf Basis von einstellbaren Grenzwerten z. B. bei zu langsamen Requests oder wenn zu viele SQL Queries abgesetzt wurden. Zudem können Metriken der Anwendung und des Systems in Echtzeitgraphen betrachtet werden. Hierbei ist keine zusätzliche Software wie z. B. eine Datenbank vonnöten d. h. die Installation ist sehr einfach.

Kibana Dashboard

Kibana Dashboard

 

Stagemonitor beinhaltet ein Kibana Dashboard, mit dem die von stagemonitor aufgezeichneten Request Traces (detaillierte Informationen zu eingegangenen HTTP Anfragen) durchsucht und analysiert werden können. Durch die dynamischen Analysemöglichkeiten von Kibana können vielseitige Fragestellungen beantwortet werden:

  • Welche Fehler treten besonders häufig auf?
  • Wie können die Fehler reproduziert werden?
  • Warum war der Request eines Kunden zu einer bestimmten Zeit langsam?
  • Welchen Browser und welchen Gerätetyp setzen meine Kunden am häufigsten ein?
  • u.v.m. 

Grafana Dashboard

Grafana Dashboard

Grafana Dashboard

Stagemonitor beinhaltet außerdem eine Reihe an Grafana Dashboards, in denen die Metriken der überwachten Server in Graphen dargestellt werden:

  • Das Request Dashboard gibt Auskunft über das Antwortzeitverhalten und den Durchsatz der Anwendung. Zudem werden die langsamsten und fehleranfälligsten Business Transactions (z. B. ‘Suche’ oder ‘Artikeldetail ansehen’) hervorgehoben.
  • Das JVM Dashboard enthält Informationen über die Heap Auslastung, das Garbage Collection Verhalten und die CPU Auslastung der JVM.
  • Darüber hinaus gibt es Dashbards für EhCache-, Logging-, Application Server-, Datenbankabfragen- und Betriebssystemmetriken.

Nach diesem einführenden Überblick wollen wir im nächsten Blogpost dieser Serie das In-Browser-Widget näher betrachten und seine vielfältigen Funktionen kennenlernen. Gerade für Anwendungsentwickler sicher nicht uninteressant.

Falls unser stagemonitor Ihr Interesse geweckt hat oder Sie Anmerkungen, Ideen oder Verbesserungsvorschläge haben, dann freuen wir uns auf Ihre Kommentare, gerne auch eine direkte eMail an felix.barnsteiner@jstage.de.
Um mit aktuellen Infos rund um stagemonitor versorgt zu werden, können Sie stagemonitor auch auf Twitter (www.twitter.com/stagemonitor) folgen oder den Diskussionen auf der Mailinglist (https://github.com/stagemonitor/stagemonitor-mailinglist) beiwohnen. Falls Sie mitentwickeln möchten, dann schauen Sie bei github vorbei. Wir freuen uns natürlich immer auch über einen github Stern.

Weitere Informationen finden Sie zustätzlich auch unter www.stagemonitor.org.

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