|
zabbix提供了一个java gateway的应用去监控jmx(Java Management Extensions,即Java管理扩展)是一个为应用程序、设备、系统等植入管理功能的框架。JMX可以跨越一系列异构操作系统平台、系统体系结构和 网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。
一. Zabbix 的JMX监控架构
二.安装Java gateway[zabbix服务端操作]
1.安装jdk
首先要安装jdk,我的系统位redhat 6.4 x64位,我使用rpm包安装jdk,从http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html下载最新的jdk,rpm包(我使用7u79版本,最新为8)并上传到zabbix server
1 |
rpm -ivh jdk-7u79-linux-x64.rpm |
安装成功之后添加系统环境变量
1 |
vi /etc/profile |
添加如下
1 |
JAVA_HOME=/usr/java/jdk1.7.0_79 |
使配置生效
1 |
source /etc/profile |
测试,输入
1 |
java -version |
如果显示如下信息表示jdk安装完成
1 |
java version "1.7.0_79" |
2.安装Java gateway
可使用rpm进行安装,我使用源码安装,大家可在安装zabbix时启用—enable-java参数即可安装zabbix java gateway,如果第一次没有加载,可重新加载编译安装,我使用以下参数安装
1 |
./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --enable-java --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 |
以上参数可安装zabbix server,java gateway,snmp,zabbix agent
,建议大家使用。
3.配置Java gateway
安装好之后可在/usr/local/zabbix/sbin/目录下看到zabbix_java目录(具体根据实际安装情况)
编辑配置文件
1 |
vi /usr/local/zabbix/sbin/zabbix_java/settings.sh |
修改zabbix server配置文件
1 |
vi /usr/local/zabbix/etc/zabbix_server.conf |
4.启动测试Java gateway
启动Java gateway
1 |
/usr/local/zabbix/sbin/zabbix_java/startup.sh |
可使用
1 |
netstat -lntp | grep 10052 |
查看是否已经监听10052端口,如果已监听,表示启动成功,如果没有,可通过zabbix_server日志查看解决.
5.添加catalina-jmx-remote.jar
添加catalina-jmx-remote.jar到zabbix java gateway的lib目录下,catalina-jmx-remote.jar包可在http://archive.apache.org/dist/tomcat/下,在各版本目录的bin/extras/子目录下
1 |
cd /usr/local/zabbix/sbin/zabbix_java/lib/ |
并重启zabbix和java gateway
1 |
/usr/local/zabbix/sbin/zabbix_java/shutdown.sh |
6.下载测试工具cmdline-jmxclient-0.10.3.jar
cmdline-jmxclient-0.10.3.jar为一个测试工具,可用来测试jmx是否配置正确,下载cmdline-jmxclient-0.10.3.jar(下载到任意目录)
1 |
wget http://crawler.archive.org/cmdline-jmxclient/cmdline-jmxclient-0.10.3.jar |
三.被监控tomcat 配置[被监控tomcat操作]
1.添加catalina-jmx-remote.jar
添加catalina-jmx-remote.jar文件到tomcat的lib目录
1 |
cd /opt/apache-tomcat/lib/ |
2.修改setenv.sh
1 |
vi /opt/apache-tomcat/bin/setenv.sh |
添加如下
1 |
CATALINA_OPTS="${CATALINA_OPTS} -Djava.rmi.server.hostname=192.168.7.186" |
注意:hostname位机器ip地址,即被监控机器对外服务地址
3.修改server.xml
1 |
vi /opt/apache-tomcat/conf/server.xml |
添加如下,注意添加位置在
1 |
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" /> |
之后添加如下代码
1 |
<Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener" rmiRegistryPortPlatform="12345" rmiServerPortPlatform="12346" /> |
4.添加tomcat应用自动发现脚本
由于默认的jmx不能自动发现部署的新应用,因此需要添加一个脚本自动发现,并且利用zabbix的LLD(Low-level discovery)来发现
1 |
mkdir /opt/tomcat/ |
context.sh脚本内容
1 |
#!/bin/bash |
此脚本在被监控端添加,注意要把ip改成本机的服务IP地址
添加一个应用自动发现的程序,我放到zabbix agent的bin目录下
1 |
cd /usr/local/zabbix/bin/ |
修改zabbix agentd设置,添加应用自动发现的key
1 |
vi /usr/local/zabbix/etc/zabbix_agentd.conf |
重启tomcat
1 |
/opt/apache-tomcat/bin/shutdown.sh |
重启zabbix agent
1 |
service zabbix-agent restart |
注:防火墙需要开放12345,12346端口
四.测试并添加
1.测试
在zabbix server上执行
1 |
java -jar /root/cmdline-jmxclient-0.10.3.jar - 192.168.7.186:12345 java.lang:type=Memory NonHeapMemoryUsage |
如果有如下回显表示jmx配置正确,如不正确,请检查配置
1 |
07/23/2015 23:25:29 +0800 org.archive.jmx.Client NonHeapMemoryUsage: |
在zabbix server上用zabbix_get执行
1 |
zabbix_get -s 192.168.7.153 -k tomcat.context.discovery |
如果能回显如下数据表示获取成功
1 |
{ |
2.添加模版
模版我已经做好了大家可直接倒入使用
模版下载:zabbix_tomcat_templates.xml
导入到zabbix,并关联到主机
五.最终效果
本文转自 msj0905 51CTO博客,原文链接:http://blog.51cto.com/sky66/1680406