(一)简介
一、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。java
二、监控原理:当Zabbix-Server须要知道java应用程序的某项性能的时候,会启动自身的一个Zabbix-JavaPollers进程去链接Zabbix-JavaGateway请求数据,而ZabbixJavagateway收到请求后使用"JMXmanagementAPI"去查询特定的应用程序,而前提是应用程序这端在开启时须要"-Dcom.sun.management.jmxremote"参数来开启JMX远程查询就行。Java程序会启动自身的一个简单的小程序端口12345向Zabbix-JavaGateway提供请求数据。
从上面的原理图中能够看出,配置Zabbix监控Java应用程序的关键点在于:配置Zabbix-JavaGateway、让Zabbix-Server可以链接Zabbix-JavaGateway、Tomcat开启JVM远程监控功能等mysql
三、监控架构sql
*(二)须要安装服务:
JDK环境部署 (略)小程序
(三)、具体安装配置
一、JDK环境部署(略)
二、Zabbix-Java-gateway安装和配置
方法1、编译安装。编译是须要加上 --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
方法2、yum直接安装。yum -y install zabbix-java-gateway
三、修改zabbix java配置vim
[root@zabbix-server ~]# vim /etc/zabbix/zabbix_server.conf JavaGateway=172.19.152.247 JavaGatewayPort=10052 StartJavaPollers=5
四、重启zabbix-server,并查看端口是否启动tomcat
[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
五、被监控的客户端添加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
六、下载相应的JMX的jar包(连接:https://pan.baidu.com/s/1FzslYQZ7snw38EMDsh2c9A 提取码:g3ie),在zabbix-server端进行验证app
[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
七、导入模板添加监控并添加监控。主机框架
查看监控图形