- ローカルで動作するJavaVMのステータスを採取するツールです。
- ステータス取得には、JMX(Java Management eXtentions)を利用します。
- 取得するステータスは、JSONで記述する設定ファイルで指定します。
- 採取したステータスは、LTSVフォーマットでログに出力します。
- プラグイン形式で出力先を追加でき~~ます。~~るようになる予定
- インストール媒体をダウンロードし、解凍します
- 解凍したディレクトリに移動します
- conf/monitor.json ファイルを修正し、採取情報を指定します
- 下記コマンドを実行します。 は、観測対象JavaVMのプロセスIDです
bin/latteart <pid>
- -h ヘルプメッセージを表示
- -l MBeanのObjectNameの一覧表示
- -a 取得可能な属性の一覧表示
- -c 指定したURLから設定ファイルを読み込む。ローカルファイル、HTTP(S)が利用できる(はず)
- -i MBeanを取得する間隔を秒で指定
- jsonフォーマットの設定ファイルです
- 採取間隔と採取対象を指定します
- C++ や Java スタイルのコメントが使えます( /* */、// など)
- シェルスクリプトスタイル(行の先頭に #)も使えます
{
"queries" : [
// Memory Pool
{
"query" : "java.lang:type=MemoryPool,*",
"attributeNames" : [
"Usage"
]
}
]
}
- 採取するMBeanを指定します。
- 後述する Query Object のリストになっており、MBeanは複数指定可能です。
- 全ての情報は、一つのファイルにまとめて出力されます。
- queries の子属性です。
- 対象MBeanのObjectNameと採取する属性を指定します
- query、attributes の2つの属性を持ちます
- JMXのObjectNameフォーマットでクエリーを指定します
- 詳細は、こちら
- 採取する情報の属性を文字列のリストで指定します
-
プロセスID はどうやって調べるといいのかな?
JDK に標準で付属する jpsコマンドを使うとローカルで稼働しているJavaVMのプロセスID一覧が取得できます。
-
JMXの属性はどうやって調べるといいのかな?
JDK に標準で付属する jconsoleというGUIツールを使うと JMXのツリーにアクセスできます。-
-l で取得可能なMBeanのObjectName一覧が表示できるようになりました。
-
-a objectName で取得可能な属性一覧が表示できるようになりました。
-
-
ファイルの出力先を変えたい。
etc/logback.groovy で出力先を指定できます
-
MBean毎に採取間隔を変えたい。
Bean毎にmonitor.json を用意し、MBean毎に LatteArt を起動します。 読込む monitor.json は、-c オプションを使って指定します。このとき、ファイル名は URL形式で指定します。
latteart -c file:///etc/monitor-memory.json 1234