<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://znil.net/index.php?action=history&amp;feed=atom&amp;title=Zabbix_Server_Java_Gateway_JMX_einrichten</id>
	<title>Zabbix Server Java Gateway JMX einrichten - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://znil.net/index.php?action=history&amp;feed=atom&amp;title=Zabbix_Server_Java_Gateway_JMX_einrichten"/>
	<link rel="alternate" type="text/html" href="https://znil.net/index.php?title=Zabbix_Server_Java_Gateway_JMX_einrichten&amp;action=history"/>
	<updated>2026-04-28T08:29:26Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in znilwiki</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://znil.net/index.php?title=Zabbix_Server_Java_Gateway_JMX_einrichten&amp;diff=11696&amp;oldid=prev</id>
		<title>BLinz: /* Auf dem Server / Proxy */</title>
		<link rel="alternate" type="text/html" href="https://znil.net/index.php?title=Zabbix_Server_Java_Gateway_JMX_einrichten&amp;diff=11696&amp;oldid=prev"/>
		<updated>2019-08-23T09:03:18Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Auf dem Server / Proxy&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
[[Kategorie:Zabbix]]&lt;br /&gt;
==Hinweis==&lt;br /&gt;
{{Hinweis| Anleitung wurde unter Ubuntu 14.04 erstellt}}&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
==Auf dem Server / Proxy==&lt;br /&gt;
{{Hinweis|Wenn Ihr den Zabbix-Server nach einer Anleitung von mir für Ubuntu ab 16.04. installiert habt so müsst Ihr den Dienst nur noch auf Automatischen Start setzen, konfigurieren und starten, aber nicht kompilieren!}}&lt;br /&gt;
----&lt;br /&gt;
===Zabbix Server nach meiner Anleitung bis Ubuntu 14.04===&lt;br /&gt;
Es fehlt dann nur noch die Java Runtime:&amp;lt;br&amp;gt;&lt;br /&gt;
 apt-get install openjdk-7-jdk&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Egal ob Server oder Proxy, wichtig ist das bei der Konfiguration der Parameter {{Key|--enable-java}} angegeben wurde (Beispiel Proxy):&amp;lt;br&amp;gt;&lt;br /&gt;
 ./configure --enable-proxy --enable-agent &amp;#039;&amp;#039;&amp;#039;--enable-java&amp;#039;&amp;#039;&amp;#039; --with-mysql --with-net-snmp --with-libcurl --with-openipmi --with-ssh2 --with-libxml2 --enable-ipv6 --with-unixodbc &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Das Zabbix-Java-Gateway muss separat zum Zabbix Server gestartet werden - und soll ja auch beim booten automatisch gestartet werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Hierzu erstellen wir die folgende Datei:&amp;lt;br&amp;gt;&lt;br /&gt;
 nano /etc/init.d/zabbix_java_gateway&lt;br /&gt;
mit dem folgenden Inhalt:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# /etc/init.d/zabbix_java_gateway&lt;br /&gt;
### BEGIN INIT INFO&lt;br /&gt;
# Provides:          zabbix_java_gateway&lt;br /&gt;
# Required-Start:    $network $remote_fs $syslog&lt;br /&gt;
# Should-Start:      $time&lt;br /&gt;
# Required-Stop:     $syslog $remote_fs&lt;br /&gt;
# Should-Stop: $time ypbind smtp&lt;br /&gt;
# Default-Start:     3 5&lt;br /&gt;
# Default-Stop:      0 1 2 6&lt;br /&gt;
# Short-Description: ZABBIX Java Gateway&lt;br /&gt;
# Description:       Start ZABBIX Java Gateway&lt;br /&gt;
### END INIT INFO&lt;br /&gt;
&lt;br /&gt;
#Check for Java - &lt;br /&gt;
#export PATH=$PATH:&amp;lt;&amp;lt;JAVA_HOME&amp;gt;&amp;gt;/bin/&lt;br /&gt;
&lt;br /&gt;
# zabbix details&lt;br /&gt;
ZABBIX_JAVAGW_START=/usr/local/sbin/zabbix_java/startup.sh&lt;br /&gt;
ZABBIX_JAVAGW_STOP=/usr/local/sbin/zabbix_java/shutdown.sh&lt;br /&gt;
PID=/tmp/zabbix_java.pid&lt;br /&gt;
&lt;br /&gt;
test -f $ZABBIX_JAVAGW_START || exit 0 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
RETVAL=0&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
    start)&lt;br /&gt;
        echo -n &amp;quot;Starting zabbix java gateway: &amp;quot;&lt;br /&gt;
	$ZABBIX_JAVAGW_START&lt;br /&gt;
	&lt;br /&gt;
        RETVAL=$?&lt;br /&gt;
        echo &lt;br /&gt;
        [ $RETVAL -eq 0 ] &amp;amp;&amp;amp; touch /var/lock/subsys/zabbix-java&lt;br /&gt;
        ;;&lt;br /&gt;
    stop)&lt;br /&gt;
        echo -n &amp;quot;Shutting down zabbix agent: &amp;quot;&lt;br /&gt;
	$ZABBIX_JAVAGW_STOP&lt;br /&gt;
&lt;br /&gt;
        RETVAL=$?&lt;br /&gt;
        echo&lt;br /&gt;
        [ $RETVAL -eq 0 ] &amp;amp;&amp;amp; rm -f /var/lock/subsys/zabbix-java&lt;br /&gt;
        ;;&lt;br /&gt;
    restart|reload)&lt;br /&gt;
        $0 stop&lt;br /&gt;
        $0 start&lt;br /&gt;
        RETVAL=$?&lt;br /&gt;
        ;;&lt;br /&gt;
    *)&lt;br /&gt;
        echo &amp;quot;Usage: $0 {start|stop|restart|reload}&amp;quot;&lt;br /&gt;
        exit 1&lt;br /&gt;
        ;;&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
exit $RETVAL&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Danach die folgenden Befehle ausführen:&lt;br /&gt;
 chmod 755 /etc/init.d/zabbix_java_gateway&lt;br /&gt;
 update-rc.d zabbix_java_gateway defaults&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Das Java-Gateway kann nun über den folgenden Befehl gestartet werden:&amp;lt;br&amp;gt;&lt;br /&gt;
 service zabbix_java_gateway start&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ob es wirklich läuft prüfen wir in der Prozessübersicht:&amp;lt;br&amp;gt;&lt;br /&gt;
 ps -Af | grep JavaGateway&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;#039;&amp;#039;&amp;#039;Ausgabe:&amp;#039;&amp;#039;&amp;#039;&amp;lt;/u&amp;gt;&lt;br /&gt;
 root      4149     1  0 15:39 ?        00:00:03 java -server -classpath lib:lib/android-json-4.3_r3.1.jar:lib/logback-classic-0.9.27.jar:lib/logback-core-0.9.27.jar:lib/slf4j-api-1.6.1.jar:bin/zabbix-java-gateway-2.4.4.jar:bin/zabbix-java-gateway-2.4.6.jar:bin/zabbix-java-gateway-2.4.7.jar -Dzabbix.pidFile=/tmp/zabbix_java.pid com.zabbix.gateway.JavaGateway&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Damit der Zabbix-Server das Java-Gateway auch nutzt muss dieses in der Konfigurationsdatei aktiviert werden:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 nano /usr/local/etc/zabbix_server.conf&lt;br /&gt;
 oder&lt;br /&gt;
 nano /usr/local/etc/zabbix_proxy.conf&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Und die folgenden Abschnitte anpassen:&lt;br /&gt;
 ### Option: JavaGateway&lt;br /&gt;
 #       IP address (or hostname) of Zabbix Java gateway.&lt;br /&gt;
 #       Only required if Java pollers are started.&lt;br /&gt;
 # &lt;br /&gt;
 # Mandatory: no&lt;br /&gt;
 # Default:&lt;br /&gt;
 # JavaGateway=&lt;br /&gt;
 JavaGateway=127.0.0.1&lt;br /&gt;
 &lt;br /&gt;
 ### Option: JavaGatewayPort&lt;br /&gt;
 #       Port that Zabbix Java gateway listens on.&lt;br /&gt;
 #&lt;br /&gt;
 # Mandatory: no&lt;br /&gt;
 # Range: 1024-32767&lt;br /&gt;
 # Default:&lt;br /&gt;
 # JavaGatewayPort=10052&lt;br /&gt;
 JavaGatewayPort=10052&lt;br /&gt;
 &lt;br /&gt;
 ### Option: StartJavaPollers&lt;br /&gt;
 #       Number of pre-forked instances of Java pollers.&lt;br /&gt;
 #&lt;br /&gt;
 # Mandatory: no&lt;br /&gt;
 # Range: 0-1000&lt;br /&gt;
 # Default:&lt;br /&gt;
 # StartJavaPollers=0&lt;br /&gt;
 StartJavaPollers=5&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{Hinweis| Wir starten hier 5 Poller weil dies auch der &amp;#039;&amp;#039;&amp;#039;Default&amp;#039;&amp;#039;&amp;#039; Wert des Java-Gateways. Wer die Anzahl erhöhen will/muss, muss also auch diesen Wert anpassen den man in der &amp;lt;code&amp;gt;/sbin/zabbix_java/settings.sh&amp;lt;/code&amp;gt; findet.&amp;lt;br&amp;gt;Auf Systemen bei denen aus den Quellen installiert wurde sollte die Datei &amp;lt;code&amp;gt;/etc/zabbix/zabbix_java.conf&amp;lt;/code&amp;gt; heißen.}}&amp;lt;br&amp;gt;&lt;br /&gt;
Danach den Zabbix-Server / Zabbix-Proxy Dienst neu starten. Jetzt wäre auch ein guter Test den ganzen Server einmal neu zu starten.&lt;br /&gt;
 service zabbix_server restart&lt;br /&gt;
 oder&lt;br /&gt;
 service zabbix_proxy restart&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Anpassung der Hosts in Zabbix==&lt;br /&gt;
Bei den Host die per JMX Überwacht werden sollen muss die JMX-Schnittstelle separat gepflegt werden (ähnlich der SNMP-Schnittstelle):&lt;br /&gt;
[[Datei:JMX-Monitoring-001.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
 Der zu benutzende Port wird bei der Freischaltung in Java auf dem Host lokal festgelegt und muss deshalb immer richtig eingetragen werden.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Das Java auf den Hosts muss für diese Remote-Abfragen vorbereitet werden (dabei wird auch der zu benutzende Port festgelegt). Dies geschieht in dem beim Aufruf der Java-Applikation folgende zusätzlichen Parameter hinzugefügt werden:&amp;lt;br&amp;gt;&lt;br /&gt;
 -Dcom.sun.management.jmxremote&lt;br /&gt;
 -Dcom.sun.management.jmxremote.port=12345&lt;br /&gt;
 -Dcom.sun.management.jmxremote.authenticate=false&lt;br /&gt;
 -Dcom.sun.management.jmxremote.ssl=false&lt;br /&gt;
Die vorstehenden Zeilen schalten die Abfragen ohne Passwortschutz auf dem Port 12345 frei.&amp;lt;br&amp;gt;&lt;br /&gt;
Beim Tomcat würden wir die &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;tomcat.conf&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; bearbeiten und - falls vorhanden den Eintrag ergänzen, ansonsten einen neuen Eintrag machen:&amp;lt;br&amp;gt;&lt;br /&gt;
 JAVA_OPTS=&amp;quot;-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false&amp;quot;&lt;br /&gt;
Soll eine vorherige Authentifizierung geschehen so ändern die Parameter sich wie folgt:&amp;lt;br&amp;gt;&lt;br /&gt;
 -Dcom.sun.management.jmxremote&lt;br /&gt;
 -Dcom.sun.management.jmxremote.port=12345&lt;br /&gt;
 -Dcom.sun.management.jmxremote.authenticate=true&lt;br /&gt;
 -Dcom.sun.management.jmxremote.ssl=false&lt;br /&gt;
 -Dcom.sun.management.jmxremote.access.file=/etc/jmxremote.access&lt;br /&gt;
 -Dcom.sun.management.jmxremote.password.file=/etc/jmxremote.password&lt;br /&gt;
Wiederum können die Abfragen über Port 7002 gestellt werden. Es sind dafür jedoch nur Benutzer zugelassen die in der Datei {{Key|/etc/jmxremote.access}} aufgeführt sind. Die Benutzer selbst werden in der Datei {{Key|/etc/jmxremote.password}} mit Benutzername und Passwort eingerichtet.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Deshalb müssen diese beiden Dateien wie folgt eingerichtet werden:&amp;lt;br&amp;gt;&lt;br /&gt;
 nano /etc/jmxremote.password&lt;br /&gt;
mit folgendem Inhalt:&amp;lt;br&amp;gt;&lt;br /&gt;
 zabbix Hbz7Huai&lt;br /&gt;
Damit gibt es den Benutzer {{Key|zabbix}} mit dem Passwort {{Key|Hbz7Huai}}&amp;lt;br&amp;gt;&lt;br /&gt;
Nun vergeben wir die Berechtigungen für den Benutzer:&amp;lt;br&amp;gt;&lt;br /&gt;
 nano /etc/jmxremote.access&lt;br /&gt;
mit folgendem Inhalt:&amp;lt;br&amp;gt;&lt;br /&gt;
 zabbix readonly&lt;br /&gt;
Damit erhält der Benutzer {{Key|zabbix}} Lesezugriff. Möglich ist auch der Wert {{Key|readwrite}} womit dann auch Schreibzugriffe möglich sind.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Anpassung des Templates==&lt;br /&gt;
Falls Ihr auf den Host die Überwachung ohne Passwort freigeschaltet habt müsst Ihr nichts machen.&amp;lt;br&amp;gt;&lt;br /&gt;
Falls Ihr jedoch einen Benutzer und ein Passwort festgelegt habt so müsst Ihr diese dann in den Templates und bei den Abfragen mit angeben.&amp;lt;br&amp;gt;&lt;br /&gt;
Bei Zabbix ist das Template&lt;br /&gt;
 Template JMX Generic&lt;br /&gt;
dabei. Den Benutzernamen und das Passwort müsst Ihr dann bei jedem Item eintragen:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Datei:JMX-Monitoring-002.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
Natürlich könnt das auch per &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Mass Update&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; machen - und dabei gleich Makros verwenden:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Datei:JMX-Monitoring-003.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Und im Host oder im Template hinterlegt Ihr dann die Daten:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Datei:JMX-Monitoring-004.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
==Probleme?==&lt;br /&gt;
Bei manchen Kunden funktionierte das ganze nicht - wegen der Firewalls zwischen den Netzen.&amp;lt;br&amp;gt;&lt;br /&gt;
Das Problem ist das während der Kommunikation nicht nur der angegebene Port - im obigen Beispiel &amp;#039;&amp;#039;&amp;#039;12345&amp;#039;&amp;#039;&amp;#039;&amp;#039; - nutzt sondern noch dynamisch zusätzliche Ports.&amp;lt;br&amp;gt;&lt;br /&gt;
Das kann man unterbinden indem man zusätzliche zu den obigen Parametern noch folgende beide hinzufügt:&amp;lt;br&amp;gt;&lt;br /&gt;
 -Djava.rmi.server.hostname=$REMOTE_HOST_IP_ADDR -Dcom.sun.management.jmxremote.rmi.port=12345&lt;br /&gt;
Für&lt;br /&gt;
 $REMOTE_HOST_IP_ADDR&lt;br /&gt;
tragt die IP-Adresse des Hosts ein den Ihr überwacht, die Ihr beim Host unter &amp;#039;&amp;#039;&amp;#039;JMX interfaces&amp;#039;&amp;#039;&amp;#039;, NICHT die des Zabbix-Servers. NICHT 127.0.0.1 und auch NICHT 0.0.0.0&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Danke an &amp;#039;&amp;#039;&amp;#039;Roman S.&amp;#039;&amp;#039;&amp;#039; für die Lösung!&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Kommentare==&lt;br /&gt;
&amp;lt;comments /&amp;gt;&lt;/div&gt;</summary>
		<author><name>BLinz</name></author>
	</entry>
</feed>