ども、cloudpack の かっぱ (@inokara) です。
はじめに
Jolokia という JMX のメトリクス情報を HTTP 経由で取得出来るツールがあるのは知っていたけど Elasticsearch に組み込んで使う方法をちょっと調べたのでメモ。Jolokia を Elasticsearch に組み込む意味があるかどうかは解らない( Marvel とかでメトリクス見えるので)けど、Java のアプリケーションの内部情報監視を検討する際にはユーティリティとして Jolokia は覚えておきたい。
memo
Jolokia を取得
$ sudo mkdir /opt/jolokia $ cd /opt/jolokia $ sudo wget http://labs.consol.de/maven/repository/org/jolokia/jolokia-jvm/1.2.3/jolokia-jvm-1.2.3-agent.jar
Elasticsearch に組み込む
「組み込む」という言い方が正しいかは解らないけど…/etc/sysconfig/elasticsearch
を以下のように修正。
$ diff -u /path/to/elasticsearch /etc/sysconfig/elasticsearch --- /path/to/elasticsearch 2015-01-20 00:16:11.103331354 +0000 +++ /etc/sysconfig/elasticsearch 2015-01-20 00:16:18.787496614 +0000 @@ -12,6 +12,7 @@ # Additional Java OPTS #ES_JAVA_OPTS= +ES_JAVA_OPTS="$JVM_OPTS -javaagent:/opt/jolokia/jolokia-jvm-1.2.3-agent.jar=port=8778,host=127.0.0.1" # Maximum number of open files MAX_OPEN_FILES=65535
/etc/sysconfig/elasticsearch
に ES_JAVA_OPTS
を上記のように設定したら Elasticsearch を再起動。
sudo service elasticsearch restart
Elasticsearch が起動すると以下のように Jolokia も起動したことが判る。
$ sudo service elasticsearch restart Stopping elasticsearch: [ OK ] Starting elasticsearch: [ OK ] $ I> No access restrictor found, access to all MBean is allowed Jolokia: Agent started with URL http://127.0.0.1:8778/jolokia/
一応、念のために確認。
$ curl -s http://127.0.0.1:8778/jolokia/read/java.lang:type=Memory/HeapMemoryUsage/ | jq . { "timestamp": 1421715682, "status": 200, "request": { "mbean": "java.lang:type=Memory", "attribute": "HeapMemoryUsage", "type": "read" }, "value": { "max": 1065025536, "committed": 259719168, "init": 268435456, "used": 63725608 } }
とりあえず…
メモでした。
元記事はこちらです。
「Elasticsearch に Jolokia を組み込むメモ(Amazon Linux の場合)」