Zabbix2.0でJavaアプリケーションの監視

2012年4月13日(金)
池田 大輔

4. Hadoopの各Javaアプリケーションの起動オプション設定

Zabbixからの監視を有効にするためにはJavaアプリケーションの起動時に以下のシステムプロパティの設定が必要となります。

追加設定すべきプロパティ

  com.sun.management.jmxremote
  com.sun.management.jmxremote.port
  com.sun.management.jmxremote.authenticate
  com.sun.management.jmxremote.ssl

Hadoopであれば、conf/hadoop-env.shにそれぞれのJavaアプリケーションの起動オプション設定項目があるかと思います(Hadoop ver.1.0.1で確認済み)。このファイル内で上記オプション項目を追加します。

例えば、HadoopのNameNodeの起動オプションの場合、以下のように設定を行います。

  export HADOOP_NAMENODE_OPTS="-Dcom.sun.management.jmxremote=true  
  -Dcom.sun.management.jmxremote.authenticate=false
  -Dcom.sun.management.jmxremote.ssl=false
  -Dcom.sun.management.jmxremote.port=10080 $HADOOP_NAMENODE_OPTS"

このオプション設定のもとHadoopを起動すると、10080ポートでNameNode用JVMの状況が監視可能になります。

また、上記設定では認証を無効にしていますが、認証設定を有効にすることで監視をよりセキュアに行うことができます。

JMX監視を有効にすると、監視結果の値取得だけでなく、GCの実行など、JVMに対する操作も実行できてしまうため、本番運用する際には認証設定を行うなど注意が必要です。認証設定の方法はこちらのドキュメント等を参考に実施してください。
→参照:Java SE 監視および管理ガイド 第2章

5. JMX監視用プロセス稼働ポートのFW開放設定

次に、リモートから監視可能にするため、Hadoopが稼働しているサーバーのFWのポートを開放します。

Zabbix Java Gatewayの稼働しているサーバーからアクセスできるよう設定する必要があります(上記システムプロパティ設定の場合、10080/TCPポートの開放が必要)。

6. ZabbixにJMX監視用アイテム登録

1~5まで設定ができた状態で、Zabbix Serverの管理画面にログインします。

JMX監視用のアイテムを登録するには、まず、Javaアプリケーションが稼働しているホストの登録を行います。この時、JMX監視を実行できるように、JMX監視用インタフェースの登録を行います。

ホスト登録完了後、JMX監視を行うアイテムを登録します。アイテム登録は以下の情報で行います。

  • ホストインタフェース : JMX監視用インタフェース
  • タイプ : JMXエージェント
  • キー : jmx[オブジェクトネーム,アトリビュートネーム]
  • ユーザー名 : JMX監視用Java起動オプションで認証設定を行った場合は、その認証ユーザー名(認証無効の場合は空にする)
  • パスワード : 上記ユーザーのパスワード(認証無効の場合は空にする)
  • データ型 : キーで指定した属性の値に合わせて選択

上記以外の項目は要件に合わせて設定してください。

アイテムのキー設定の一例として、Hadoop NameNodeのヒープメモリ使用量を監視する設定のキーを紹介します。

  jmx["Hadoop:service=NameNode,name=jvm",memHeapUsedM]

これで、NameNodeのヒープメモリ使用量(MB単位)を監視することが可能になります。

キーの引数として指定するオブジェクトネームやアトリビュートネームは、Javaアプリケーション毎に異なるため、個別に確認が必要です。確認作業には、jconsoleを活用します。

jconsoleはJDKに同梱されているツールの1つです。JDKをインストール後、Windowsであればjconsole.exeを、Linuxであればjconsoleコマンドを実行します。

図4:jconsoleログイン画面

jconsoleで監視対象のJavaアプリケーションにアクセスします。

MBeanタブを選択すると、監視可能な項目を確認することができます。この画面で、監視したい項目のオブジェクトネームとアトリビュートネームを確認することができます。

図5:MBean画面(クリックで拡大)

jconsole上で監視されている項目とZabbixのJMX監視結果を比較すると、同じ値が取得できていることがわかります。

図6:JMX監視結果比較(クリックで拡大)

まとめ

第1回の今回は、Zabbix2.0の新機能の紹介として、マルチインタフェース監視機能とZabbix Java Gateway機能をご紹介しました。今までのZabbixでは少し手の届かなかったことがバージョンアップすることでできるようになっています。

次回は、大規模環境の監視を行う際に、より管理負荷を低減させることができるZabbix2.0での新機能についてご紹介したいと思います。

TIS株式会社

Twitter : @ike_dai
TIS株式会社OSS推進室所属。社内向けシステムの保守運用業務を経験後、クラウド時代の効率的な統合運用管理をテーマに活動中。特に、OSSを駆使した運用のエコシステム実現を目指し、Zabbix,fluentd,Serverspec,Ansibleなどの導入や検証に取り組む。技術検証成果などを技術ブログ『Tech-Sketch』にて発信中。著書:『Zabbix統合監視徹底活用 - 複雑化・大規模化するインフラの一元管理』

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています