Zabbix通過JMX監控Tomcat

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進程

Zabbix通過JMX監控Tomcat

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"

Zabbix通過JMX監控Tomcat

下載相應監控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下載地址

Zabbix通過JMX監控Tomcat

[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

先暫時添加zabbix默認自帶的JMX模版,回頭根據需求自己寫監控Tomcat監控鍵值,創建模版

Zabbix通過JMX監控Tomcat

添加過之後可以看到通過JMX的變爲了綠色

Zabbix通過JMX監控Tomcat

zabbix自帶的監控的監控項好多都是tomcat裏面沒有的,所以會出現好多找不到鍵值等報錯,建議自己寫對tomcat監控的鍵值,自定模版

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章