Visualization

MuninにTomcatプラグインを追加して監視する方法

Muninにtomcat用のプラグインを設定して監視してみました。

以下のような環境に設定してみました。
CentOS
Tomcat 7.0.42

JVMのメモリー使用量がわかるのは大変ありがたいですね。
munin-tomcat

こちらの環境だけかもしれませんが、若干ハマリポイントがありましたので、そちらも説明したいと思います。

Tomcatの設定

TOMCAT_HOME/conf/tomcat-users.xmlにmunin用の監視ユーザーを追加します。

[text]
<role rolename="manager-status" />
<user username="munin" password="munin" roles="manager-status"/>
[/text]

Tomcatを再起動しておきます。

TomcatのStatusのXMLが取得できるか確認

curlコマンドを使いました。

[text]
curl --user munin:munin http://localhost:8080/manager/status?XML=true
[/text]

XML文章が出力されればOKです。

MuninにTomcatプラグインのインストール

シンボリックリンクを設定します。

[bash]
ln -s /usr/share/munin/plugins/tomcat_access /etc/munin/plugins/
ln -s /usr/share/munin/plugins/tomcat_jvm /etc/munin/plugins/
ln -s /usr/share/munin/plugins/tomcat_threads /etc/munin/plugins/
ln -s /usr/share/munin/plugins/tomcat_volume /etc/munin/plugins/
[/bash]

MuninのTomcatプラグインの設定

設定ファイルを作成します。

[bash]
# vim /etc/munin/plugin-conf.d/tomcat
[/bash]

以下の内容を入力します。
環境に合わせて内容を変更してください。
今回は監視コネクタにはajpを設定しています。

[text highlight="7"]
env.host localhost
env.port 8080
env.request /manager/status?XML=true
env.user munin
env.password munin
env.timeout 30
env.connector "ajp-bio-8009"
[/text]

ハマったのは、ハイライトした7行目の設定です。
JVM値は取得できたのですが、他の値がすべて取得できませんでした・・・。
でステータスXMLをテキストエディタで開いてみると、コネクタ名が""でくくられていることがわかりました・・・。
これもしかしたら、server.xmlの設定なのかな・・・。

その他

ajpの場合だけかもしれませんが、threadsが取得できませんでした・・・。
/usr/share/munin/plugins/tomcat_threadsで

[perl]
if($xml->{'connector'}->{$CONNECTOR}->{'threadInfo'}->[0]->{'currentThreadsBusy'} &&
$xml->{'connector'}->{$CONNECTOR}->{'threadInfo'}->[0]->{'currentThreadCount'}) {
[/perl]

というif文があり、xmlのcurrentThreadsBusyの値が0なんですよね。httpコネクタの方は1だったんですけどね。
現在処理しているスレッド数みたいな感じなんですかね。ajpの場合は0固定なのかな、わかんないっす。
すいません。if文書き換えました。

[perl]
if($xml->{'connector'}->{$CONNECTOR}->{'threadInfo'}->[0]->{'currentThreadCount'}) {
[/perl]

ダメな修正かもしれません。

参考までに、ステータスXMLは以下のようになります。

[xml]
<?xml version='1.0' encoding='utf-8'?>
<status>
<jvm>
<memory free="143752760" total="248381440" max="467927040">
<memorypool name="PS Eden Space" type="Heap memory" usageinit="8323072" usagecommitted="152174592" usagemax="153812992" usageused="28415272">
</memorypool>
<memorypool name="PS Old Gen" type="Heap memory" usageinit="21954560" usagecommitted="85131264" usagemax="350945280" usageused="74098144">
</memorypool>
<memorypool name="PS Survivor Space" type="Heap memory" usageinit="1310720" usagecommitted="11075584" usagemax="11075584" usageused="2115264">
</memorypool>
<memorypool name="Code Cache" type="Non-heap memory" usageinit="2555904" usagecommitted="7995392" usagemax="50331648" usageused="7811520">
</memorypool>
<memorypool name="PS Perm Gen" type="Non-heap memory" usageinit="21757952" usagecommitted="85983232" usagemax="85983232" usageused="66393808">
</memorypool>
</memory>
</jvm>
<connector name='"ajp-bio-8009"'>
<threadinfo maxthreads="200" currentthreadcount="10" currentthreadsbusy="0">
<requestinfo maxtime="6103" processingtime="36809" requestcount="2933" errorcount="22" bytesreceived="51728" bytessent="8091945">
<workers>
<worker stage="R" requestprocessingtime="0" requestbytessent="0" requestbytesreceived="0" remoteaddr="?" virtualhost="?" method="?" currenturi="?" currentquerystring="?" protocol="?">
</worker>
<worker stage="R" requestprocessingtime="0" requestbytessent="0" requestbytesreceived="0" remoteaddr="?" virtualhost="?" method="?" currenturi="?" currentquerystring="?" protocol="?">
</worker>
<worker stage="R" requestprocessingtime="0" requestbytessent="0" requestbytesreceived="0" remoteaddr="?" virtualhost="?" method="?" currenturi="?" currentquerystring="?" protocol="?">
</worker>
<worker stage="R" requestprocessingtime="0" requestbytessent="0" requestbytesreceived="0" remoteaddr="?" virtualhost="?" method="?" currenturi="?" currentquerystring="?" protocol="?">
</worker>
<worker stage="R" requestprocessingtime="0" requestbytessent="0" requestbytesreceived="0" remoteaddr="?" virtualhost="?" method="?" currenturi="?" currentquerystring="?" protocol="?">
</worker>
<worker stage="R" requestprocessingtime="0" requestbytessent="0" requestbytesreceived="0" remoteaddr="?" virtualhost="?" method="?" currenturi="?" currentquerystring="?" protocol="?">
</worker>
<worker stage="R" requestprocessingtime="0" requestbytessent="0" requestbytesreceived="0" remoteaddr="?" virtualhost="?" method="?" currenturi="?" currentquerystring="?" protocol="?">
</worker>
<worker stage="R" requestprocessingtime="0" requestbytessent="0" requestbytesreceived="0" remoteaddr="?" virtualhost="?" method="?" currenturi="?" currentquerystring="?" protocol="?">
</worker>
<worker stage="R" requestprocessingtime="0" requestbytessent="0" requestbytesreceived="0" remoteaddr="?" virtualhost="?" method="?" currenturi="?" currentquerystring="?" protocol="?">
</worker>
<worker stage="R" requestprocessingtime="0" requestbytessent="0" requestbytesreceived="0" remoteaddr="?" virtualhost="?" method="?" currenturi="?" currentquerystring="?" protocol="?">
</worker>
<worker stage="R" requestprocessingtime="0" requestbytessent="0" requestbytesreceived="0" remoteaddr="?" virtualhost="?" method="?" currenturi="?" currentquerystring="?" protocol="?">
</worker>
<worker stage="R" requestprocessingtime="0" requestbytessent="0" requestbytesreceived="0" remoteaddr="?" virtualhost="?" method="?" currenturi="?" currentquerystring="?" protocol="?">
</worker>
<worker stage="R" requestprocessingtime="0" requestbytessent="0" requestbytesreceived="0" remoteaddr="?" virtualhost="?" method="?" currenturi="?" currentquerystring="?" protocol="?">
</worker>
<worker stage="R" requestprocessingtime="0" requestbytessent="0" requestbytesreceived="0" remoteaddr="?" virtualhost="?" method="?" currenturi="?" currentquerystring="?" protocol="?">
</worker>
<worker stage="R" requestprocessingtime="0" requestbytessent="0" requestbytesreceived="0" remoteaddr="?" virtualhost="?" method="?" currenturi="?" currentquerystring="?" protocol="?">
</worker>
</workers>
</requestinfo>
</threadinfo>
</connector>
<connector name='"http-bio-8080"'>
<threadinfo maxthreads="200" currentthreadcount="10" currentthreadsbusy="1">
<requestinfo maxtime="30" processingtime="313" requestcount="73" errorcount="0" bytesreceived="0" bytessent="351999">
<workers>
<worker stage="S" requestprocessingtime="5" requestbytessent="0" requestbytesreceived="0" remoteaddr="127.0.0.1" virtualhost="localhost" method="GET" currenturi="/manager/status" currentquerystring="XML=true" protocol="HTTP/1.1">
</worker>
</workers>
</requestinfo>
</threadinfo>
</connector>
</status>
[/xml]

参考にさせていただいたページ

EPELリポジトリをRed Hat Enterprise Linuxで使うには
RHEL6/CentOS6でMunin 2.0.16 セットアップ&動的設定
munin で tomcat7 監視設定

-Visualization
-,

© 2024 ビー鉄のブログ Powered by AFFINGER5