JMXアプリケーションを監視するためのネイティブ サポートは、"Zabbix Javaゲートウェイ"と呼ばれる Zabbixデーモン形式で存在し、Zabbix2.0 以降で利用可能になりました。Zabbix Javaゲートウェイは、Javaで書かれたデーモンです。 ホスト上の特定のJMXカウンター値を見つけるために、ZabbixサーバーはZabbix Javaゲートウェイでクエリを実行します。Zabbix Javaゲートウェイは、JMX管理APIを使用して対象のアプリケーションへリモートでクエリを実行します。アプリケーションに追加のソフトウェアをインストールする必要はありません。コマンド ラインで-Dcom.sun.management.jmxremote
オプションを使用して起動するだけです。
Javaゲートウェイは、Zabbixサーバーまたはプロキシからの着信接続を受け入れ、"パッシブプロキシ"としてのみ使用できます。 Zabbixプロキシとは違い、Zabbixプロキシからも使用できます (Zabbixプロキシはzabbixプロキシにチェーンできません)。各Javaゲートウェイへのアクセスは、Zabbixサーバーまたはプロキシ設定ファイルで直接設定されるため、Zabbixサーバーまたは Zabbixプロキシごとに設定できるJavaゲートウェイは1つだけです。ホストにJMXエージェントタイプのアイテムとその他のタイプのアイテムがある場合、JMXエージェントアイテムのみが取得のためにJavaゲートウェイに渡されます。
Javaゲートウェイ経由でアイテムを更新する必要がある場合、ZabbixサーバーまたはプロキシはJavaゲートウェイに接続して値を要求し、Javaゲートウェイはその値を取得してサーバーまたはプロキシに返します。そのため、Javaゲートウェイは値をキャッシュしません。
Zabbixサーバーまたはプロキシには、オプションStartJavaPollersによって制御される、Javaゲートウェイに接続する特定のタイプのプロセスがあります。内部的には、JavaゲートウェイはSTART_POLLERSオプションによって制御される複数のスレッドを開始します。 サーバー側では、接続にTimeout秒以上かかると終了しますが、JavaゲートウェイはJMXカウンターから値を取得するためにまだビジーである可能性があります。これを解決するために、JavaゲートウェイにはTIMEOUTオプションがあり、JMXネットワーク操作のタイムアウトを設定できます。
Zabbixサーバーまたはプロキシはパフォーマンスを向上させるために、単一の JMX ターゲットへのリクエストを可能な限りプールし (項目間隔の影響を受けます)、それらを単一の接続でJavaゲートウェイに送信しようとします。
StartJavaPollersをSTART_POLLERS以下にすることをお勧めします。そうしないと、受信リクエストを処理するために、Javaゲートウェイでスレッドが利用できない状況が発生する可能性があります。 このような場合、JavaゲートウェイはThreadPoolExecutor.CallerRunsPolicyを使用します。これは、メイン スレッドが受信リクエストを処理し、一時的に新しいリクエストを受け入れないことを意味します。
Zabbix Javaゲートウェイを使用してWildflyベースのJavaアプリケーションを監視しようとしている場合は、Wildflyのダウンロードページで入手可能な最新のjboss-client.jarをインストールしてください。
Zabbix Webサイトからダウンロードしたソースまたはパッケージから Javaゲートウェイをインストールできます。
以下のリンクを使用すると、Zabbix Javaゲートウェイを取得して実行する方法、JMX監視にZabbix Javaゲートウェイを使用するように Zabbixサーバー(またはZabbixプロキシ)を設定する方法、および特定のJMXカウンターに対応するZabbix WebインターフェースでZabbixアイテムを設定する方法に関する情報にアクセスできます。