このページで

Javaゲートウェイ

概要

Zabbix Javaゲートウェイは、ソースコードまたはパッケージからインストールできます。

JMXアプリケーションの監視は、「Zabbix Javaゲートウェイ」と呼ばれるZabbixデーモンによってネイティブにサポートされています。 Zabbix Javaゲートウェイは、Javaで記述されたデーモンです。 ホスト上の特定のJMXカウンターの値を取得するために、ZabbixサーバーはZabbix Javaゲートウェイに問い合わせます。Zabbix Javaゲートウェイは、JMX管理APIを使用して、対象のアプリケーションにリモートで問い合わせます。 アプリケーションに追加のソフトウェアをインストールする必要はありません。コマンドラインで-Dcom.sun.management.jmxremoteオプションを指定して起動するだけです。

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

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

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

関連情報:

Zabbixサーバーまたはプロキシは、可能な限り複数の要求を単一のJMXターゲットにまとめて処理しようとします(アイテムの間隔の影響を受けます)。これらは、より高いパフォーマンスのために単一の接続でJavaゲートウェイに送信されます。

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

Zabbix JavaゲートウェイでWildflyベースのJavaアプリケーションを監視する場合は、Wildfly download page で入手できる最新の jboss-client.jar をインストールしてください。