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

Weiterlesen

Devops

DevOps und Continuous Delivery für mehr Agilität

Softwareentwicklung in schnellen und agilen Zeiten

Softwareentwicklungen legen heutzutage ein rasantes Tempo hin. Qualitätssicherung wird hier zu einer großen Herausforderung:
Continuous Delivery eröffnet die Möglichkeit, dass zu jeder Zeit eine aktuelle Version der erstellten Software auf eine Zielumgebung aufgebracht werden kann. Zudem kann eine Anwendung auf eine Umgebung deployed werden, zum Zweck der automatisierten und manuellen Tests. Sind diese Tests rein automatisch und die einzigen Abnahmekriterien, so kann auch das eigentliche Deployment auf die Produktionsumgebung beziehungsweise einen Teil davon automatisch erfolgen. Dann spricht man von Continuous Deployment.

Um diese hohe Geschwindigkeit zu ermöglichen, sind neben agilen Prozessen vor allem DevOps von essentieller Bedeutung.  DevOps ist die Verbindung von Development und IT Operations. Damit soll durch gemeinsame Anreize, Prozesse und Werkzeuge eine effektivere und effizientere Zusammenarbeit der Bereiche Entwicklung, IT-Betrieb und Qualitätssicherung ermöglicht werden. DevOps hat das Ziel, diese Bereiche in der Rolle des Buildmanagers/Build-Teams/DevOps Engineers konsequent zu verzahnen.

DevOps ist die Verbindung von Development und IT Operations

Dadurch können betriebsrelevante Fragen, die beim herkömmlichen, getrennten Ansatz erst zu einem späten Stadium auftauchen und das eigentliche Deployment blockieren können, frühzeitig erkannt, gestellt und beantwortet werden. Auf diese Weise wird der Betrieb von Anfang an in die Entwicklung eingebunden. Die Software kann so früh wie möglich als sogenanntes “Walking Skeleton” deployed werden: Ein sicheres Mittel, den Worst Case, nämlich dass sich Fehler erst beim Livegang zeigen, auszuschließen.

Gute DevOps-Teams sind sowohl mit entwicklungsnahen Buildmanagern als auch mit betriebsnahen Administratoren besetzt. Sie begleiten den gesamten Prozess von den ersten Ansätzen bis zur
Fertigstellung und können so jederzeit schnell auf neue Anforderungen beider Seiten reagieren.

Integrata Seminare zu DevOps und Continous Delivery

 

Weiterlesen