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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用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

[[email protected] ~]# yum install -y zabbix-java-gateway

2、编辑 zabbixjavagateway.conf

[[email protected] ~]# vim /etc/zabbix/zabbix_java_gateway.conf 
LISTEN_PORT=10052       //不打开也是默认 10052 端口
START_POLLERS=5     //进程数

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

[[email protected] ~]# 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,加入开机启动

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


5、服务端重启zabbix-server

[[email protected] ]# systemctl restart zabbix-server
[[email protected] ~]# ps aux|grep zabbix_server
[[email protected] ~]# 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

[[email protected] ]# /usr/local/tomcat/bin/shutdown.sh 
[[email protected] ]# /usr/local/tomcat/bin/startup.sh

3)查看 9999 端口是否启动

[[email protected] ]# 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 在不同的机器上需要区分开。

以上是关于利用JMX,在 zabbix 上监控多 agent 端的 tomcat 实战的主要内容,如果未能解决你的问题,请参考以下文章

Zabbix利用JMX监控多实例Tomcat运行状态

Zabbix使用jmx监控tomcat

在Java EE Servers环境下利用Jolokia Agent漏洞

Zabbix简介

利用jstat 自动发现监控java程序

zabbix监控tomcat,jmx JavaGateway not host