Я пишу конфигурацию для collectd для чтения данных из защищенного порта JMX SSL / TLS.
Я настроил что-то вроде этого (упрощенно):
LoadPlugin java
<Plugin "java">
JVMArg "-Djava.class.path=/opt/stackdriver/collectd/share/collectd/java/collectd-api.jar:/opt/stackdriver/collectd/share/collectd/java/generic-jmx.jar"
JVMArg "-Djavax.net.ssl.trustStore=/path/to/truststore.jks"
JVMArg "-Djavax.net.ssl.trustStorePassword=testpass"
JVMArg "-Djavax.net.ssl.keyStore=/path/to/keystore.jks"
JVMArg "-Djavax.net.ssl.keyStorePassword=testpass"
LoadPlugin "org.collectd.java.GenericJMX"
<Plugin "GenericJMX">
<MBean "cassandra_storageservice-load">
ObjectName "org.apache.cassandra.metrics:type=Storage,name=Load"
<Value>
Type "gauge"
InstancePrefix "storage_service-load"
Table false
Attribute "Count"
</Value>
</MBean>
<Connection>
ServiceURL "service:jmx:rmi:///jndi/rmi://localhost:7199/jmxrmi"
InstancePrefix "cassandra"
User "cassandra"
Password "jmxpass"
Collect "cassandra_storageservice-load"
</Connection>
</Plugin>
</Plugin>
Но все, что я получаюЭто распространенная ошибка, показывающая, что клиент JMX ожидает подключения в виде открытого текста:
GenericJMXConfConnection: Creating MBean server connection failed: java.io.IOException: Failed to retrieve RMIServer stub: javax.naming.CommunicationException [Root exception is java.rmi.ConnectIOException: non-JRMP server at remote endpoint]
Когда я отключаю SSL / TLS, я могу легко подключиться к порту JMX и получить данные, но отключить его нельзя.Цель - это порт JMX узла Cassandra, и мне нужно обеспечить его безопасность, поскольку подключение к Cassandra JMX также дает некоторый контроль над кластером, и он будет доступен в частной сети.Я не хочу, чтобы тексты летали.К сожалению, мне нужно сделать это с collectd.
Можно ли вообще заставить GenericJMX использовать SSL / TLS?И если да, то как это сделать?Предоставление сертификатов, похоже, ничего не делает.