前提:編譯zabbix server時須要提供java支持,即添加--enable-java該選項。java
一、zabbix server段配置java支持。此處編譯安裝zabbix的目錄爲/usr/local/zabbix。數據庫
編輯/usr/local/zabbix/sbin/zabbix_java/settings.sh,修改完成以後內容以下: LISTEN_IP="0.0.0.0" //監聽的服務器地址 LISTEN_PORT=10052 //監聽的端口 PID_FILE="/tmp/zabbix_java.pid" //指定zabbix_java的pid文件地址 START_POLLERS=5 TIMEOUT=3
二、編輯/usr/local/zabbix/etc/zabbix_server.conf,修改完成以後,內容以下:vim
LogFile=/tmp/zabbix_server.log //指明zabbix_server的日誌文件地址 DBHost=localhost //鏈接的數據庫地址 DBName=zabbix //鏈接的數據庫名稱 DBUser=zabbix //鏈接數據庫的用戶名 DBPassword=zabbix //鏈接數據庫密碼 JavaGateway=192.168.1.103 //java網關地址,即server端ip地址 JavaGatewayPort=10052 //java網關監聽端口 Timeout=20 //超時時間 FpingLocation=/usr/sbin/fping //fping命令絕對地址 LogSlowQueries=3000 AllowRoot=1 //容許root啓動 User=root //zabbix服務的啓動用戶 StartPollers=50 StartPingers=100 StartJavaPollers=5 AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts //zabbix額外的腳本地址
三、重啓zabbix server服務,以及啓動zabbix java支持服務。tomcat
service zabbix_server restart cd /usr/local/zabbix/sbin/zabbix_java && sh startup.sh
四、在zabbix agent部署的服務器上更改配置文件,修改tomcat配置文件。目錄:/data/tomcat/tomcat-8080/bin。服務器
vim /data/tomcat/tomcat-8080/bin/catalina.sh 編輯catalina.sh,提供jmx端口。以下: 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=192.168.1.100" 其中,hostname=192.168.1.100須要修改成agent部署的服務器地址。更改完成須要重啓tomcat應用服務器,同時查看端口12345是否處於監聽狀態。
五、在zabbix agent部署的tomcat服務器上,copy對應的java jmx監控的相關jar包到tomcat對應的目錄下。jvm
cp catalina-jmx-remote.jar /data/tomcat/tomcat-8080/lib cp cmdline-jmxclient-0.10.3.jar /data/tomcat/tomcat-8080/bin
六、編輯zabbix agent配置文件,配置完成以下:spa
LogFile=/tmp/zabbix_agentd.log //zabbix agent日誌文件地址 Server=192.168.1.103 //zabbix server地址 ListenPort=10050 //zabbix agent監聽端口 Timeout=20 //超時時間 Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf //zabbix agent副配置文件目錄配置 UnsafeUserParameters=1 AllowRoot=1 User=root ServerActive=192.168.1.103 //server地址配置 EnableRemoteCommands=1 //容許遠程執行命令 Hostname=192.168.1.100 //配置agent本地hostname名稱 UserParameter=jvm[*],/usr/local/zabbix/share/zabbix/alertscripts/jvm_memory.sh $1 //jvm內存監控腳本 UserParameter=system_memory[*],/usr/local/zabbix/share/zabbix/alertscripts/system_memory.sh $1 //系統內存監控腳本
七、在zabbixagent端使用cmdline-jmxclient-0.10.3.jar提供的相關接口,獲取jvm的監控信息。此處執行相關命令的操做目錄爲:/data/tomcat/tomcat-8080/bin。線程
獲取tomcat的最大線程數。 java -jar cmdline-jmxclient-0.10.3.jar - 192.168.1.100:12345 'Catalina:name="http-bio-8080",type=ThreadPool' maxThreads 06/09/2017 17:34:47 +0800 org.archive.jmx.Client maxThreads: 200 獲取tomcat繁忙線程數。 java -jar cmdline-jmxclient-0.10.3.jar - 192.168.1.100:12345 'Catalina:name="http-bio-8080",type=ThreadPool' currentThreadsBusy 06/09/2017 17:36:48 +0800 org.archive.jmx.Client currentThreadsBusy: 5 獲取tomcat當前已經分配線程數。 java -jar cmdline-jmxclient-0.10.3.jar - 192.168.1.100:12345 'Catalina:name="http-bio-8080",type=ThreadPool' currentThreadCount 06/09/2017 17:38:15 +0800 org.archive.jmx.Client currentThreadCount: 11 獲取活動線程的當前數目,包括守護線程和非守護線程。 java -jar cmdline-jmxclient-0.10.3.jar - 192.168.1.100:12345 java.lang:type=Threading ThreadCount 06/09/2017 17:55:34 +0800 org.archive.jmx.Client ThreadCount: 225 獲取自從 Java 虛擬機啓動以來建立和啓動的線程總數目。 java -jar cmdline-jmxclient-0.10.3.jar - 192.168.1.100:12345 java.lang:type=Threading TotalStartedThreadCount 06/09/2017 17:55:52 +0800 org.archive.jmx.Client TotalStartedThreadCount: 112225 獲取Java 虛擬機啓動或峯值重置以來峯值活動線程計數。 java -jar cmdline-jmxclient-0.10.3.jar - 192.168.1.100:12345 java.lang:type=Threading PeakThreadCount 06/09/2017 17:56:06 +0800 org.archive.jmx.Client PeakThreadCount: 244 獲取守護線程總數。 java -jar cmdline-jmxclient-0.10.3.jar - 192.168.1.100:12345 java.lang:type=Threading DaemonThreadCount 06/09/2017 17:52:20 +0800 org.archive.jmx.Client DaemonThreadCount: 195
八、鍵值對解析以下:rest
名稱:tomcat已分配線程數 鍵值:jmx["Catalina:name=\"http-bio-8080\",type=ThreadPool",currentThreadCount] 名稱:tomcat最大線程數 鍵值:jmx["Catalina:name=\"http-bio-8080\",type=ThreadPool",maxThreads] 名稱:tomcat繁忙線程數 鍵值:jmx["Catalina:name=\"http-bio-8080\",type=ThreadPool",currentThreadsBusy] 名稱:java虛擬機啓動以來建立和啓動的線程總數目 鍵值:jmx["java.lang:type=Threading","TotalStartedThreadCount"] 名稱:tomcat活動線程的當前數目,包括守護線程和非守護線程。 鍵值:jmx["java.lang:type=Threading","ThreadCount"] 名稱:java虛擬機啓動或峯值重置以來峯值活動線程數 鍵值:jmx["java.lang:type=Threading","PeakThreadCount"]