jolokiaとhawtioでJavaアプリケーションをモニタリングする
はじめに
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を用いて動かしてみます。
なお、手順は以下の記事を参考にしました。
jolokia
jolokiaをダウンロードする
以下のサイトからjolokiaのAgentをダウンロードします。
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」をダウンロードしました。
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は以下になります。
ブラウザで開くと以下のような画面が表示されます。
早速、jolokiaに接続してみます。
まずは、「Add connection」ボタンをクリックする。
jolokia接続情報を入力するダイアログが表示されるので、画面のように入力する。
「Test Connection」をクリックするとjolokiaのユーザIDとパスワードの入力ダイアログが表示されるので、jolokia起動時に設定した「jolokia」を入力します。
「Connected successfully」と表示されれば成功。
最後に「Add」ボタンを押下する。
Kafkaを見てみる
「Connect」ボタンを押下すると、別ウィンドウが起動します。
JMXのタブを選択すると、kafkaのMBeanの情報を見ることができます。
RuntimeでJVMのSystem Properties、スレッド、Class Histogramなどの情報を見ることができます。
参考
Author And Source
この問題について(jolokiaとhawtioでJavaアプリケーションをモニタリングする), 我々は、より多くの情報をここで見つけました https://qiita.com/mkyz08/items/26bd92b10012f9a909de著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .