zabbix4.4监控案例之Tomcat(JMX)监控

1、什么是JMX

JMX的全称是Java Management Extensions,即Java管理扩展(Java Management Extensions,即Java管理扩展,是一个为应用程序、设备、系统等植入管理功能的框架,JMX可以跨越一系列异构操作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用)。Java程序会开放一些端口,用来获取运行状况。Zabbix 2.0开始,内置了监控JMX的功能,叫做“Zabbix Java Gateway”,在Zabbix Server和Zabbix Proxy上启动名为“Zabbix Java Gateway”的进程,当需要获取JMX数据时,Zabbix Server会“问”JMX Gateway,然后JMX Gateway根据JMX管理API去查询需要的数据。在使用时,Java程序不需要在代码中新增任何东西,只需要在启动的时候加上一些JVM参数,使得它可以支持使用端口监控JMX。

2、Zabbix架构图

img

监控原理

当Zabbix-Server需要知道java应用程序的某项性能的时候,会启动自身的一个Zabbix-JavaPollers进程去连接Zabbix-JavaGateway请求数据,而ZabbixJavagateway收到请求后使用”JMXmanagementAPI”去查询特定的应用程序,而前提是应用程序这端在开启时需要”-Dcom.sun.management.jmxremote”参数来开启JMX远程查询就行。Java程序会启动自身的一个简单的小程序端口12345向Zabbix-JavaGateway提供请求数据。

img

从上面的原理图中可以看出,配置Zabbix监控Java应用程序的关键点在于:配置Zabbix-Java-Gateway、让Zabbix-Server能够连接Zabbix-Java-Gateway、Tomcat开启JVM远程监控功能等。

Tomcat监控指标如下:

  • 堆内存
  • 类加载
  • 线程
  • GC

3、Tomcat开启JMX远程连接

下面我们直接去Tomcat中启用JMX远程连接(Tomcat和JDK的安装方式、请自行百度),Tomcat启用JMX有两种方式、这里我们采用修改usr/local/tomcat9/bin/catalina.sh 配置文件的方式,在文件中插入如下代码:

CATALINA_OPTS="$CATALINA_OPTS 
    -Dcom.sun.management.jmxremote 
    -Dcom.sun.management.jmxremote.authenticate=false 
    -Dcom.sun.management.jmxremote.ssl=false 
    -Dcom.sun.management.jmxremote.port=12345 
    -Djava.rmi.server.hostname=127.0.0.1"

img

修改完成之后重启Tomcat。我们通过netstat -nltp 命令就可以看到 12345 端口已经成功监听:

img

如果12345端口没有正常监听、那就要好好检查一下catalina.sh文件中添加的JMX配置了。

4、安装Zabbix Java Gateway

JMX启动以后我们就可以来安装 Zabbix Java Gateway 了,网上有很多文章都说可以通过Yum的方式进行安装、我这边尝试了都不行、这里我们通过编译安装的方案安装 Zabbix Java Gateway 。我们可之前下载的 zabbix-4.4.6 安装包里面含有 zabbix_java 的安装文件、我们可以通过编译的方式进行安装。

img

进入 zabbix-4.4.6 目录、通过下面的命令进行编译安装:

./configure --prefix=/usr/local/zabbix --enable-java && make && make install

安装完成以后我们修改服务端的配合文件zabbix_server.conf:

img

然后再去 /usr/local/zabbix/sbin/zabbix_java 目录修改 zabbix_java_gateway 的配置文件settings.sh:

img

注:修改完成以后记得一定要重启zabbix_server和zabbix_java_gateway服务、确定服务启动正常,服务启动正常以后我们还是通过netstat -nltp查看端口监听状态:

img

5、创建JMX主机

Zabbix从2.0开始就已经支持JMX了、所以这里我们不需要单独去创建监控模板、而是直接使用zabbix帮我们创建好的JMX模板。我们直接去zabbix中配置-主机-创建主机,填写JMX接口信息127.0.0.1,端口12345,然后关联zabbix的JMX模板即可:

img

img

添加完成以后我们就可以配置-主机查看刚才添加的JMX主机可用性状态了、如果配置正确、可用性的JMX会显示为绿色。

img

6、效果展示

到这里zabbix4.4监控案例之Tomcat(JMX)监控就已经完成了 ,Dashboard展示效果如下:

img

推荐文章