zabbix使用jmx监控tomcat
在zabbix server上安装
Zabbix 服务器上安装配置zabbix-java-gateway
1、下载官方提供的软件包并进行安装:
wget http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-java-gateway-4.0.0-2.el7.x86_64.rpm
yum -y install zabbix-java-gateway-4.0.0-2.el7.x86_64.rpm
2、查看安装路径,使用rpm包的方式默认是安装在/usr/share/zabbix-java-gateway/目录
rpm -qpl zabbix-java-gateway-4.0.0-2.el7.x86_64.rpm
cd /usr/share/zabbix-java-gateway/
3、启动zabbix-java-gateway,默认的监听端口为10052,如果需要修改端口可以参考此链接
systemctl start zabbix-java-gateway
netstat -ntlp 增加了10052端口
配置tomcat JMX服务相关参数
1、修改tomcat配置文件,启用JMX
2、重启tomcat 服务器,JMX的1234端口开启
zabbix-serve配置zabbix-gateway
1、修改zabbix-server的配置文件如下
2、重启zabbix-server
3、在zabbix agent部署的tomcat服务器上,copy对应的java jmx监控的相关jar包到tomcat对应的目录下。
https://download.csdn.net/download/qq_38206606/10234970
下载模板及监控相关的jar包
cp catalina-jmx-remote.jar /usr/bin/tomcat/lib cp cmdline-jmxclient-0.10.3.jar /usr/bin/tomcat/bin
4、编辑zabbix agent配置文件,配置完成如下:
LogFile=/tmp/zabbix_agentd.log //zabbix agent日志文件地址 Server=192.168.1.103 //zabbix server地址 ListenPort=10050 //zabbix agent监听端口 Timeout=20 //超时时间 Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf //zabbix agent副配置文件目录配置 UnsafeUserParameters=1 AllowRoot=1 User=root ServerActive=192.168.1.103 //server地址配置 EnableRemoteCommands=1 //允许远程执行命令 Hostname=192.168.1.100 //配置agent本地hostname名称 UserParameter=jvm[*],/usr/local/zabbix/share/zabbix/alertscripts/jvm_memory.sh $1 //jvm内存监控脚本 UserParameter=system_memory[*],/usr/local/zabbix/share/zabbix/alertscripts/system_memory.sh $1 //系统内存监控脚本
5、在zabbix中添加主机,选择jmx 12345端口,添加模板
6、在zabbixagent端使用cmdline-jmxclient-0.10.3.jar提供的相关接口,获取jvm的监控信息。此处执行相关命令的操作目录为:/usr/tomcat/bin。
获取tomcat的最大线程数。 java -jar cmdline-jmxclient-0.10.3.jar - 192.168.1.100:12345 'Catalina:name="http-nio-8080",type=ThreadPool' maxThreads 06/09/2017 17:34:47 +0800 org.archive.jmx.Client maxThreads: 200 获取tomcat繁忙线程数。 java -jar cmdline-jmxclient-0.10.3.jar - 192.168.1.100:12345 'Catalina:name="http-nio-8080",type=ThreadPool' currentThreadsBusy 06/09/2017 17:36:48 +0800 org.archive.jmx.Client currentThreadsBusy: 5 获取tomcat当前已经分配线程数。 java -jar cmdline-jmxclient-0.10.3.jar - 192.168.1.100:12345 'Catalina:name="http-nio-8080",type=ThreadPool' currentThreadCount 06/09/2017 17:38:15 +0800 org.archive.jmx.Client currentThreadCount: 11 获取活动线程的当前数目,包括守护线程和非守护线程。 java -jar cmdline-jmxclient-0.10.3.jar - 192.168.1.100:12345 java.lang:type=Threading ThreadCount 06/09/2017 17:55:34 +0800 org.archive.jmx.Client ThreadCount: 225 获取自从 Java 虚拟机启动以来创建和启动的线程总数目。 java -jar cmdline-jmxclient-0.10.3.jar - 192.168.1.100:12345 java.lang:type=Threading TotalStartedThreadCount 06/09/2017 17:55:52 +0800 org.archive.jmx.Client TotalStartedThreadCount: 112225 获取Java 虚拟机启动或峰值重置以来峰值活动线程计数。 java -jar cmdline-jmxclient-0.10.3.jar - 192.168.1.100:12345 java.lang:type=Threading PeakThreadCount 06/09/2017 17:56:06 +0800 org.archive.jmx.Client PeakThreadCount: 244 获取守护线程总数。 java -jar cmdline-jmxclient-0.10.3.jar - 192.168.1.100:12345 java.lang:type=Threading DaemonThreadCount 06/09/2017 17:52:20 +0800 org.archive.jmx.Client DaemonThreadCount: 195
7、键值对解析如下:
名称:tomcat已分配线程数 键值:jmx["Catalina:name=\"http-bio-8080\",type=ThreadPool",currentThreadCount] 名称:tomcat最大线程数 键值:jmx["Catalina:name=\"http-bio-8080\",type=ThreadPool",maxThreads] 名称:tomcat繁忙线程数 键值:jmx["Catalina:name=\"http-bio-8080\",type=ThreadPool",currentThreadsBusy] 名称:java虚拟机启动以来创建和启动的线程总数目 键值:jmx["java.lang:type=Threading","TotalStartedThreadCount"] 名称:tomcat活动线程的当前数目,包括守护线程和非守护线程。 键值:jmx["java.lang:type=Threading","ThreadCount"] 名称:java虚拟机启动或峰值重置以来峰值活动线程数 键值:jmx["java.lang:type=Threading","PeakThreadCount"]