LoginSignup
9
5

More than 5 years have passed since last update.

jolokiaとhawtioでJavaアプリケーションをモニタリングする

Last updated at Posted at 2018-11-14

はじめに

jolokiaとhawtioを使用して、JavaアプリケーションのMBeanの情報等を取得してみます。

jolokiaとは

http経由でMBeanにアクセスをするためのJavaエージェントです。
httpでアクセスできるので、curlなどで簡単にMBeanの情報を採取できます。採取した情報はJSONで返ってきます。

hawtioとは

hawtioはJavaアプリケーションをモニタリング・管理することができるWebコンソールです。標準で、Tomcat、Apache Camel、Apache ActiveMQなどに対応しています。そのほかのJavaアプリケーションでもJMXで取得したMBeanやJVMの情報を表示することができます。

JMXは、hawtioがアプリケーションとJMXで通信しているわけではなく、バックエンドのjolokiaとhttp通信してMBeanの情報を採取し、画面に表示しています。
つまり、hawtioとjolokiaを組み合わせれば、リモートの様々なJavaアプリケーションにJMXでアクセスることができます。

今回はモニタリング対象のJavaアプリケーションとして、たまたまサーバに起動していたkafkaを用いて動かしてみます。

image.png

なお、手順は以下の記事を参考にしました。

play + jolokia + hawtio

jolokia

jolokiaをダウンロードする

以下のサイトからjolokiaのAgentをダウンロードします。

image.png

jolokiaを実行する

jolokiaはスタンドアローンで実行する方法と、Javaアプリケーションに組み込む方法があります。

(1) スタンドアローンでjolokiaを実行する

以下のコマンドを実行すると、Javaアプリケーションのプロセス一覧が表示されます。

# java -jar jolokia-jvm-1.6.0-agent.jar 
3906   kafka.Kafka ../config/server.properties
4229   jolokia-jvm-1.6.0-agent.jar
1039   org.apache.zookeeper.server.quorum.QuorumPeerMain /opt/kafka/config/zookeeper.properties

なお、コマンドのオプションは以下のとおりです。

Usage: java -jar jolokia-jvm-1.6.0-agent.jar [options] <command> <pid/regexp>
where <command> is one of
    start     -- Start a Jolokia agent for the process specified
    stop      -- Stop a Jolokia agent for the process specified
    status    -- Show status of an (potentially) attached agent
    toggle    -- Toggle between start/stop (default when no command is given)
    list      -- List all attachable Java processes (default when no argument is given at all)
    encrypt   -- Encrypt a password which is given as argument or read from standard input

次に、以下のように実行するとjolokiaが起動します。最後の"3906"がモニタリング対象のJavaアプリケーションのプロセスIDになります。
実行後に画面に表示されている「http://127.0.0.1:8778/jolokia/ 」がjolokiaへのアクセス先になります。
jolokiaの認証用のユーザIDとパスワードは「jolokia」にしています。

# java -jar jolokia-jvm-1.6.0-agent.jar --user jolokia --password jolokia start 3906
Started Jolokia for PID 3906
http://127.0.0.1:8778/jolokia/

(2) Javaアプリケーションに組み込んでjolokiaを実行する

Javaの起動オプションに以下を追加します。
「jolokia-jvm-1.6.0-agent.jar」のパスは環境に合わせて変更します。

-javaagent:./jolokia-jvm-1.6.0-agent.jar=port=8778,host=localhost

Jolokiaのバージョン確認

jolokiaにhttpでアクセスして、バージョン情報を取得してみます。

# curl http://localhost:8778/jolokia/version
{"request":{"type":"version"},"value":{"agent":"1.6.0","protocol":"7.2","config":{"listenForHttpService":"true","maxCollectionSize":"0","authIgnoreCerts":"false","agentId":"192.168.10.141-4698-5b480cf9-jvm","debug":"false","agentType":"jvm","policyLocation":"classpath:\/jolokia-access.xml","agentContext":"\/jolokia","serializeException":"false","mimeType":"text\/plain","maxDepth":"15","authMode":"basic","discoveryEnabled":"true","streaming":"true","canonicalNaming":"true","historyMaxEntries":"10","allowErrorDetails":"true","allowDnsReverseLookup":"true","realm":"jolokia","includeStackTrace":"true","maxObjects":"0","useRestrictorService":"false","debugMaxEntries":"100"},"info":{"product":"jetty","vendor":"Eclipse","version":"9.2.24.v20180105"}},"timestamp":1542198764,"status":200}[root@kafkaserver1 ~]# 

メトリクスを取得してみる

次に、jolokiaにhttpでアクセスして、メトリクスを取得してみます。

# curl http://localhost:8778/jolokia/read/java.lang:type=Memory/NonHeapMemoryUsage
{"request":{"mbean":"java.lang:type=Memory","attribute":"NonHeapMemoryUsage","type":"read"},"value":{"init":2555904,"committed":53477376,"max":-1,"used":50092648},"timestamp":1542198810,"status":200}[root@kafkaserver1 ~]# 

jolokiaを停止させる(スタンドアローンで起動していた場合)

Jolokiaを停止させる場合は以下のコマンドを実行します。

# java -jar jolokia-jvm-1.6.0-agent.jar stop 3906
Stopped Jolokia for PID 3906

hawtioを実行する

hawtioをダウンロードする

以下のサイトからhawtioのモジュールをダウンロードします。
今回は「hawtio-app-2.3.0.jar」をダウンロードしました。

image.png

hawtioを実行する

以下のコマンドでhawtioを実行します。
「--port 8090」でhawtioが使用するポートを指定しています。
※デフォルトだと8080を使用します。他のアプリケーションとかぶるので変更しました。

java -jar hawtio-app-2.3.0.jar --port 8090

hawtio: Don't cha wish your console was hawt like me!
=====================================================

hawtioのWebコンソールにアクセスする

hawtioのWebコンソールのURLは以下になります。

ブラウザで開くと以下のような画面が表示されます。

image.png

早速、jolokiaに接続してみます。

まずは、「Add connection」ボタンをクリックする。
jolokia接続情報を入力するダイアログが表示されるので、画面のように入力する。

image.png

「Test Connection」をクリックするとjolokiaのユーザIDとパスワードの入力ダイアログが表示されるので、jolokia起動時に設定した「jolokia」を入力します。

image.png

「Connected successfully」と表示されれば成功。
最後に「Add」ボタンを押下する。

image.png

Kafkaを見てみる

「Connect」ボタンを押下すると、別ウィンドウが起動します。

JMXのタブを選択すると、kafkaのMBeanの情報を見ることができます。

image.png

RuntimeでJVMのSystem Properties、スレッド、Class Histogramなどの情報を見ることができます。

image.png

image.png

image.png

image.png

参考

9
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
5