Zabbix通過JMX監控Tomcat
- JDK環境部署
- Zabbix編譯選項
- 修改Zabbix配置文件
- 重啓Zabbix
- Tomcat端更改配置文件
- 下載相應監控JMX的jar包
- Zabbix Web頁面監控
系統環境
Zabbix_Server
[root@Zabbix_Server_56 ~]# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
[root@Zabbix_Server_56 ~]# uname -r
3.10.0-862.el7.x86_64
[root@Zabbix_Server_56 ~]# hostname
Zabbix_Server_56.7
[root@Zabbix_Server_56 ~]# ip a | grep 192.168.
inet 192.168.56.7/24 brd 192.168.56.255 scope global noprefixroute dynamic eth0
Zabbix_Client
[root@Zabbix_Client_56 ~]# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
[root@Zabbix_Client_56 ~]# uname -r
3.10.0-862.el7.x86_64
[root@Zabbix_Client_56 ~]# hostname
Zabbix_Client_56.8
[root@Zabbix_Client_56 ~]# ip a| grep 192.168.
inet 192.168.56.8/24 brd 192.168.56.255 scope global noprefixroute dynamic eth0
JDK環境部署
注意:Zabbix監控tomcat需要通過JMX方式監控,JMX監控方式依賴JAVA環境,在此安裝JDK1.8,以下是JDK下載頁面,下載完成上傳到服務器
https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
[root@Zabbix_Server_56 src]# tar xf jdk-8u161-linux-x64.tar.gz
[root@Zabbix_Server_56 src]# mv jdk1.8.0_161 /usr/local/java
[root@Zabbix_Server_56 src]# vim /etc/profile #在profile文件最後添加java的環境變量
#################JAVA#################
export JAVA_HOME=/usr/local/java
export JRE_HOME=/usr/local/java/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
[root@Zabbix_Server_56 src]# source /etc/profile
[root@Zabbix_Server_56 src]# java -version #查看java版本信息
java version "1.8.0_161"
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)
Zabbix編譯選項
編譯是需要加上 --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 --enable-mbstring
修改Zabbix配置文件
修改zabbix java配置文件
[root@Zabbix_Server_56 /]# grep -Ev "#|^$" /usr/local/zabbix/sbin/zabbix_java/settings.sh
LISTEN_IP="0.0.0.0" #監聽服務器地址
LISTEN_PORT=10052 #監聽zabbix_java進程的端口,默認是10052
PID_FILE="/tmp/zabbix_java.pid" #zabbix_java的pid路徑
START_POLLERS=5 #zabbix_java的進程數
TIMEOUT=10 #zabbix_java的超時時間
修改zabbix_server配置文件
[root@Zabbix_Server_56 /]# grep -Ev "#|^$" /usr/local/zabbix/etc/zabbix_server.conf
LogFile=/tmp/zabbix_server.log
DBHost=localhost
DBName=zabbix
DBUser=zabbix
StartPollers=5
StartPollersUnreachable=1
StartTrappers=5
StartPingers=5
StartDiscoverers=1
StartHTTPPollers=1
JavaGateway=192.168.56.7 #Java網關地址,即爲Zabbix Server本身地址
JavaGatewayPort=10052 #Java網關監控端口
StartJavaPollers=5 #啓動Java監控的進程數
CacheSize=1G
HistoryCacheSize=256M
HistoryIndexCacheSize=256M
Timeout=10
AlertScriptsPath=/usr/local/zabbix/etc/alertscripts
FpingLocation=/usr/sbin/fping
LogSlowQueries=3000
AllowRoot=1
User=zabbix
Include=/usr/local/zabbix/etc/zabbix_server.conf.d/*.conf
重啓Zabbix Server
[root@Zabbix_Server_56 /]# /usr/local/zabbix/sbin/zabbix_java/startup.sh #啓動zabbix_java進程
[root@Zabbix_Server_56 /]# ss -anplt | grep java #查看10052端口已經被java所佔用
LISTEN 0 50 :::10052 :::* users:(("java",pid=10328,fd=14))
[root@Zabbix_Server_56 /]# ps -ef|grep java #ps所看到的進程也是zabbix_java進程
root 8829 8811 0 13:37 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_server: java poller #1 [got 0 values in 0.000001 sec, idle 5 sec]
root 8830 8811 0 13:37 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_server: java poller #2 [got 0 values in 0.000002 sec, idle 5 sec]
root 8831 8811 0 13:37 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_server: java poller #3 [got 0 values in 0.000022 sec, idle 5 sec]
root 8832 8811 0 13:37 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_server: java poller #4 [got 0 values in 0.000001 sec, idle 5 sec]
root 8833 8811 0 13:37 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_server: java poller #5 [got 0 values in 0.000001 sec, idle 5 sec]
root 10328 1 0 14:19 pts/0 00:00:00 java -server -classpath lib:lib/android-json-4.3_r3.1.jar:lib/logback-classic-0.9.27.jar:lib/logback-core-0.9.27.jar:lib/slf4j-api-1.6.1.jar:bin/zabbix-java-gateway-4.0.0.jar -Dzabbix.pidFile=/tmp/zabbix_java.pid -Dzabbix.listenIP=0.0.0.0 -Dzabbix.listenPort=10052 -Dzabbix.startPollers=5 -Dzabbix.timeout=10 -Dsun.rmi.transport.tcp.responseTimeout=10000 com.zabbix.gateway.JavaGateway
root 10362 1645 0 14:20 pts/0 00:00:00 grep --color=auto java
[root@Zabbix_Server_56 /]# /etc/init.d/zabbix_server restart
[root@Zabbix_Server_56 /]# ps -ef|grep zabbix_server #查看zabbix server進程
Tomcat端更改配置文件
被監控端tomcat也需要更改配置文件
[root@Zabbix_Client_56 /]# vim /usr/local/tomcat/bin/catalina.sh
#在catalina文件中添加以下內容,端口爲12345,hostanme爲tomcat被監控的IP地址
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=192.168.56.8"
下載相應監控JMX的jar包
注意:Tomcat可以通過jmx進行監控,默認是沒有開啓。在 tomcat 下載頁面 Extras 類別中下載 JMX Remote jar 二進制包。放在 tomcat的lib目錄下面。Jar包名稱爲catalina-jmx-remote.jar,該jar包需要相應版本需要對應tomcat版本
http://archive.apache.org/dist/tomcat/ #該鏈接是下載catalina-jmx-remote.jar的鏈接,進去找到相應版本進行下載
[root@Zabbix_Client_56 /]# /usr/local/tomcat/bin/version.sh #查看tomcat版本
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/java/jre
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Server version: Apache Tomcat/9.0.12 #該版本爲9.0.12
Server built: Sep 4 2018 22:13:41 UTC
Server number: 9.0.12.0
OS Name: Linux
OS Version: 3.10.0-862.el7.x86_64
Architecture: amd64
JVM Version: 1.8.0_181-b13
JVM Vendor: Oracle Corporation
wget http://archive.apache.org/dist/tomcat/tomcat-9/v9.0.12/bin/extras/catalina-jmx-remote.jar #9.0.12下載地址
[root@Zabbix_Client_56 src]# mv catalina-jmx-remote.jar /usr/local/tomcat/lib/
然後再到下面地址中去下載jmxcmd測試jar包
https://sourceforge.net/projects/jmxcmd/
[root@Zabbix_Client_56 src]# mv jmxcmd.jar /usr/local/tomcat/bin/
重啓tomcmat和agentd
[root@Zabbix_Client_56 src]# /usr/local/tomcat/bin/shutdown.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/java/jre
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
[root@Zabbix_Client_56 src]# /usr/local/tomcat/bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/java/jre
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@Zabbix_Client_56 src]# /etc/init.d/zabbix_agentd restart
Zabbix agent terminated.
Zabbix agent started.
[root@Zabbix_Client_56 src]# ss -anplt | grep java #可以看到12345端口已經被java佔用
LISTEN 0 50 :::42526 :::* users:(("java",pid=36174,fd=21))
LISTEN 0 1 ::ffff:127.0.0.1:8005 :::* users:(("java",pid=36174,fd=74))
LISTEN 0 50 :::38760 :::* users:(("java",pid=36174,fd=19))
LISTEN 0 100 :::8009 :::* users:(("java",pid=36174,fd=58))
LISTEN 0 100 :::8080 :::* users:(("java",pid=36174,fd=54))
LISTEN 0 50 :::12345 :::* users:(("java",pid=36174,fd=20))
Zabbix Web頁面監控
Zabbix頁面添加對tomcat的監控需要通過jmx方式
先暫時添加zabbix默認自帶的JMX模版,回頭根據需求自己寫監控Tomcat監控鍵值,創建模版
添加過之後可以看到通過JMX的變爲了綠色
zabbix自帶的監控的監控項好多都是tomcat裏面沒有的,所以會出現好多找不到鍵值等報錯,建議自己寫對tomcat監控的鍵值,自定模版