Zabbix 2.4でJVMの監視を設定してみたメモです

JMXの監視をZabbixに統合するにはZabbix Java gatewayを利用します

公式ドキュメントでは、インストール手順について「5 Java gateway」に、JMXによるJavaアプリケーションの監視設定について「14 JMX monitoring」に記述されています

Java gatewayは2.0から導入された機能で、JMXをネイティブに監視することが可能です。
監視対象のJavaのアプリケーションとしてTomcatを用意してJMXを設定し、ZabbixのHostsに追加するところまでまとめてみます

以下のように、Zabbixサーバーおよびフロントエンドがインストール済みの環境にJavaゲートウェイを追加するように構成してみます
Zabbixサーバー、フロントエンドとエージェントのインストールと設定方法については前回の記事「Zabbix 2.4 サーバー/エージェントをUbuntu 14.04にインストール」を参照ください
zabbix_java_gateway

各サーバーのOSはUbuntu 14.04を、確認用のJVMアプリはTomcat 7を利用しました

Javaゲートウェイをパッケージインストール

今回は、Zabbixサーバーと同じマシンにJavaゲートウェイをインストールするので、リポジトリはすでに追加済みですが、Zabbix サーバーとは別のマシンにJavaゲートウェイをインストールする場合は、以下の手順でリポジトリを追加します

$ wget http://repo.zabbix.com/zabbix/2.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_2.4-1+trusty_all.deb
$ sudo dpkg -i zabbix-release_2.4-1+trusty_all.deb
$ sudo apt-get update

Zabbix Javaゲートウェイをパッケージインストールします

$ sudo apt-get install zabbix-java-gateway

Zabbixサーバーの設定

Zabbixサーバーに、Javaゲートウェイの設定を追加する必要があります
JavaGatewayJavaGatewayPortのコメントを外し、以下のように値を設定します

JavaGateway=127.0.0.1
JavaGatewayPort=10052

設定を変更したら再起動して反映します

$ sudo service zabbix-server restart

Tomcatをインストール

監視対象のTomcat 7をパッケージインストールします

$ sudo apt-get update
$ sudo apt-get install tomcat7

参考
How To Install Apache Tomcat 7 on Ubuntu 14.04 via Apt-Get

Tomcatの起動オプションでJMXを有効にする

JavaゲートウェイからJMXへアクセスするには、以下のJavaの起動オプションを追加してTomcatを起動します

-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=12345 \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false \
-Djava.rmi.server.hostname=192.168.33.20 \

JavaゲートウェイからリモートのJMXにアクセスするにはjava.rmi.server.hostnameをつかする必要があります

Tomcatの場合は、catalina.shにCATALINA_OPTSにセットします

CATALINA_OPTS="-Dcom.sun.management.jmxremote \
              -Dcom.sun.management.jmxremote.port=12345 \
              -Dcom.sun.management.jmxremote.authenticate=false \
              -Dcom.sun.management.jmxremote.ssl=false \
              -Djava.rmi.server.hostname=192.168.33.20"

Tomcatを再起動してJMXを有効にします。

$ sudo service tomcat7 restart

Javaゲートウェイの設定

[Configurations] > [Hosts]を開き[Create Host]をクリックし[Configuration of Hosts]を表示します

zabbix_configuration_of_hosts_host_tab_add_jmx_interface
以下のように設定
[Host name]: Tomcat 01
[Groups] > [In groups]: Linux Servers
[JMX interfaces] > [IP addresss]: 192.168.33.20

[Templates]タブを開きます
zabbix_configuration_of_hosts_templates_tab_link_jmx_template
“Template JMX Generic”テンプレートをリンクして[Add]ボタンをクリックして保存します

2つ目のTomcatサーバーについても同様の手順で追加します

[Host name]: Tomcat 02
[Groups] > [In groups]: Linux Servers
[JMX interfaces] > [IP addresss]: 192.168.33.30

設定の確認

設定が正しくされているか確認します

ホストのステータス
[Monitoring] > [Triggers]を開き、[Group] “Linux Servers”を選択
“Tomcat 01″と”Tomcat 02″のステータス異常が表示されていないことを確認します
zabbix_java_gateway_host_status
疎通できない場合、問題「Tomcat 01 is not reachable」が表示されます

メモリープールのグラフ
[Monitoring] > [Graphs]を開き、[Group] “Linux Servers”、[Hosts] “Tomcat 01”, [Graph] “Memory Pool CMS Old Gen”を選択するとメモリープールのグラフを確認することができます
zabbix_java_gateway_graph_memory_pool_cms_old_gen
Tomcatはデフォルトでは、Javaの実行オプションに-XX:+UseConcMarkSweepGCが指定されているので”CMS Old Gen”の方を参照します
つまり、この場合、実際の運用では”PS Old Gen”の方のアイテムは不要です