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ゲートウェイはJMXから値を取得し、サーバーまたはプロキシに返します。 そのため、Javaゲートウェイは値をキャッシュしません。
Zabbixサーバーまたはプロキシには、Javaゲートウェイに接続する専用のプロセスがあります。このプロセス数はStartJavaPollersオプションで制御します。
Javaゲートウェイは内部で複数のスレッドを起動します。スレッド数はSTART_POLLERSオプションで制御します。
サーバー側では、接続に「Timeout」秒を超える時間がかかると接続が終了しますが、JavaゲートウェイはJMXカウンターからの値の取得処理を続けている場合があります。
これを解決するため、JavaゲートウェイにはTIMEOUTオプションが用意されており、JMXネットワーク操作のタイムアウトを設定できます。
関連項目:
Zabbixサーバーまたはプロキシは、可能な限り複数の要求を単一のJMXターゲットにまとめて処理しようとします(アイテムの間隔の影響を受けます)。これらは、より高いパフォーマンスのために単一の接続でJavaゲートウェイに送信されます。
StartJavaPollers は START_POLLERS 以下に設定することを推奨します。そうしないと、Javaゲートウェイで受信要求を処理するためのスレッドが利用できない状況が発生する可能性があります。
そのような場合、Javaゲートウェイは ThreadPoolExecutor.CallerRunsPolicy を使用します。つまり、メインスレッドが受信要求を処理し、一時的に新しい要求を受け付けなくなります。
Zabbix JavaゲートウェイでWildflyベースのJavaアプリケーションを監視する場合は、Wildfly download page で入手できる最新の jboss-client.jar をインストールしてください。