Muninインストール、起動まで成功。
さて、いざメモリ監視と思ったらPC全体のメモリしか表示されないので
目的のWebアプリケーションがどれだけメモリを使ってるのかなんて
さっぱりだ。
このままではいかん、ということで指定したTomcatのメモリを監視してくれる
プラグインを入れることにした。
jstat__heap pluginってやつだ。
まずはプラグインをダウンロード。
http://exchange.munin-monitoring.org/plugins/jstat__heap/details
/usr/share/munin/plugins/ に入れて、/etc/munin/plugins/に
シンボリックリンクを貼る。
# ln -s /usr/share/munin/plugins/jstat__heap plugin /etc/munin/plugins/jstat__heap plugin
んで、プラグインの設定をする。
まずこのプラグインを使うにはTomcatをjsvcで起動する必要があるので
jsvcをインストールする。
Tomcatのbin/の下に、commons-daemon-native.tar.gzがあるので解凍する。
# tar -xzf commons-daemon-native.tar.gz
# cd 1.0.2-native-src/unix
autoconfを利用してconfigureスクリプトを作成。
# autoconf
configureを実行。/xxx/jdk は任意のJAVA_HOMEディレクトリ。
# ./configure --with-java=/xxx/jdk
make実行。
# make clean
# make
makeの前にmake cleanしないと、
ar : libservice.a : Malformed archive
とか言って怒られる。バグだ。
さらに、configureに --with-java=/xxx/jdk とか入れないと
error:jni.h そのようなファイルやディレクトリはありません
とか言って怒られる。
これだけやってもまだ怒られた。
Cannot dynamically link to /xxx/xxx/xxx/libjvm.so
Cannot restore segment prot after reloc: Permission denied.
SELinuxがセキュリティーの問題でライブラリをロードできないように
しているからだそうだ。
しらねーよー・・・
解除してやる。
# chcon -c -v -R -u system_u -r object_r -t textrel_shlib_t /xxx/xxx/xxx/libjvm.so
コンパイルが通ったら、jsvcというファイルができているので
所有者をtomcatユーザにしてTomcat/bin に移動する。
# chown tomcat:tomcat jsvc
# mv -f jsvc /opt/tomcat6/bin
次はjsvcの起動スクリプトを作成する。
# vi /etc/rc.d/init.d/jsvc
スクリプトの中身。
スクリプトの作成が終わったら、ファイルに実行権限を付与。
# chmod 755 /etc/init.d/jsvc
起動してみる。
# /etc/init.d/jsvc start
これでjsvcの設定は完了。
jstat__heap pluginの設定に戻る。
# vi Tomcat/conf/server.xml
して、監視したいWebアプリのHostName の設定を探して
<Alias>の設定をする。
設定したエイリアスの名前を、プラグインのファイル名に入れる。
# mv /etc/munin/plugins/jstat__heap /etc/munin/plugins/jstat_localhost_heap
プラグインの実行権限をrootに設定する。
# vi /etc/munin/plugin-conf.d/munin-node
以下を追加。
[jstat*]
user root
プラグインの実行権限を設定していないとmuninのログに
cat: /var/run/jsvc.pid : Permission denied.
が出力される。
ちなみに、/etc/munin/plugins.conf はダミーなのでキニシナイ。
・・・なんで設定ファイルが二つもあるんだ?
紛らわしい。
試しに実行してみる。
# /etc/munin/plugins/jstat_localhost_heap
メモリの値が取れれば成功。
Muninに設定を読み込ませる。
# /etc/init.d/munin-node restart
Muninのプラグインのインストール状況を確認する。
# munin-node-configure -suggest
jstatがyesになっていることを確認。
これで、よーーーーーーやく、メモリ監視ができる!
と喜んだのも束の間。
グラフの単位が[by a day]しかないっ!
もっと細かい監視がしたいんだよ!!!
分単位のさあ!
続く。
さて、いざメモリ監視と思ったらPC全体のメモリしか表示されないので
目的のWebアプリケーションがどれだけメモリを使ってるのかなんて
さっぱりだ。
このままではいかん、ということで指定したTomcatのメモリを監視してくれる
プラグインを入れることにした。
jstat__heap pluginってやつだ。
まずはプラグインをダウンロード。
http://exchange.munin-monitoring.org/plugins/jstat__heap/details
/usr/share/munin/plugins/ に入れて、/etc/munin/plugins/に
シンボリックリンクを貼る。
# ln -s /usr/share/munin/plugins/jstat__heap plugin /etc/munin/plugins/jstat__heap plugin
んで、プラグインの設定をする。
まずこのプラグインを使うにはTomcatをjsvcで起動する必要があるので
jsvcをインストールする。
Tomcatのbin/の下に、commons-daemon-native.tar.gzがあるので解凍する。
# tar -xzf commons-daemon-native.tar.gz
# cd 1.0.2-native-src/unix
autoconfを利用してconfigureスクリプトを作成。
# autoconf
configureを実行。/xxx/jdk は任意のJAVA_HOMEディレクトリ。
# ./configure --with-java=/xxx/jdk
make実行。
# make clean
# make
makeの前にmake cleanしないと、
ar : libservice.a : Malformed archive
とか言って怒られる。バグだ。
さらに、configureに --with-java=/xxx/jdk とか入れないと
error:jni.h そのようなファイルやディレクトリはありません
とか言って怒られる。
これだけやってもまだ怒られた。
Cannot dynamically link to /xxx/xxx/xxx/libjvm.so
Cannot restore segment prot after reloc: Permission denied.
SELinuxがセキュリティーの問題でライブラリをロードできないように
しているからだそうだ。
しらねーよー・・・
解除してやる。
# chcon -c -v -R -u system_u -r object_r -t textrel_shlib_t /xxx/xxx/xxx/libjvm.so
コンパイルが通ったら、jsvcというファイルができているので
所有者をtomcatユーザにしてTomcat/bin に移動する。
# chown tomcat:tomcat jsvc
# mv -f jsvc /opt/tomcat6/bin
次はjsvcの起動スクリプトを作成する。
# vi /etc/rc.d/init.d/jsvc
スクリプトの中身。
#!/bin/sh # # chkconfig: - 80 20 # description: jsvc # Source function library. . /etc/init.d/functions JAVA_HOME=/usr/java/jdk1.6.0_11 CATALINA_HOME=/opt/tomcat6 TOMCAT_USER=tomcat TMP_DIR=/tmp CATALINA_OPTS= CLASSPATH=\ $JAVA_HOME/lib/tools.jar:\ $CATALINA_HOME/bin/commons-daemon.jar:\ $CATALINA_HOME/bin/bootstrap.jar PIDFILE=/var/run/tomcat.pid LOCKFILE=/var/lock/subsys/tomcat DAEMON=$CATALINA_HOME/bin/jsvc start(){ # # Start Tomcat # echo -n "Starting jsvc: " $DAEMON \ -pidfile $PIDFILE \ -user $TOMCAT_USER \ -home $JAVA_HOME \ -Dcatalina.home=$CATALINA_HOME \ -Djava.io.tmpdir=$TMP_DIR \ -outfile $CATALINA_HOME/logs/catalina.out \ -errfile '&1' \ $CATALINA_OPTS \ -cp $CLASSPATH \ org.apache.catalina.startup.Bootstrap # # To get a verbose JVM #-verbose \ # To get a debug of jsvc. #-debug \ RETVAL=$? if [ $RETVAL = 0 ]; then echo_success touch $LOCKFILE else echo_failure fi echo } stop(){ # # Stop Tomcat # echo -n "Shutting down jsvc: " $DAEMON \ -stop \ -pidfile $PIDFILE \ org.apache.catalina.startup.Bootstrap RETVAL=$? if [ $RETVAL = 0 ]; then echo_success rm -f $PIDFILE $LOCKFILE else echo_failure fi echo } case "" in start) start ;; stop) stop ;; restart) stop start ;; status) status $DAEMON RETVAL=$? ;; *) echo $"Usage: jsvc {start|stop|restart|status}" exit 1 ;; esac
スクリプトの作成が終わったら、ファイルに実行権限を付与。
# chmod 755 /etc/init.d/jsvc
起動してみる。
# /etc/init.d/jsvc start
これでjsvcの設定は完了。
jstat__heap pluginの設定に戻る。
# vi Tomcat/conf/server.xml
して、監視したいWebアプリのHostName の設定を探して
<Alias>の設定をする。
<Host name="localhost" >
<Context path="xxxx" ... />
<Alias>localhost</Alias>
</Host>
設定したエイリアスの名前を、プラグインのファイル名に入れる。
# mv /etc/munin/plugins/jstat__heap /etc/munin/plugins/jstat_localhost_heap
プラグインの実行権限をrootに設定する。
# vi /etc/munin/plugin-conf.d/munin-node
以下を追加。
[jstat*]
user root
プラグインの実行権限を設定していないとmuninのログに
cat: /var/run/jsvc.pid : Permission denied.
が出力される。
ちなみに、/etc/munin/plugins.conf はダミーなのでキニシナイ。
・・・なんで設定ファイルが二つもあるんだ?
紛らわしい。
試しに実行してみる。
# /etc/munin/plugins/jstat_localhost_heap
メモリの値が取れれば成功。
Muninに設定を読み込ませる。
# /etc/init.d/munin-node restart
Muninのプラグインのインストール状況を確認する。
# munin-node-configure -suggest
jstatがyesになっていることを確認。
これで、よーーーーーーやく、メモリ監視ができる!
と喜んだのも束の間。
グラフの単位が[by a day]しかないっ!
もっと細かい監視がしたいんだよ!!!
分単位のさあ!
続く。