概述
zabbix監控tomcat只有一個zabbix-java-gateway,可以部署在zabbix-sever端也可以部署在其他機器上,需要和zabbix-server網絡可達。Zabbix-Javagateway就相當於一個代理,它負責收集客戶端tomcat數據,zabbix-server只要向zabbix-java-gateway取數據添加到資料庫即可。但zabbix官方提供的jvm和tomcat監控模版,存在item書寫格式的坑,導致很多內容無法獲取到監控。
所以就自己寫腳本來監控了,先介紹一下傳統方式的監控。
一、tomcat+jvm監控點
1、tomcat監控
Tomcat請求數:包括每秒請求數,每秒出錯數;Tomcat網絡流量統計:包括進流量統計,出流量統計;Tomcat線程:包括最大線程數,當前線程數,當前繁忙線程數。
2、JVM監控
內存使用狀態:堆內存(Heap memory)和非堆內存(No Heap memory),包括已用值、最大值、已提交;
堆內存內存池:新生代(eden space),survivor space,老年代(old gen)的內存使用狀態;
非堆內存內存池:代碼緩存(Code cache),元空間(meta space),壓縮類空間(compressed class space);
類加載:加載總數,已加載,已卸載。
Java線程:總開啟線程,活動線程,線程峰值
這裡沒有在zabbix中添加垃圾回收(gc)的監控,而是在catalina配置裡面添加gc日輸入來給開發進行分析,設置方式如下。
CATALINA_OPTS=」-XX:ParallelGCThreads=4 -XX:+PrintGCDetails -Xloggc:日誌存放路徑」
二、zabbix客戶端配置
1、部署zabbix_agent
rpm -ivh zabbix-agent-4.2.6-1.el7.x86_64.rpm
2、修改zabbix_agent配置文件
vim /etc/zabbix/zabbix_agentd.conf
=======================================================================
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log #錯誤日誌
LogFileSize=0
ListenPort=10050 #啟動監聽埠
StartAgents=3 #被動模式下選擇,主動模式則為0
ListenIP=0.0.0.0 #監聽所有IP
Server=xxxx #被動模式下必填,將zabbix-server端的ip填入
ServerActive=xxxx #主動模式下填寫這個參數
Hostname=xxx #本機的hostname,此值必須與zabbix的網頁上創建的主機名一致
Include=/etc/zabbix/zabbix_agentd.d/*.conf
UnsafeUserParameters=1
=======================================================================
3、啟動zabbix_agent
systemctl start zabbix-agent
systemctl enable zabbix-agent
systemctl status zabbix-agent
4、添加catalina-jmx-remote.jar
下載地址:http://archive.apache.org/dist/tomcat/tomcat-8/
找到對應tomcat版本的catalina-jmx-remote.jar,catalina-jmx-remote.jar文件在tomcat版本的/bin/extras/目錄下,然後放到tomcat/lib下
wget http://archive.apache.org/dist/tomcat/tomcat-8/v8.5.37/bin/extras/catalina-jmx-remote.jar
chmod u+x catalina-jmx-remote.jar
5、添加tomact中JMX的參數
打開tomcat/bin/catalina.sh文件,在#!/bin/sh下面添加如下,注意hostname填本機的ip地址。
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=xxxx4"
6、重啟tomcat與監控測試
6.1、下載cmdline-jmxclient-0.10.3.jar
cmdline-jmxclient.jar主要用於抓取jmx的信息。
下載地址:http://crawler.archive.org/cmdline-jmxclient/cmdline-jmxclient-0.10.3.jar
6.2、測試jmx監控項
7、監控項數據採集
--堆內存
java -jar cmdline-jmxclient-0.10.3.jar controlRole:tomcat 127.0.0.1:12345 java.lang:type=Memory HeapMemoryUsage
--內存池eden space
java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:12345 java.lang:type=MemoryPool,name=PS\\ Eden\\ Space Usage
--內存池survivor space
java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:12345 java.lang:type=MemoryPool,name=PS\\ Survivor\\ Space Usage
--內存池old gen
java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:12345 java.lang:name=PS\\ Old\\ Gen,type=MemoryPool Usage
--非堆內存
java -jar cmdline-jmxclient-0.10.3.jar controlRole:tomcat 127.0.0.1:12345 java.lang:type=Memory NonHeapMemoryUsage
--內存池meta space
java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:12345 java.lang:type=MemoryPool,name=Metaspace Usage
--內存池code cache
java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:12345 java.lang:type=MemoryPool,name=Code\\ Cache Usage
--內存池compressed class space
java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:12345 java.lang:type=MemoryPool,name=Compressed\\ Class\\ Space Usage
--類加載
加載總數: java -jar cmdline-jmxclient-0.10.3.jar controlRole:tomcat 127.0.0.1:12345 java.lang:type=ClassLoading TotalLoadedClassCount
已加載: java -jar cmdline-jmxclient-0.10.3.jar controlRole:tomcat 127.0.0.1:12345 java.lang:type=ClassLoading LoadedClassCount
已卸載: java -jar cmdline-jmxclient-0.10.3.jar controlRole:tomcat 127.0.0.1:12345 java.lang:type=ClassLoading UnloadedClassCount
--JAVA線程
總開啟線程: java -jar cmdline-jmxclient-0.10.3.jar controlRole:tomcat 127.0.0.1:12345 java.lang:type=Threading TotalStartedThreadCount
活動線程: java -jar cmdline-jmxclient-0.10.3.jar controlRole:tomcat 127.0.0.1:12345 java.lang:type=Threading PeakThreadCount
線程峰值: java -jar cmdline-jmxclient-0.10.3.jar controlRole:tomcat 127.0.0.1:12345 java.lang:type=Threading PeakThreadCount
--tomcat線程
最大線程:java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:12345 Catalina:name="http-nio*",type=ThreadPool maxThreads
當前線程:java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:12345 Catalina:name="http-nio*",type=ThreadPool currentThreadCount
繁忙線程:java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:12345 Catalina:name="http-nio*",type=ThreadPool currentThreadsBusy
--網絡流量
接收的位元組:java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:12345 Catalina:name="http-nio*",type=GlobalRequestProcessor bytesReceived
發送的位元組:java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:12345 Catalina:name="http-nio*",type=GlobalRequestProcessor bytesSent
--tomcat請求
tomcat請求數:java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:12345 Catalina:name="http-nio*",type=GlobalRequestProcessor requestCount
tomcat出錯請求:java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:12345 Catalina:name="http-nio*",type=GlobalRequestProcessor errorCount
三、配置zabbix服務端
1、安裝zabbix-java-gateway
倉庫地址:https://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/
zabbix-java-gateway默認工作在10052埠(zabbix-server默認工作在10051埠,zabbix-agent默認工作在10050埠)
#安裝
wget https://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/zabbix-java-gateway-4.2.6-1.el7.x86_64.rpm
rpm -ivh zabbix-java-gateway-4.2.6-1.el7.x86_64.rpm
#啟動
systemctl start zabbix-java-gateway
#開機啟動
systemctl enable zabbix-java-gateway
2、配置zabbix_java_gateway.conf和zabbix_server.conf
重點:Java-gateway配置文件的START_POLLERS參數 >= zabbix_server配置文件的StartJavaPollers參數,建議一樣,都設為5。
2.1、配置zabbix_java_gateway.cnf
# vim /etc/zabbix/zabbix_java_gateway.conf
==================================================================================================
PID_FILE="/var/run/zabbix/zabbix_java.pid"
#LISTEN_IP="xxxx" #本機ip地址,如果和server安裝在相同的位置可以不修改
LISTEN_PORT=10052 #埠可以修改為其他,在server段需要相同的配置
START_POLLERS=5 #設置啟動多個線程,這裡和server段相同
TIMEOUT=3 #超時時間
==================================================================================================
2.2、配置zabbix_server.conf:
讓zabbix-server服務能連接到zabbix-java-gateway服務
# vim /data/zabbix/etc/zabbix_server.conf
==================================================================================================
JavaGateway=xxx #如果是本機安裝直接使用127.0.0.1
JavaGatewayPort=10052 #埠號和javagateway要對應
StartJavaPollers=5 #線程數和客戶端配置對應 不能少於客戶端數目 StartJavaPollers<=START_POLLERS
==================================================================================================
3、重啟zabbix-server和zabbix-java-gateway服務
systemctl restart zabbix_server
systemctl restart zabbix-java-gateway
四、web介面配置jmx監控
Zabbix-server通過JavaPollers進程調用zabbix-java-gateway獲得tomcat數據,而zabbix-java-gateway就是通過這裡配置的tomcat地址和埠,連接到tomcat從而獲取到數據。
1、配置-->主機-->創建主機-->JMX添加-->輸入IP(tomcat伺服器IP)和埠(12345)
2、配置-->主機-->tomcat伺服器-->模版-->Template App Apache Tomcat JMX、Template App Generic Java JMX-->添加-->更新
3、配置成功顯示
找到主機,如果JMX顯示顏色,則配置成功。
覺得有用的朋友多幫忙轉發哦!後面會分享更多devops和DBA方面的內容,感興趣的朋友可以關注下~