Ich versuche, meine SpringBoot-App mit JMX und Zabbix zu überwachen. Ich habe meiner App hinzugefügt
-Dcom.sun.management.jmxremote.password.file= path to jmx.password
-Dcom.sun.management.jmxremote.access.file=path to jmx.access
-Dcom.sun.management.jmxremote
-Djava.rmi.server.hostname=host ip
-Dcom.sun.management.jmxremote.port=64355
-Dcom.sun.management.jmxremote.rmi.port=64355
-Dcom.sun.management.jmxremote.authenticate=true
-Dcom.sun.management.jmxremote.ssl=true
-Dcom.sun.management.jmxremote.ssl.need.client.auth=true
-Dcom.sun.management.jmxremote.registry.ssl=true
-Djavax.net.ssl.keyStore="path to keystore"
-Djavax.net.ssl.keyStorePassword=keystore password
-Djavax.net.ssl.trustStore="path to truststore"
-Djavax.net.ssl.trustStorePassword=truststore password
Wenn ich versuche, den Zabbix jmx-Agenten mit der Service-URL service:jmx:rmi:///jndi/rmi://hostIP:64355/jmxrmi auszuführen, tritt ein Fehler auf
non-jrmp server at remote endpoint
in zabbix_java_gateway.log
Wenn ich hostIP:64355 einstelle, habe ich
Service URL must start with service:jmx:
Wenn ich versuche, eine Verbindung von JConsole herzustellen, erhalte ich den gleichen Fehler mit service:jmx:rmi:///jndi/rmi://hostIP:64355/jmxrmi wie in Zabbix, aber wenn ich hostIP:64355 in das Feld „Remote Process“ eingebe, ist alles in Ordnung
Antwort1
Zabbix kann das RMI-Register nicht über TLS verarbeiten. Die Einstellung -Dcom.sun.management.jmxremote.registry.ssl=false
sollte -Dcom.sun.management.jmxremote.ssl=true
mit den aktuellen Versionen von Zabbix die größtmögliche Verschlüsselung erreichen.