ども、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/elasticsearchES_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 の場合)