利用JMX,在 zabbix 上监控多 agent 端的 tomcat 实战

说在最前:
在做这次实战测试之中,在网上查了许多资料,看了不少篇文章,绝大多数都是 zabbix 对单机多 tomcat 的监控,少有 zabbix 对多台客户端上的 tomcat 分别进行监控,而且写的还非常笼统,因此,我想写这篇文章,和大家分享一下实践心得。

zabbix-server 和 zabbix-agent 安装方法在这里略过,可以参考 此前我的博客 的后半部分。

配置流程:

在安装 tomcat 的主机上执行以下操作:
1、安装zabbix_java_gateway
2、配置zabbix_java_gateway配置文件和zabbix_server配置文件,指定监听端口,启动进程数
3、编辑Tomcat配置文件,开启JMX
4、添加host,指定JMX interface
5、链接TOMCAT模板


实际操作:

1、在 tomcat 所在的机器上安装 zabbix-java-gateway

[root@ape-test2-1124 ~]# yum install -y zabbix-java-gateway

2、编辑 zabbixjavagateway.conf

[root@ape-test2-1124 ~]# vim /etc/zabbix/zabbix_java_gateway.conf 
LISTEN_PORT=10052       //不打开也是默认 10052 端口
START_POLLERS=5     //进程数

以上步骤也需要在其他机器上操作
3、编辑服务端上的 /etc/zabbix/zabbixserver.conf

[root@iZm5ehq0spxwe0fe6nay7fZ ~]# vim /etc/zabbix/zabbix_server.conf 
JavaGateway=192.168.100.124,192.168.100.125,192.168.100.126,192.168.100.127,192.168.100.128,192.168.100.129,192.168.100.130,192.168.100.131     //JavaGateway 所安装的所有主机 ip
JavaGatewayPort=10052       //java 的 port
StartJavaPollers=5

参数不要写错,不然 zabbix-server 无法启动

4、启动 zabbix-java-gateway,加入开机启动

[root@ape-test2-1124 ~]# systemctl start zabbix-java-gateway    //其他客户端也是同样操作
[root@ape-test2-1124 ~]# systemctl enable zabbix-java-gateway
[root@ape-test2-1124 ~]# netstat -lntp|grep 10052
tcp        0      0 0.0.0.0:10052           0.0.0.0:*               LISTEN      4120/java


5、服务端重启zabbix-server

[root@iZm5ehq0spxwe0fe6nay7fZ ]# systemctl restart zabbix-server
[root@iZm5ehq0spxwe0fe6nay7fZ ~]# ps aux|grep zabbix_server
[root@iZm5ehq0spxwe0fe6nay7fZ ~]# netstat -lntp|grep 1005
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      22288/zabbix_agentd 
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      4290/zabbix_server  
tcp        0      0 0.0.0.0:10052           0.0.0.0:*               LISTEN      17300/java          
tcp6       0      0 :::10050                :::*                    LISTEN      22288/zabbix_agentd 
tcp6       0      0 :::10051                :::*                    LISTEN      4290/zabbix_server 


6、开启 JMX

1)编辑配置文件 /usr/local/tomcat/bin/catalina.sh
在 #!/bin/sh 下增加一段

export CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote
-Djava.rmi.server.hostname=192.168.100.124   //tomcat 所在客户端 ip
-Dcom.sun.management.jmxremote.port=9999
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false"

2)重启 tomcat

[root@ape-test2-1124 ]# /usr/local/tomcat/bin/shutdown.sh 
[root@ape-test2-1124 ]# /usr/local/tomcat/bin/startup.sh

3)查看 9999 端口是否启动

[root@ape-test2-1124 ]# netstat -lntp |grep 9999
tcp6       0      0 :::9999                 :::                    LISTEN      8328/java*

其他客户端上也同样操作


★★★唯一不同的是 -Dcom.sun.management.jmxremote.port= 的端口号不能一样!!!

192.168.100.125上的 /usr/local/tomcat/bin/catalina.sh 里添加的参数就应该是

export CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote
-Djava.rmi.server.hostname=192.168.100.125 
-Dcom.sun.management.jmxremote.port=9998
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false"

同理,编辑所有tomcat所在机器上的 /usr/local/tomcat/bin/catalina.sh,添加以上参数,并根据实际情况修改hostname 和 port,保存配置,重启 tomcat

7、在 zabbix 的 web 端添加新主机

1)创建新主机,配置——主机——创建主机
2)更改主机配置:主机名称——群组——移除agent代理程序接口——添加JMX接口——192.168.100.124,端口 9999

利用JMX,在 zabbix 上监控多 agent 端的 tomcat 实战

3)链接模板:模板——选择Template App Apache Tomcat JMX和 Template App Generic Java JMX——添加——添加

利用JMX,在 zabbix 上监控多 agent 端的 tomcat 实战

4)监测——最新数据——主机切换为arslinux-01tomcat

稍等片刻,可以观察到已经出数据了
利用JMX,在 zabbix 上监控多 agent 端的 tomcat 实战

5)JMX 已通,成功

利用JMX,在 zabbix 上监控多 agent 端的 tomcat 实战

6)克隆机器:主机——tomcat124——全克隆
利用JMX,在 zabbix 上监控多 agent 端的 tomcat 实战

7、修改参数:名称、群组、ip、端口(注意端口号不能和其他重复)
利用JMX,在 zabbix 上监控多 agent 端的 tomcat 实战

8、同样的方法,创建其他主机,稍等一会儿就可以了

利用JMX,在 zabbix 上监控多 agent 端的 tomcat 实战
成功!!!

总结:实际操作流程和正常的利用 JMX 在 zabbix 上监控 tomcat 无异,重点区别在于 catalina.sh 中配置参数的 port 在不同的机器上需要区分开。

上一篇:如何使用JMX API获取tomcat 7的内存使用情况?


下一篇:java – 强制Spring的MBeanExporter使用特定的MBeanServer