This is a translation of the original English documentation page. Help us make it better.

5 Zabbix Javaゲートウェイ

概要

JMX アプリケーションを監視するためのネイティブ サポートは、"Zabbix Java ゲートウェイ"と呼ばれる Zabbix デーモン形式で存在し、Zabbix 2.0 以降で利用可能になりました。 Zabbix Java ゲートウェイは、Java で書かれたデーモンです。 ホスト上の特定の JMX カウンター値を見つけるために、Zabbix サーバーは Zabbix Java ゲートウェイでクエリを実行します。Zabbix Java ゲートウェイは、JMX 管理 API を使用して対象のアプリケーションへリモートでクエリを実行します。 アプリケーションに追加のソフトウェアをインストールする必要はありません。コマンド ラインで-Dcom.sun.management.jmxremoteオプションを使用して起動するだけです。

Java ゲートウェイは、Zabbix サーバーまたはプロキシからの着信接続を受け入れ、"パッシブ プロキシ"としてのみ使用できます。 Zabbix プロキシとは違い、Zabbixプロキシからも使用できます。(Zabbix プロキシはzabbixプロキシにチェーンできません) 各 Java ゲートウェイへのアクセスは、Zabbix サーバーまたはプロキシ設定ファイルで直接設定されるため、Zabbix サーバーまたは Zabbix プロキシごとに設定できる Java ゲートウェイは 1 つだけです。 ホストに JMX エージェント タイプのアイテムとその他のタイプのアイテムがある場合、JMX エージェント アイテムのみが取得のために Java ゲートウェイに渡されます。

Java ゲートウェイ経由でアイテムを更新する必要がある場合、Zabbix サーバーまたはプロキシは Java ゲートウェイに接続して値を要求し、Java ゲートウェイはその値を取得してサーバーまたはプロキシに返します。 そのため、Java ゲートウェイは値をキャッシュしません。

Zabbix サーバーまたはプロキシには、オプション *StartJavaPollers によって制御される、Java ゲートウェイに接続する特定のタイプのプロセスがあります。 内部的には、Java ゲートウェイは START_POLLERS オプション によって制御される複数のスレッドを開始します。 サーバー側では、接続に Timeout 秒以上かかると終了しますが、Java ゲートウェイは JMX カウンターから値を取得するためにまだビジーである可能性があります。 これを解決するために、Java ゲートウェイには TIMEOUT** オプションがあり、JMX ネットワーク操作のタイムアウトを設定できます。

Zabbix サーバーまたはプロキシは、単一の JMX ターゲットへのリクエストを可能な限りプールし (項目間隔の影響を受けます)、パフォーマンスを向上させるためにそれらを単一の接続で Java ゲートウェイに送信しようとします。

StartJavaPollersSTART_POLLERS 以下にすることをお勧めします。そうしないと、Java ゲートウェイで着信要求を処理するスレッドを使用できない状況が発生する可能性があります。 このような場合、Java ゲートウェイは ThreadPoolExecutor.CallerRunsPolicy を使用します。これは、メイン スレッドが着信要求を処理し、一時的に新しい要求を受け入れないことを意味します。

When an item has to be updated over Java gateway, Zabbix server or proxy will connect to the Java gateway and request the value, which Java gateway in turn retrieves and passes back to the server or proxy. As such, Java gateway does not cache any values.

Zabbix server or proxy has a specific type of processes that connect to Java gateway, controlled by the option StartJavaPollers. Internally, Java gateway starts multiple threads, controlled by the START_POLLERS option. On the server side, if a connection takes more than Timeout seconds, it will be terminated, but Java gateway might still be busy retrieving value from the JMX counter. To solve this, there is the TIMEOUT option in Java gateway that allows to set timeout for JMX network operations.

Zabbix server or proxy will try to pool requests to a single JMX target together as much as possible (affected by item intervals) and send them to the Java gateway in a single connection for better performance.

It is suggested to have StartJavaPollers less than or equal to START_POLLERS, otherwise there might be situations when no threads are available in the Java gateway to service incoming requests; in such a case Java gateway uses ThreadPoolExecutor.CallerRunsPolicy, meaning that the main thread will service the incoming request and temporarilylabel will not accept any new requests.

If you are trying to monitor Wildfly-based Java applications with Zabbix Java gateway, please install the latest jboss-client.jar available on the Wildfly download page.

Java ゲートウェイの取得

Zabbix Web サイト からダウンロードしたソースまたはパッケージから Java ゲートウェイをインストールできます。

以下のリンクを使用すると、Zabbix Java ゲートウェイを取得して実行する方法、JMX 監視に Zabbix Java ゲートウェイを使用するように Zabbix サーバー(または Zabbix プロキシ)を設定する方法、および特定の JMX カウンターに対応する Zabbix フロントエンドで Zabbix アイテムを設定する方法に関する情報にアクセスできます。

インストール元 手順 手順
ソース インストール セットアップ
RHEL/CentOS パッケージ インストール セットアップ
Debian/Ubuntu パッケージ インストール セットアップ