私はJMXとZabbixを使ってSpringBootアプリを何らかの方法で監視しようとしています。アプリに追加しました
-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
Zabbix jmxエージェントをサービスURL service:jmx:rmi:///jndi/rmi://hostIP:64355/jmxrmiで実行しようとするとエラーが発生します
non-jrmp server at remote endpoint
zabbix_java_gateway.log内
hostIP:64355を設定すると
Service URL must start with service:jmx:
JConsole から接続しようとすると、Zabbix の場合と同じエラーが service:jmx:rmi:///jndi/rmi://hostIP:64355/jmxrmi で発生しますが、"リモート プロセス" フィールドに hostIP:64355 を入力すると、すべて正常になります。
答え1
Zabbix は TLS 経由で RMI レジストリを処理できません。設定により-Dcom.sun.management.jmxremote.registry.ssl=false
、-Dcom.sun.management.jmxremote.ssl=true
現在のバージョンの Zabbix で可能な最大限の暗号化が実現されます。