É possível monitorar o uso de JVM do Elasticsearch via Munin?

1

Eu gostaria de usar Munin para monitorar o status da JVM usada pelo Elasticsearch, que é executado via Java (saída de ps follows):

elastic+  1083     1  3 09:29 ?        00:13:23 /usr/bin/java -Xms8g -Xmx8g -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -XX:+DisableExplicitGC -Dfile.encoding=UTF-8 -Djna.nosys=true -Des.path.home=/usr/share/elasticsearch -cp /usr/share/elasticsearch/lib/elasticsearch-2.1.0.jar:/usr/share/elasticsearch/lib/* org.elasticsearch.bootstrap.Elasticsearch start -d -p /var/run/elasticsearch/elasticsearch.pid --default.path.home=/usr/share/elasticsearch --default.path.logs=/var/log/elasticsearch --default.path.data=/var/lib/elasticsearch --default.path.conf=/etc/elasticsearch

Existem vários plugins Munin para Java ; no entanto,

  • os jstat__* requerem a execução do programa via JSVC, o que, até onde eu sei, requer modificações no código fonte:

    Requirements: You need to execute your Java program under jsvc provided by http://jakarta.apache.org/commons/daemon/ which enables you to run your Java program with specified pid file with -pidfile option.

  • os jmx_* requerem que o processo Java exponha a interface remota do JMX, o que é feito passando parâmetros específicos para o binário Java:

    For Java process to be monitored, it must expose JMX remote interface. With Java 1.5 it can be done by adding parameters as: -Dcom.sun.management.jmxremote.port=<PORT> -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false

Na verdade, os plugins existentes do Elasticsearch para Munin ignoram completamente a JVM e obtêm seus dados via JSON na porta 9200.

Então, como isso pode ser feito através da JVM? Se isso não for possível, também estou interessado em outras soluções gratuitas para monitorar o Elasticsearch.

    
por dr01 10.02.2016 / 16:56

1 resposta

1

Se você estiver interessado apenas nas estatísticas da própria JVM (e não no Elasticsearch), tente usar o agente SNMP integrado da JVM - um tutorial do OpenNMS deve ajudar.

O JMX também pode operar no modo local; o cliente deve estar executando sob a mesma conta de usuário que a JVM. jmxterm é capaz deste (veja o que faz ) , mas aparentemente a ferramenta jmxquery do Munin não é.

    
por 14.02.2016 / 19:46