(一)簡介
一、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
七、導入模板添加監控並添加監控。主機
框架
查看監控圖形