Aktivierung JMX

Hallo zusammen, heute fassen wir wieder ein Grundthema auf, welches wohl oft Fragen aufwirft aber so einfach sein kann. Die Rede ist von der Aktivieren der JMX– oder auch Java Management Extension genannt.
In unserem Blog haben wir schon viele Themen gehabt, welche sich mit JMX Monitoring auseinander setzen – Jolokia, JConsole oder die Überwachung mit Nagios. Aber noch keinen, welcher in den Grundzügen zeigt, wie es aktiviert wird, also gehen wir einen Schritt zurück und zeigen auch dies.
Wir machen das ganze am Beispiel des Apache Tomcats – aber da JMX vom Java bereitgestellt wird, besteht die Möglichkeit bei vielen Application Server und meist auch bei Standalone Systemen. Nun aber zum Setup selbst, nehmt euer Start-Skript des Tomcats oder die des Application Server oder die Environment Settings von Standalone Systemen. Hier müssen nun nur die Java Optionen angepasst werden. Für ein schlichtest Setup mit Remote Zugang und einer Passwortabfrage fügt ihr folgendes an:

-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=_WUNSCHPORT_ \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.authenticate=true \
-Dcom.sun.management.jmxremote.password.file=.../CONF_PFAD/jmxremote.password \
-Dcom.sun.management.jmxremote.access.file=../CONF_PFAD/jmxremote.access

Die Regelung der Anmeldung und der Rollen macht Ihr mit der jmxremote.access und .password Datei. Hier wird vermerkt, welche Login welche Rollen hat (readonly/readwrite – .access) und welche Passwörter für die Rollen gelten (.password). Zu beachten wäre hierbei, dass das Passwort-File nur vom User des Server zu lesen/schreiben ist, die Access-Datei dagegen kann default mit 644 belassen werden:

chmod 600 .../CONF_PFAD/jmxremote.password
chown APP_USER .../CONF_PFAD/jmxremote.password

Nun startet Ihr die Application und ruft z.B. wie mit der JConsole beschrieben, den Server und Port mit den Anmeldedaten auf.
Das ganze ist – wie gesagt – nur ein Grundsetup und es gibt noch mehr Möglichkkeiten den Zugriff anzupassen. Aber Ihr könnt das o.g. Beispiel nutzen um etwaige Überwachungen für das Monitoring zu implementieren oder einfach mal ein paar mehr Infos über einen Prozess zu bekommen.