Wildfly コンテナイメージから JMX を使ってメトリクスを取得する

今回は Wildfly のコンテナイメージから JMX を使ってメトリクスを取得してみます.
コンテナなのに JMX!?なんで Prometheus とか使わないの!?というツッコミはご容赦ください…

カスタムの Wildfly のイメージ作成

FROM jboss/wildfly
 
ADD target/demoapi-0.0.1-SNAPSHOT.war /opt/jboss/wildfly/standalone/deployments/
RUN /opt/jboss/wildfly/bin/add-user.sh admin1234 Password1! --silent
CMD ["/opt/jboss/wildfly/bin/standalone.sh", "-b", "0.0.0.0", "-bmanagement", "0.0.0.0"]

RUN/CMD を記述します.

 

jconsole.sh を持って来る

どうもクライアントで使用する jconsole のバージョンと Wildfly のバージョンが一致していないとダメなようだったので、Docker イメージの中から jconsole.sh を持ってきます.

コンテナ内の作業
関連モジュールを tar.gz で固めます.

$ pwd
/opt/jboss/wildfly

$ tar -zcvf bin.tar.gz bin

$ ls
LICENSE.txt  bin            docs               modules
README.txt   bin.tar.gz     domain             standalone
appclient    copyright.txt  jboss-modules.jar  welcome-content

 
クライアントの作業

$ docker cp <コンテナID>:/opt/jboss/wildfly/bin.tar.gz bin.tar.gz

コピー後、tar.gz を解凍してください

 

jconsole で接続する

解凍した jconsole のパスに移動し、jconsole.sh を実行します.

$ cd path/to/bin
$ ./jconsole.sh

 
service:jmx:remote+http://localhost:9990 に接続します.

メトリクスが取得できています.

 

以上です.