Pocket

Zabbix 2.0 で JMX監視(Tomcat7)を行う方法

  • add this entry to hatena bookmark

Zabbix 2.0 で ネイティブサポートになったJMX監視を使って、Tomcat 7 の監視を行う際の手順を記載します。この方法を使うと、Tomcatに限らず、JavaアプリケーションをZabbixで容易に監視できるようになります。

はじめに

今回の環境は、Zabbix 2.0.5 を使って、監視対象Javaアプリケーションである Tomcat 7.0.39 の監視を行います。

Zabbix 2.0 からは、Zabbix Java Gateway という形で JMX監視が組み込まれました。Zabbix 1.xまではJMX監視を行う際はZapcat などが使われていたようですが、Zabbix 2.0 からはZabbixで用意されている仕組みだけでJMXを使ったJavaアプリケーションの監視が出来るようになります。

今回は、Zabbix Server と JMX監視を担当する Zabbix Java Gateway を同じマシンで稼働させます。

zabbix_jmx_20130512

なお、以降の手順は、以下のような順番で進めます。

  1. Tomcat 7.0 をリモートからJMXで監視できるように設定する
  2. Zabbix 2.0.5 で JMXが使えるようにインストールする
  3. Zabbix Java Gateway の設定を行う
  4. Zabbix Server で Zabbix Java Gateway を認識させる
  5. Zabbix 画面から、JMXを使ったアイテム設定を行う

1.Tomcat 7.0 をリモートからJMXで監視できるように設定する

Tomcat 7.0 を JMXを使ってリモートから監視できるように設定します。

http://tomcat.apache.org/tomcat-7.0-doc/monitoring.html や、jconsole(JMX) で Tomcat 7.0.39 のJavaVM 監視を簡易的に行う方法 を参考にしながら、以下の設定を行います。

まず、リモートからJMXで監視が出来るように、/usr/local/tomcat/bin/setenv.sh を以下の内容で作成します。

#!/bin/sh
export CATALINA_OPTS="-Dcom.sun.management.jmxremote=true
                      -Dcom.sun.management.jmxremote.port=10080
                      -Djava.rmi.server.hostname=192.168.1.1
                      -Dcom.sun.management.jmxremote.ssl=false
                      -Dcom.sun.management.jmxremote.authenticate=false"

jmxremote.port や hostname は、環境に合わせて設定してください。なお、hostnameの箇所は、そのサーバでのhostsファイルの内容によっては不要になります。また、今回は簡易的に進める為、認証は行わない設定で記載しています。

この後、Tomcatを再起動すると、設定が反映されます。

2.Zabbix 2.0.5 で JMXが使えるようにインストールする

Zabbix 2.0.5 のインストール時に「–enable-java」オプションを有効にします。なお、このオプションを有効にする場合は、javac が入っている必要があります。私の環境ではopenjdk を使っているので、以下のように javac と Zabbix をインストールしました。ご参考までに。

# yum install java-1.7.0-openjdk-devel
# cd /usr/local/src/zabbix-2.0.5
# ./configure --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --enable-java
# make clean (Zabbixは再インストールなので、clean しています。)
# make
# make install

以上で、Zabbix 2.0.5 でJMXが使えるようになります(Zabbix Java Gateway がインストールされます)。

3.Zabbix Java Gateway の設定を行う

Zabbix Java Gateway が デフォルトでは /usr/local/sbin/zabbix_java/ にインストールされます。

# ls -1 /usr/local/sbin/zabbix_java/
bin
lib
settings.sh
shutdown.sh
startup.sh
#

この中にある「settings.sh」で、Zabbix Java Gateway の設定を行います。

LISTEN_IP="192.168.1.1"
LISTEN_PORT=10052
START_POLLERS=2

今回の前提環境の場合は、Defaultの設定で問題なさそうですが、明示的に指定しています。設定を行った後、同じ場所にある「startup.sh」で Zabbix Java Gateway を起動します。

# /usr/local/sbin/zabbix_java/startup.sh
# ps -awef|grep zabbix-java-gateway | grep -v grep
root     25460     1  3 19:19 pts/0    00:00:00 java -server -classpath lib:lib/logback-classic-0.9.27.jar:lib/logback-core-0.9.27.jar:lib/org-json-2010-12-28.jar:lib/slf4j-api-1.6.1.jar:bin/zabbix-java-gateway-2.0.5.jar -Dzabbix.pidFile=/tmp/zabbix_java.pid -Dzabbix.listenIP=192.168.1.1 -Dzabbix.listenPort=10052 -Dzabbix.startPollers=2 com.zabbix.gateway.JavaGateway
#

デフォルトでログファイルが /tmp/zabbix_java.log にありますので、起動時に問題がないかログを確認しておきます。
以上で、Zabbix Java Gateway の設定と起動が完了です。

4.Zabbix Server で Zabbix Java Gateway を認識させる

次に、Zabbix Java Gateway を Zabbix Server に認識させます。

/usr/local/etc/zabbix_server.conf で以下の設定を入れます。

### Option: JavaGateway
#       IP address (or hostname) of Zabbix Java gateway.
#       Only required if Java pollers are started.
JavaGateway=192.168.1.1

### Option: JavaGatewayPort
#       Port that Zabbix Java gateway listens on.
JavaGatewayPort=10052

### Option: StartJavaPollers
#       Number of pre-forked instances of Java pollers.
StartJavaPollers=2

その後、Zabbix Server を再起動します。
デフォルトでログファイルが /tmp/zabbix_server.log にありますので、起動時に問題がないかログを確認しておきます。

以上で、バックエンド側としてのZabbix基盤設定は終了です。

5.Zabbix 画面から、JMXを使ったアイテム設定を行う

次にZabbixのWeb管理画面から、Tomcat7 をJMXで監視する為のアイテムを登録します。

まずは、監視対象マシンのホスト設定画面で「JMX interfaces」を設定します。

jmx-interfaces

次に、アイテム設定を行います。

サンプルとして、HeapMemory 使用量と、ThreadPoolのcurrentThreadCount を設定する場合のキーを以下に記載しています。

HeapMemory使用量 jmx
ThreadPool currentThreadCount jmx[“Catalina:type=ThreadPool,name=\”http-bio-8080\””,currentThreadCount]

Tomcat 7 では、MBeansの値やキーの設定値が変わったようです。jconsole の MBeans タブなどを参照しながら設定を行うとやりやすいと思います。

参考URL

Pocket

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*

チェックサイト RSS Feed読者登録はいかがでしょうか?RSS配信中です。