このページで

Javaゲートウェイ

概要

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

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

Java gatewayはZabbix サーバーまたはプロキシからの受信接続を受け付け、「passive proxy」としてのみ使用できます。 Zabbix プロキシとは異なり、Zabbix プロキシからも使用できます(Zabbix プロキシを連結することはできません)。 各Java gatewayへのアクセスは、Zabbix サーバーまたはプロキシの設定ファイルで直接構成されるため、Zabbix サーバーまたはZabbix プロキシごとに設定できるJava gatewayは1つだけです。 ホストに JMX agent タイプのアイテムと他のタイプのアイテムがある場合、Java gatewayに渡されて取得されるのは JMX agent アイテムのみです。

アイテムを 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 をインストールしてください。