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サーバーまたはZabbixプロキシごとに1つのJavaゲートウェイのみを設定できます。ホストにJMXエージェントタイプのアイテムと他のタイプのアイテムがある場合、JMXエージェントアイテムのみがJavaゲートウェイに渡されて取得されます。
Javaゲートウェイ経由でアイテムを更新する必要がある場合、ZabbixサーバーまたはプロキシはJavaゲートウェイに接続して値を要求し、Javaゲートウェイはその値を取得してサーバーまたはプロキシに返します。そのため、Javaゲートウェイは値をキャッシュしません。
Zabbixサーバーまたはプロキシには、オプションStartJavaPollersによって制御される、Javaゲートウェイに接続する特定のタイプのプロセスがあります。内部的には、JavaゲートウェイはSTART_POLLERSオプションによって制御される複数のスレッドを開始します。 サーバー側では、接続にTimeout秒以上かかると終了しますが、JavaゲートウェイはJMXカウンターから値を取得するためにまだビジーである可能性があります。これを解決するために、JavaゲートウェイにはTIMEOUTオプションがあり、JMXネットワーク操作のタイムアウトを設定できます。
Zabbixサーバーまたはプロキシは、可能な限り多くのリクエストを1つのJMXターゲットにまとめてプールし(アイテムの間隔によって影響を受けます)、パフォーマンス向上のために1つの接続でJavaゲートウェイに送信しようとします。
StartJavaPollersはSTART_POLLERS以下に設定することを推奨します。そうしないと、Javaゲートウェイで受信リクエストを処理するスレッドが利用できない状況が発生する可能性があります。その場合、JavaゲートウェイはThreadPoolExecutor.CallerRunsPolicyを使用し、メインスレッドが受信リクエストを処理し、一時的に新しいリクエストを受け付けなくなります。
Zabbix JavaゲートウェイでWildflyベースのJavaアプリケーションを監視しようとする場合は、Wildflyダウンロードページで入手可能な最新のjboss-client.jarをインストールしてください。