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ツールはそうではありません。