JMX経由でTomcatのメモリ使用率などの取得方法について

Apache Tomcat/8.0.8
Zabbix 2.2.1

現在ZabbixからJMX経由で、Tomcat・Javaの値を取得しています。
Javaのヒープメモリ・CPU使用状況やスレッド数、Tomcatのスレッドプールの状態は取得できています。
現在は、Javaのヒープメモリ・CPU使用状況やスレッド数を取得していますが、
実際には、Tomcat自身のメモリ・CPU使用状況を取得したいと考えています。

JMX経由でTomcat自身のメモリ・CPU使用状況を取得する方法がありましたら、ご教授いただけないでしょうか。

JMX経由で取得できない場合、今思いつく限りだと、( 1)のやつとか無理やりですが…)
1)top -b -p `ps -ef | grep tomcat | grep -v grep | awk '{ print $2}'` -n 1| tail -2 | head -1 でtomcatの行だけ取得。
2) 1)の結果からメモリ・CPU使用率を取り出す。

上記をエージェントが実行して、Zabbixサーバに結果を投げるようにしないと思うのですが、
こういうやり方(コマンド結果からメモリ・CPU使用率を取得)でしか実現できないでしょうか。

よろしくお願い致します。

コメント表示オプション

お好みのコメント表示方法を選び「設定の保存」をクリックすると変更が反映されます。
ユーザー KAZ の写真

kasugaiさん


JMX経由でTomcat自身のメモリ・CPU使用状況を取得する方法がありましたら、ご教授いただけないでしょうか。

一応確認ですが…
TomcatはjavaVMの上で動くサーブレットコンテナで、使っているのはjavaheapではないかと…
psコマンドで見えるのは、Tomcatを動かしているjavaVMのメモリやcpu使用状況じゃないかと…

JMXはjavaVM上の管理をするものなので、OS上の情報は見えないんじゃないかなと思うのですが…A(^^;


上記をエージェントが実行して、Zabbixサーバに結果を投げるようにしないと思うのですが、
こういうやり方(コマンド結果からメモリ・CPU使用率を取得)でしか実現できないでしょうか。

javaのメモリやCPU使用状況とるには正しいんじゃないでしょうか?

KAZさん
回答いただきありがとうございます。

>一応確認ですが…
>TomcatはjavaVMの上で動くサーブレットコンテナで、使っているのはjavaheapではないかと…
>psコマンドで見えるのは、Tomcatを動かしているjavaVMのメモリやcpu使用状況じゃないかと…
>
>JMXはjavaVM上の管理をするものなので、OS上の情報は見えないんじゃないかなと思うのですが…A(^^;

Tomcatとかの知識が乏しくてすみません。
Tomcat自身のメモリなどの状態を取れないかと思ったのですが、JVM経由やコマンドでも無理そうですね。
勉強になりました。ありがとうございます。

ユーザー KAZ の写真

kasugaiさん

「Tomcat自身のメモリ」ですが、TomcatはサーブレットコンテナなのでjavaVM上でTomcat+javaアプリがjava heapやpermanent heapに展開されます。
切り分けること難しいです。A(^^;

なのでメモリの監視となれば…

・JMXからはjava heapを監視
・OS上ではjavaVM使用メモリを監視

以上を監視すればよいのでは…

尚、↓Zabbixエージェントのこれすっかり忘れてました。A(^^;
OS上のメモリ監視はこれ使って下さい。
proc.mem[<name>,<user>,<mode>,<cmdline>]

↓マニュアルです。

https://www.zabbix.com/documentation/jp/1.8/manual/config/items