Mule ESB の jvm のメモリやスレッドを、Zabbix で監視する

Mule ESB の JVM のメモリやスレッドの状態を Zabbix で監視する。

方法

Zabbix の JMX ブリッジ、 zapcat を使う。
Zapcat JMX Zabbix Bridge How To

zabcatのダウンロード URL
ソース、jar、サンプル一式を入手できる。

Mule ESB への組み込み

Mule ESB で、zapcat を使うには、Spring Bean として、組み込めばOK.
ポート番号がデフォルト(10052) 以外に指定できるように、簡単な、ラッパークラスを作った。

package com.systemsekkei.monitoring.mule.jmx ;

import org.kjkoster.zapcat.Agent;
import org.kjkoster.zapcat.zabbix.ZabbixAgent;

import static org.kjkoster.zapcat.zabbix.ZabbixAgent.DEFAULT_PORT ;
import static org.kjkoster.zapcat.zabbix.ZabbixAgent.PORT_PROPERTY ;

public class ZabbixAgentBean
{
    private Integer port = DEFAULT_PORT;

    public void startZabbixAgent()
    { 
        System.getProperties().put( PORT_PROPERTY, port.toString() ) ;
        Agent agent = new ZabbixAgent();
    }

    public void setPort( Integer port )
    {
        this.port = port ;
    }
}

Mule の config ファイルの設定


	
		
			10053
			
	

jar の配置

Mule のユーザライブラリの配置場所 ( MULE_HOME/lib/user ) に、zapcat-1.2.jar と、上記の自作クラスをコンパイルして、jar にしたものを配置する。

起動

これで Mule を起動すれば、Zabbix での Mule ESB の JVM のメモリやスレッドの様子を監視できるようになる。

起動時のログメッセージに注意。

設定がおかしかったり、うまく起動しない場合は、起動時のログに何か、出力されている。

Zabbix サーバーを使わずに、簡単にテスト

telnet HOST 指定したポート番号

で、接続できればOK。

telnet 接続して、

jmx[java.lang:type=Runtime][VmVersion]

とか、zabbix のキー文字列を送れば、

ZBXD19.0-b09
ホストとの接続が切断されました。

という感じの応答がかえる。