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 - 投稿数: 1085
kasugaiさん
JMX経由でTomcat自身のメモリ・CPU使用状況を取得する方法がありましたら、ご教授いただけないでしょうか。
一応確認ですが…
TomcatはjavaVMの上で動くサーブレットコンテナで、使っているのはjavaheapではないかと…
psコマンドで見えるのは、Tomcatを動かしているjavaVMのメモリやcpu使用状況じゃないかと…
JMXはjavaVM上の管理をするものなので、OS上の情報は見えないんじゃないかなと思うのですが…A(^^;
上記をエージェントが実行して、Zabbixサーバに結果を投げるようにしないと思うのですが、
こういうやり方(コマンド結果からメモリ・CPU使用率を取得)でしか実現できないでしょうか。
javaのメモリやCPU使用状況とるには正しいんじゃないでしょうか?
kasugai - 投稿数: 72
KAZさん
回答いただきありがとうございます。
>一応確認ですが…
>TomcatはjavaVMの上で動くサーブレットコンテナで、使っているのはjavaheapではないかと…
>psコマンドで見えるのは、Tomcatを動かしているjavaVMのメモリやcpu使用状況じゃないかと…
>
>JMXはjavaVM上の管理をするものなので、OS上の情報は見えないんじゃないかなと思うのですが…A(^^;
Tomcatとかの知識が乏しくてすみません。
Tomcat自身のメモリなどの状態を取れないかと思ったのですが、JVM経由やコマンドでも無理そうですね。
勉強になりました。ありがとうございます。
KAZ - 投稿数: 1085
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