LoginSignup
2
1

More than 5 years have passed since last update.

Wildflyをzabbix-java-gatewayで監視する

Last updated at Posted at 2017-02-23

WildflyのJVM監視はtomcatと使用するプロトコルが異なっている。
そのためソースコードに一部修正&makeする必要がある。
zabbix-serverなど全てをソースからコンパイルする方法もあるが、面倒であったり稼働中の
zabbixにJMX監視を追加する場合などを想定して、必要な部分だけコンパイル&置換して対応する。

1: Zabbixバイナリ一式のインストール

・MySQLやJavaのインストール等については通常通り
・# yum -y install zabbix-server zabbix-agent .... zabbix-java-gateway

※ZabbixServerは別サーバ稼動しており、java-gatewayのみインストールする場合、
 MySQLのインストールやyumによるzabbix-serverのインストールは不要。

2: Zabbixソースコードの入手

http://www.zabbix.com/jp/download よりソース一式ダウンロードしてtar展開する。
・# cd ***/zabbix-3.0.7/src/zabbix_java/src/com/zabbix/gateway

3: ソースコードの修正

修正対象ファイル: JMXItemChecker.java

[修正前]
url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://" + conn + ":" + port + "/jmxrmi");

[修正後]
Integer remoting = new Integer("7777");
int retval = remoting.compareTo(port);
if (retval == 0){
url = new JMXServiceURL("service:jmx:remoting-jmx://" + conn + ":" + port);
}else{
url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://" + conn + ":" + port + "/jmxrmi");
}

これは zabbix-java-gateway⇔JVM 間の通信ポートが"7777"だったら"service:jmx:remoting-jmx://~"、
それ以外の場合には従来どおり"service:jmx:rmi:///jndi/rmi://~"を使うようにする。
つまり、tomcatのJVM監視に使用するポートと別にすると共に事前にポート番号を決めておく必要がある。
※Wildfly専用のgatewayにするのであれば、if文による分岐は不要。
  →ポート番号の縛りも無くなる

4: make

・# cd ***/zabbix-3.0.7
・# ./configure --enable-java
・# make

5: ファイルの置換

yumでzabbixをインストールした場合、おそらく /usr/share/zabbix-java-gateway にインストールされている。
このディレクトリ配下をコンパイルしたものに置換する。

6: クラスライブラリのコピー

{wildflyのインストールディレクトリ)/bin/client/jboss-client.jar を
/usr/share/zabbix-java-gateway/lib にコピーする。

7: Wildfly側の設定

Wildflyのconfigファイル(standalone.xml等)を修正する。

・management-interfaceの追加
[修正前]
<management-interfaces>
<http-interface security-realm="ManagementRealm" http-upgrade-enabled="true">
<socket-binding http="management-http"/>
</http-interface>
</management-interfaces>
[修正後]
<management-interfaces>
<native-interface security-realm="ManagementRealm">
<socket-binding native="management-native"/>
</native-interface>

<http-interface security-realm="ManagementRealm" http-upgrade-enabled="true">
<socket-binding http="management-http"/>
</http-interface>
</management-interfaces>

・socket-bindingの追加
<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}"> ~ </socket-binding-group>に次の1行を追加
<socket-binding name="management-native" interface="management" port="${jboss.management.native.port:7777}"/>

8: zabbix-server側でのzabbix-java-gateway設定

/etc/zabbix/zabbix_server.conf で下記を設定
・JavaGateway= (zabbix-java-gatewayが稼動しているアドレス)
・JavaGatewayPort= (zabbix-server ⇔ zabbix-java-gateway の通信ポート)
・StartJavaPollers= (JavaPollerの数 :0以外を指定)
zabbix-serverを再起動(# systemctl restart zabbix-server)

9: zabbix-java-gatewayのservice追加

・# systemctl enable zabbix-java-gateway
・# systemctl start zabbix-java-gateway

※zabbix_java_gateway.logに "The protocol 'remoting-jmx' is deprecated, instead you should use 'remote'."とwarningメッセージが出るが、バグなので無視してOKとのこと。

10: Zabbixの設定

Zabbixのホスト設定における JXM Interfaces にPort=7777としてインターフェースを追加する

11: Itemの追加

手っ取り早く動作確認するのであれば"Template JMX Generic"あたりのテンプレートをHostに適用すると、"mem Heap Memory used"などのItemを取得できる。
※Item設定で"User name","Password"にはWildflyのAdministratorアカウントのID/Passを設定すること
※Java8以降ではPermanent領域が無くなっているので、取得できなくても慌てないこと

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1