说在最前:
在做这次实战测试之中,在网上查了许多资料,看了不少篇文章,绝大多数都是 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
3)链接模板:模板——选择Template App Apache Tomcat JMX和 Template App Generic Java JMX——添加——添加
4)监测——最新数据——主机切换为arslinux-01tomcat
稍等片刻,可以观察到已经出数据了
5)JMX 已通,成功
6)克隆机器:主机——tomcat124——全克隆
7、修改参数:名称、群组、ip、端口(注意端口号不能和其他重复)
8、同样的方法,创建其他主机,稍等一会儿就可以了
成功!!!
总结:实际操作流程和正常的利用 JMX 在 zabbix 上监控 tomcat 无异,重点区别在于 catalina.sh 中配置参数的 port 在不同的机器上需要区分开。