Zabbix 2.0では、「Zabbix Javaゲートウェイ」と呼ばれる新たなZabbixデーモンを導入することによって、JMXアプリケーションの監視のネイティブサポートが追加になりました。 Zabbix Java ゲートウェイは、Javaで書かれたデーモンです。Zabbixサーバがホスト上の特定のJMXのカウンタの値を取得したいとき、サーバは、対象のアプリケーションにリモートで問合せを行えるJMX管理APIを使用するZabbix Javaゲートウェイに問合せます。アプリケーションは追加でソフトウェアをインストールする必要はなく、ただコマンドライン上でDcom.sun.management.jmxremote
オプションで開始するだけです。
Zabbix Java ゲートウェイは、Zabbixサーバまたはプロキシからの接続を許可しており、「パッシブプロキシ」としてのみ使用可能です。Zabbixプロキシとは対照的に、Zabbixプロキシからも使用できます。(Zabbixプロキシは変更できません) それぞれのZabbix Javaゲートウェイへのアクセスは、Zabbixサーバ内またはプロキシの設定ファイル内で直接設定され、1つのZabbixサーバまたはZabbixプロキシに対して1つだけ、Zabbix Java ゲートウェイが設定できます。ホストにJMXエージェントタイプのアイテムや、他のタイプのアイテムがある場合は、JMXエージェントアイテムだけがZabbix Java ゲートウェイに引き渡されます。
Zabbix Javaゲートウェイ越しにアイテムを更新しなければならないときは、Zabbix サーバまたはZabbixプロキシは、Zabbix Java ゲートウェイに接続して値を要求します。Zabbix Java ゲートウェイがその値を順番に取得してサーバまたはプロキシに返します。 そういうものなので、Zabbix Java ゲートウェイはどの値もキャッシュしません。
Zabbix サーバまたはZabbix プロキシは、Zabbix Java ゲートウェイに接続する特定のプロセスイプで、StartJavaPollers オプションで制御されます。内部では、Zabbix Java ゲートウェイは、START_POLLERSオプションによって制御される複数のスレッドを開始します。 サーバサイドで、接続の時間がTimeoutの時間よりも長くかかる場合は、スレッドは終了されますが、Zabbix Java ゲートウェイは、JMXカウンタからの値の取得のためにビジーのままになる場合があります。
Zabbix サーバ またはZabbixプロキシは、よりよいパフォーマンスを得るために、要求を1つのJMXターゲットにできるだけ多く(アイテムの間隔に影響されます)まとめ、Zabbix Java ゲートウェイに対して1回の接続で送信しようとします。
StartJavaPollersは、START_POLLERSよりは少ないか、同じぐらいで持つことが推奨されています。そうしないと、入ってくる要求に対して、Zabbix Java ゲートウェイ中のいずれのスレッドも稼働できない場合があり得ます。
以下のセクションでは、JMX監視にZabbix Java ゲートウェイに使用するための、Zabbix Java ゲートウェイの取得と動作のさせ方、Zabbix サーバ(または Zabbix プロキシ)の設定方法、特定のJMXカウンタに対応するZabbix GUI内のZabbixアイテムの設定方法について解説します。
Zabbix Java ゲートウェイを取得するには、2つの方法があります。1つはZabbix のウェブサイトからZabbix Java ゲートウェイのパッケージをダウンロードする方法、もう1つは、ソースからコンパイルする方法です。
このオプションは、実際はまだ有効ではないのですが、 将来Zabbix のウェブサイトから、Zabbix Java ゲートウェイのアーカイブをダウンロードできるようになります。
Zabbix Java ゲートウェイをコンパイルするには、最初に ./configure
のスクリプトを--enable-java
オプションを付けて実行します。インストール先のパスとしてデフォルトの /usr/local 以外にする--prefix
オプションを指定可能であることを憶えておいてください。なぜなら、Zabbix Java ゲートウェイをインストールすると、1つの実行可能なディレクトリだけでなく、ディレクトリツリー全体が作成されるからです。
コンパイルを実行してZabbix Java ゲートウェイを1つのJARファイルにパッケージングするために、makeを実行します。このステップのために、あなたのパスでjavac
とjar
を実行可能な状態にしておく必要があることに注意してください。
これで、zabbix-java-gateway-$VERSION.jarファイルが、src/zabbix_java/bin に作成されます。Zabbix Java ゲートウェイを、ディストリビューション・ディレクトリ内の src/zabbix_java から実行できたら、 Zabbix Java ゲートウェイの設定と 実行の説明に進みます。もし実行できない場合は、実行の権利を持っているかどうかを確認してから、make install
を実行してください。
$ make install
あなたがどのような方法でZabbix Java ゲートウェイを取得したかには関係なく、$PREFIX/sbin/zabbix_java 配下のシェルスクリプト、JAR、設定ファイルの収集で終了させなければなりません。これらのファイルの役割を以下に要約します。
bin/zabbix-java-gateway-$VERSION.jar
Zabbix Java ゲートウェイの JARファイルです。
lib/logback-core-0.9.27.jar
lib/logback-classic-0.9.27.jar
lib/slf4j-api-1.6.1.jar
lib/org-json-2010-12-28.jar
Zabbix Java ゲートウェイと依存関係のあるもの:Logback、SLF4J、および JSON.org のライブラリ
Logbackの設定ファイルです。
Zabbix Java ゲートウェイを開始したり停止するのに便利なスクリプトです。
上記の起動とシャットダウンのスクリプトのソースの設定ファイルです。
Zabbix Java ゲートウェイは、デフォルトではポート番号 10052をLISTENしています。 異なるポート上でZabbix Java ゲートウェイを実行することを計画している場合は、settings.sh スクリプトで指定可能です。この指定方法や他のオプションについては、Zabbix Java ゲートウェイの設定ファイルの解説を参照してください。
<note warning>ポート10052はIANAに登録されていません。 :::
設定ができたら、startup スクリプトを実行してZabbix Java ゲートウェイを開始することができます:
同様に、もうZabbix Java ゲートウェイが必要なければ、shutdownスクリプトを実行して停止します:
サーバやプロキシとは違って、Javaゲートウェイは軽量で、データベースが不要であることを憶えておいてください。
Zabbix Java ゲートウェイが動作するようになったら、Zabbixサーバに Zabbix Java ゲートウェイの場所を知らせる必要があります。そのためには、サーバ設定ファイルで、JavaGatewayパラメータとJavaGatewayPortパラメータを指定します。JMXアプリケーションが動作しているホストをZabbixプロキシで監視している場合は、かわりにプロキシ設定ファイルに接続パラメータを指定します。
サーバは、デフォルトでは、JMX監視に関連するどのプロセスも開始しません。しかしそのプロセスを使用したい場合は、Java Poller のpre-forkされたインスタンスの番号を指定する必要があります。これは、通常のPollerやtrapperの指定と同じ方法で指定します。
いったんこれらの設定を完了したら、サーバまたはプロキシをリスタートすることを忘れないでください。
Zabbix Java ゲートウェイに何らかの障害がある場合や、フロントエンドのアイテムに関して表示されたエラーメッセージの説明が十分でない場合、Zabbix Java ゲートウェイのログファイルを調べたいと思われるかもしれません。 デフォルトでは、Zabbix Java ゲートウェイは、/tmp/zabbix_java.log ファイルに「情報」レベルの活動のログを残していますが、たまにその情報が十分ではなくて、「デバッグ」レベルの情報が必要になる場合があります。ロギングのレベルを上げるためには、lib/logback.xml ファイルを編集し、<root>タグのレベル属性を"debug"に変更します。
Zabbixサーバやプロキシと違って、logback.xmlの変更後にZabbix Java ゲートウェイを再スタートする必要はありません - logback.xml 内の変更は自動的に再実行されます。デバッグを完了したら、ロギングのレベルを「情報」に戻すことができます。
別のファイルまたはデータベースのように完全に異なるメディアにログを残したい場合は、 logback.xml ファイルを必要にあわせて調整します。詳細はLogbackのマニュアルを参照してください。
たまに、デバッグ目的で、デーモンとしてよりコンソールアプリケーションのようにZabbix Java ゲートウェイを開始すると便利な場合があります。それを行うためには、settings.sh スクリプト内の PID_FILE 変数をコメントアウトします。PID_FILEが省略されている場合は、startup.sh スクリプトは Zabbix Java ゲートウェイをコンソールアプリケーションとして開始し、Logbackにlib/logback-console.xmlファイルを使用させます。それはコンソールにログを残すだけでなく、ロギングレベル「デバッグ」を有効にもします。
最後に、Zabbix Java ゲートウェイは、ログをとるのにSLF4Jを使用しているので、適切なJARファイルをlibディレクトリ内に配置することによって、Logbackを、あたなが選択したフレームワークに置き換えることが可能であることを憶えておいてください。詳細は SLF4Jのマニュアル を参照してください。
本ページは2014/08/05時点の原文を基にしておりますので、内容は必ずしも最新のものとは限りません。
最新の情報は、英語版のZabbix2.2マニュアルを参照してください。