JenkinsやNorikraを利用しているので、JVMに関する情報をcloudforecastを利用して記録している。これはMBeanの情報をHTTP(JSON)で返してくれるJolokiaというJVM-agentを利用して情報を取得しています。
chef-jolokia-jvm
Jolokiaを利用する機会が多くなってきたのでchefで利用するためにcookbookを書きました。内容的にはjarファイルをおいているだけです。symlinkを貼ってバージョンが変わっても固定されたpathで利用したいのでcookbookにしました。
JenkinsでJolokiaを利用する
UbuntuなどにJenkinsを導入すると/etc/default/jenkins
にJVMにオプションを与えるためにJAVA_ARGS
という設定が存在する。これにJolokiaをjavaagentとして利用するための設定を加えます。
JAVA_ARGS="-javaagent:/var/lib/jenkins/jolokia-jvm-1.2.3-agent.jar=port=8778,host=0.0.0.0"
Jenkinsを再起動して、動作を確認してください。
$ curl http://localhost:8778/jolokia/read/java.lang:type=Memory
JSONが帰ってくれば成功。cloudforecastを利用するなり、他のソフトを使うなりしてデータを取得できます。
NorikraでJolokiaを利用する
最新のNorikraのバージョンではjavaagent
オプションが加えられている。
起動時に
$ norikra start -javaagent:/opt/jolokia/jolokia-agent.jar=port=8778,host=0.0.0.0
とオプションを指定してあげれば、Jolokiaを利用できます。
まとめ
Jolokiaを利用することでJVMの状態を普段利用しているツール(cloudforecast)で可視化できるようになりました。普段見慣れているツールでJVMの状態を確認できるのはありがたいです。
なお、GCなどの命令も送れてしまうので、Jolokiaへのアクセス制限などの設定を忘れずに。