Jolokia – Simples Management von Java-Anwendungen

Jolokia – Simples Management von Java-Anwendungen

Mit Hilfe von Jolokia ist das moderne Management von Java-Anwendungen im Vergleich zu einer reinen JMX-Lösung deutlich simpler geworden. Weiterhin ist Jolokia sehr populär und wird von praktisch allen Java-basierten Produkten wie Applikationsservern und Spring Boot-Anwendungen unterstützt.

Eine Übersicht zu JMX

Die Java Management Extension ist die Grundlage jeglicher Überwachung eines Java-Prozesses. Die über das Betriebssystem erfassbaren Metriken (CPU, Speicher, I/O) sind für Java-Anwendungen viel zu grob bzw. messen durch die interne Verwaltung des Hauptspeichers durch die Java Virtual Machine schlicht und ergreifend falsch. Weiterhin stehen relevante Informationen wie die Garbage Collection so nicht zur Verfügung.

Diese Lücke schließt JMX. Dieses ursprünglich als Extension bereitgestellte Framework ist seit langem Bestandteil jeder Java-Installation. Die Grundidee ist, über einen JMX-Agenten quasi beliebige Informationen aus dem Java-Prozess lesen zu können. Dazu wird eine so genannte “Managed Bean” mit Attributen und Operationen definiert. Auf diese wird durch einen eindeutigen Namen zugegriffen. Das Format dieses Namens, der so genannte ObjectName, ermöglicht eine  hierarchische Struktur und damit auch ein Suchen und Filtern.

Obwohl diese Technik sehr praktisch und auch sehr einfach zu erweitern ist, bleiben im konkreten Einsatz ein paar Fragen offen:

  • Authentifizierung und Verschlüsselung sind in JMX realisiert, aber es fehlt ein Rollen-Konzept. So kann die Sicht auf die Hierarchie der Managed Beans oder der Zugriff auf Bean-Attribute und Operationen nicht eingeschränkt werden.
  • Das Netzwerk-Protokoll ist nicht REST-basiert. Damit ist es relativ kompliziert, Überwachungs- und Orchestrierungssoftware an das JMX-System zu koppeln.

Die Kernfunktionen von Jolokia

Jolokia realisiert diese Anforderungen. Dazu definiert das Framework ein REST-API zum lesenden und schreibenden Zugriff auf das interne JMX-System. Durch die Verwendung des standardisierten http-Protokolls werden die etablierten Security-Mechanismen zur Authentifizierung und Verschlüsselung benutzt. Zusätzlich können in einem Access-Restriktor Rollen-basierte Zugriffsbeschränkungen und Filter definiert werden.

Die Daten der Abfragen werden im JSON-Format geliefert, so dass eine Analyse und Weiterverarbeitung ohne großen Aufwand erfolgen kann. Damit ist die Anbindung an andere System (Monitoring, Orchestrierung) gegeben.

Integration von Jolokia

Für JEE-Applikationsserver stellt Jolokia ein Web-Archiv zur Verfügung. Dieses wird als zusätzliche Anwendung installiert und stellt den Jolokia-Endpunkt zur Verfügung. Authentifizierung und Verschlüsselung übernimmt hierbei der Applikationsserver.

Für Standalone-Anwendungen kann Jolokia über einen Java-Agent eingebunden werden. Dieser startet einen http-Server der Java Runtime. Netzwerk- und Port-Konfiguration erfolgen durch Aufruf-Parameter:

java   -javaagent:jolokia-agent.jar=port=${JAVA_JOLOKIA_PORT},host=0.0.0.0

Auch für Java-Anwendungen im Docker-Container ist Jolokia hervorragend geeignet. Hier muss nur der vom Server bereitgestellte Endpunkt durch ein Port-Mapping freigeschaltet werden.


Seminar zum Thema

Dr. Rainer Sawitzki / Dr. Rainer Sawitzki

Nach seinem Studium der Physik und anschließender Promotion Wechsel in die IT-Branche. Seit mehr als 20 Jahren als Entwickler, Berater und Projektleiter vorwiegend im Bereich Java und JavaScript unterwegs. Parallel dazu in der Entwicklung und Durchführung von hochwertigen Seminaren für die Integrata im Einsatz.

Schreibe einen Kommentar