Muninを使用してElasticsearchのJVM使用量を監視できますか?

Muninを使用してElasticsearchのJVM使用量を監視できますか?

Muninを使用して、Javaを介して実行されているElasticsearchで使用されているJVMの状態を監視したい(下の出力ps)。

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

持つ複数のJava用Muninプラグイン;しかし、

  • これを行うには、jstat__*JSVCを介してプログラムを実行し、私が知っている限りソースコードを変更する必要があります。

    要件:jsvcが提供する環境でJavaプログラムを実行する必要があります。 http://jakarta.apache.org/commons/daemon/ -pidfileオプションを使用してpidファイルを指定すると、Javaプログラムを実行できます。

  • これにはjmx_*JMXリモートインタフェースを公開するためのJavaプロセスが必要です。これは特定のパラメータをJavaバイナリに渡すことによって行われます。

    Javaプロセスを監視するには、JMXリモートインターフェースを公開する必要があります。 Java 1.5では、パラメータを追加してこれを実行できます。 -Dcom.sun.management.jmxremote.port=<PORT> -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false

実は、Munin用の既存のElasticsearchプラグインJVMを完全にスキップし、ポート9200でJSONを介してデータを取得します。

それでは、JVMでこれをどのように達成できますか?これが不可能な場合は、Elasticsearchを監視するための他の無料ソリューションにも興味があります。

答え1

Elasticsearch以外のJVM独自の統計にのみ興味がある場合は、JVMに組み込まれているSNMPエージェントを使用してみてください。OpenNMSのチュートリアル役に立ちます。

JMX はローカルモードでも実行できます。クライアントはJVMと同じユーザーアカウントで実行する必要があります。 jmxtermこのようなことをする能力があります。(そうすることだ)しかし、明らかにMuninのjmxqueryツールはそうではありません。

関連情報