久しぶりにjava。
prometheus/jmx_exporterを使って、おれおれjar(主にstandaloneサーバ)を監視する場合についてまとめておきます。
jmx_exporterを使って、tomcat/jetty等のサーブレットコンテナなどを監視する方法はよくあるのですが、おれおれjarについてはあまりやっている人が少なそうなので。。
環境は、
OS:CentOS7
JDK:OpenJDK8
でやってます。
前提として、$HOMEに以下が配備されているものとします。
- jmx_prometheus_javaagent-0.3.1.jar
- config.yml
- your.jar
上記の場合、jmx_exporterを使っての監視するためのコマンドは以下となります。(先に結論)
$ java \ -javaagent:${HOME}/jmx_prometheus_javaagent-0.3.1.jar=9080:${HOME}/config.yaml \ -Djava.rmi.useLocalHostName=true \ -Djava.rmi.server.hostname=127.0.0.1 \ -Dcom.sun.management.jmxremote.port=1099 \ -Dcom.sun.management.jmxremote.authenticate=false \ -Dcom.sun.management.jmxremote.ssl=false \ -Dcom.sun.management.jmxremote.rmi.port=1099 \ -jar ${HOME}/your.jar
ちなみに、config.ymlの内容は以下のとおりです。
--- hostPort: 127.0.0.1:1099 username: password: rules: - pattern: ".*"
設定内容は、
javaオプションで1099ポートでjmxリスナーを上げて、
javaagent設定を食わしたjmx_exporterにjmxにて1099ポートへアクセスさせる、
というものです。
これにて、
$ curl -s localhost:9080/metrics
で、jmx_exporterから情報が引き出せます。
以上
コメントがあればどうぞ