5 Zabbix 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 サーバーまたはプロキシからの受信接続を受け付け、「パッシブプロキシ」としてのみ使用できます。 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 をインストールしてください。