当Zabbix-Server需要知道java应用程序的某项性能的时候,会启动自身的一个Zabbix-JavaPollers进程去连接Zabbix-JavaGateway请求数据,而ZabbixJavagateway收到请求后使用“JMXmanagementAPI”去查询特定的应用程序,而前提是应用程序这端在开启时需要“-Dcom.sun.management.jmxremote”参数来开启JMX远程查询就行。Java程序会启动自身的一个简单的小程序端口12345向Zabbix-JavaGateway提供请求数据。
从上面的原理图中我们可以看出,配置Zabbix监控Java应用程序的关键点在于:配置Zabbix-JavaGateway、让Zabbix-Server能够连接Zabbix-JavaGateway、Tomcat开启JVM远程监控功能等
搭建实验环境
server1(172.25.15.1) zabbix-server ,zabbix-web,zabbix-agent,java-gateway
server2(172.25.15.2) zabbix-agent,tomcat
具体实现过程如下(zabbix监控tomcat的部署)
可以看出目前zabbix平台还没有监控server2上面的java应用
在server2上配置
下载tomcat和jdlk,解压,作软链接方便更新。
[root@server2 ~]# tar zxf apache-tomcat-8.5.24.tar.gz -C /usr/local/
[root@server2 ~]# cd /usr/local/
[root@server2 local]# ln -s apache-tomcat-8.5.24/ tomcat
编辑tomcat的测试文件
查看官网,修改配置文件,开启服务并查看端口。
在tomcat的文件中添加JMA参数,JMA全称Java Management Extensions
即为java应用提供管理扩展功能,本次实验为开启远程监控功能
[root@server2 bin]# vim catalina.sh
CATALINA_OPTS=’-Dcom.sun.management.jmxremote #开启远程监控
-Dcom.sun.management.jmxremote.port=8888 #远程监控端口
-Dcom.sun.management.jmxremote.ssl=false #远程ssl验证为false
-Dcom.sun.management.jmxremote.authenticate=false’
[root@server2 bin]# ./startup.sh #开启tomcat服务
[root@server2 bin]# netstat -ntlp #查看端口
端口开启,可以在浏览器中访问tomcat默认的发布页面,在tomcat下的webapps下的ROOT下编辑发布页面
zabbix-server通过zabbix-java-gateway 监控tomcat:8888
在server1上配置
安装zabbix-java-gateway
开启服务并设置服务开机自启动,并查看端口
[root@server1 ~]# yum install zabbix-java-gateway -y
[root@server1 zabbix]# systemctl start zabbix-java-gateway
[root@server1 zabbix]# systemctl enable zabbix-java-gateway
[root@server1 zabbix]# netstat -antlp | grep 10052
编辑zabbix-server的配置文件,添加javagateway的相关信息,重启服务
[root@server1 zabbix]# vim /etc/zabbix/zabbix_server.conf #修改3处:JavaGateway port 以及ps ax可以看到的进程数
[root@server1 zabbix]# systemctl restart zabbix-server
ps ax
==systemctl restart zabbix-server ==
cat /var/log/zabbix/zabbix_server.log
在web界面进行设置
刷新网页
可以看出JIMX已经可用了