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

zabbix 应用进程内存监控 zabbix监控java进程_运维


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

zabbix 应用进程内存监控 zabbix监控java进程_运维_02

*(二)需要安装服务:JDK环境部署 (略)

  • zabbix-server端编译安装Zabbix-Java-gateway选项
  • 修改zabbix_server配置文件
  • 重启zabbix_server
  • 修改JAR包的启动文件(agent端)
  • 下载相应的JMX的jar包,在zabbix-server端进行验证
  • 修改相应的模板在zabbix Web页面进行修改
    **

(三)、具体安装配置
1、JDK环境部署(略)
2、Zabbix-Java-gateway安装和配置
方法一、编译安装。编译是需要加上 --enable-java来启用通过JMX监控tomcat的支持,zabbix server安装请看站内相应文档
./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql --enable-java --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2方法二、yum直接安装。
yum -y install zabbix-java-gateway3、修改zabbix java配置

[root@zabbix-server ~]# vim /etc/zabbix/zabbix_server.conf

JavaGateway=172.19.152.247
JavaGatewayPort=10052
StartJavaPollers=5

4、重启zabbix-server,并查看端口是否启动

[root@zabbix-server ~]# systemctl restart zabbix-server
[root@zabbix-server ~]# systemctl status zabbix-server
● zabbix-server.service - Zabbix Server
   Loaded: loaded (/usr/lib/systemd/system/zabbix-server.service; enabled; vendor preset: disabled)
   Active: active (running) since 二 2019-05-21 15:03:20 CST; 8s ago
  Process: 5974 ExecStop=/bin/kill -SIGTERM $MAINPID (code=exited, status=0/SUCCESS)
  Process: 5977 ExecStart=/usr/sbin/zabbix_server -c $CONFFILE (code=exited, status=0/SUCCESS)
 Main PID: 5979 (zabbix_server)
   CGroup: /system.slice/zabbix-server.service
           ├─6067 /usr/sbin/zabbix_server: java poller #1 [got 0 values in 0.000018 sec, idle 5 sec]
           ├─6068 /usr/sbin/zabbix_server: java poller #2 [got 0 values in 0.000010 sec, idle 5 sec]
           ├─6069 /usr/sbin/zabbix_server: java poller #3 [got 0 values in 0.000016 sec, idle 5 sec]
           ├─6070 /usr/sbin/zabbix_server: java poller #4 [got 0 values in 0.000013 sec, idle 5 sec]
           ├─6071 /usr/sbin/zabbix_server: java poller #5 [got 0 values in 0.000011 sec, idle 5 sec]
[root@zabbix-server ~]# netstat -lntp|grep java
tcp        0      0 0.0.0.0:8009            0.0.0.0:*               LISTEN      3646/java           
tcp        0      0 0.0.0.0:8081            0.0.0.0:*               LISTEN      3646/java           
tcp        2      0 127.0.0.1:32000         0.0.0.0:*               LISTEN      2477/java           
tcp        0      0 172.19.152.247:10052    0.0.0.0:*               LISTEN      8809/java           
tcp        0      0 127.0.0.1:8005          0.0.0.0:*               LISTEN      3646/java

5、被监控的客户端添加JMX支持。给启动脚本添加参数,开启JMX

######## 在 Execute The Requested Command 前加入如下代码(未采用认证加密方式):
 -Dcom.sun.management.jmxremote  
 -Djava.rmi.server.hostname=172.19.195.148  
 -Dcom.sun.management.jmxremote.port=10053 
 -Dcom.sun.management.jmxremote.ssl=false 
 -Dcom.sun.management.jmxremote.authenticate=false

重新启动查看端口是否运行

[appuser@preuser195147 ~]$ netstat -lntp|grep 10053
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 0.0.0.0:10053           0.0.0.0:*               LISTEN      25200/java

6、下载相应的JMX的jar包(链接:https://pan.baidu.com/s/1FzslYQZ7snw38EMDsh2c9A 提取码:g3ie),在zabbix-server端进行验证

[root@zabbix-server opt]# cd /data/tomcat/
[root@zabbix-server tomcat]# java -jar cmdline-jmxclient-0.10.3.jar - 172.19.195.148:10053 java.lang:type=Memory NonHeapMemoryUsage
05/21/2019 17:15:55 +0800 org.archive.jmx.Client NonHeapMemoryUsage: 
committed: 212074496
init: 2555904
max: 1862270976
used: 201090744

7、导入模板添加监控并添加监控。主机

zabbix 应用进程内存监控 zabbix监控java进程_zabbix 应用进程内存监控_03


zabbix 应用进程内存监控 zabbix监控java进程_java_04

查看监控图形

zabbix 应用进程内存监控 zabbix监控java进程_网络_05


转载于:https://blog.51cto.com/liqingbiao/2398123