面試官:如何用zabbix來監控Tomcat

概述

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

<code> rpm -ivh zabbix-agent-4.2.6-1.el7.x86_64.rpm/<code>

2、修改zabbix_agent配置文件

<code>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
=======================================================================/<code>

3、啟動zabbix_agent

<code>systemctl start zabbix-agent
systemctl enable zabbix-agent
systemctl status zabbix-agent/<code>


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下

<code>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/<code>


5、添加tomact中JMX的參數

打開tomcat/bin/catalina.sh文件,在#!/bin/sh下面添加如下,注意hostname填本機的ip地址。

<code>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"/<code>
面試官:如何用zabbix來監控Tomcat/JVM實例性能

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監控項

面試官:如何用zabbix來監控Tomcat/JVM實例性能

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來監控Tomcat/JVM實例性能



三、配置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端口)

<code>#安裝
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/<code>
面試官:如何用zabbix來監控Tomcat/JVM實例性能

2、配置zabbix_java_gateway.conf和zabbix_server.conf

重點:Java-gateway配置文件的START_POLLERS參數 >= zabbix_server配置文件的StartJavaPollers參數,建議一樣,都設為5。

2.1、配置zabbix_java_gateway.cnf

<code># 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 #超時時間
==================================================================================================/<code>


2.2、配置zabbix_server.conf:

讓zabbix-server服務能連接到zabbix-java-gateway服務

<code># vim /data/zabbix/etc/zabbix_server.conf
==================================================================================================
JavaGateway=xxx #如果是本機安裝直接使用127.0.0.1
JavaGatewayPort=10052 #端口號和javagateway要對應
StartJavaPollers=5 #線程數和客戶端配置對應 不能少於客戶端數目 StartJavaPollers<=START_POLLERS
==================================================================================================/<code>


3、重啟zabbix-server和zabbix-java-gateway服務

<code>systemctl restart zabbix_server
systemctl restart zabbix-java-gateway/<code>
面試官:如何用zabbix來監控Tomcat/JVM實例性能



四、web界面配置jmx監控

Zabbix-server通過JavaPollers進程調用zabbix-java-gateway獲得tomcat數據,而zabbix-java-gateway就是通過這裡配置的tomcat地址和端口,連接到tomcat從而獲取到數據。

1、配置-->主機-->創建主機-->JMX添加-->輸入IP(tomcat服務器IP)和端口(12345)

面試官:如何用zabbix來監控Tomcat/JVM實例性能


2、配置-->主機-->tomcat服務器-->模版-->Template App Apache Tomcat JMX、Template App Generic Java JMX-->添加-->更新

面試官:如何用zabbix來監控Tomcat/JVM實例性能

3、配置成功顯示

找到主機,如果JMX顯示顏色,則配置成功。

面試官:如何用zabbix來監控Tomcat/JVM實例性能



覺得有用的朋友多幫忙轉發哦!後面會分享更多devops和DBA方面的內容,感興趣的朋友可以關注下~


面試官:如何用zabbix來監控Tomcat/JVM實例性能


分享到:


相關文章: