最近在做公司的Tomcat的監(jiān)控和屎,查了很多資料,也遇到很多問(wèn)題唤反,在這邊做一下整理和記錄凳寺。
環(huán)境
Zabbix 版本:3.2.4
Java 版本:1.8.0_05
Tomcat 版本:Apache Tomcat/7.0.76
監(jiān)控模版: Tomcat自帶模版(Template JMX Tomcat、 Template JMX Generic)
Zabbix Server 端的配置
1彤侍、 Zabbix 編譯安裝時(shí)肠缨,要指定 --enable-java
編譯參數(shù),會(huì)在 Zabbix 的sbin
目錄下生成zabbix_java
的目錄盏阶,如下:
[root@ZabbixServer zabbix-server]# tree -d sbin/
sbin/
`-- zabbix_java
|-- bin
`-- lib
2晒奕、 修改 zabbix 的配置文件,添加 JavaGateway
的配置段,server
會(huì)通過(guò)這個(gè)JavaGateway
來(lái)取數(shù)據(jù)脑慧,重啟 zabbix 服務(wù)
[root@ZabbixSever etc]# cat zabbix_server.conf | grep -vE "^#|^$" | grep Java
JavaGateway=127.0.0.1
JavaGatewayPort=10052
StartJavaPollers=5
[root@ZabbixSever ~]# /etc/init.d/zabbix_server restart
3魄眉、 開(kāi)啟 zabbix_java
服務(wù)
[root@ZabbixSever etc]# /usr/local/zabbix-server/sbin/zabbix_java/startup.sh
Tocmat 客戶端的配置
1、 修改 Tomcat 啟動(dòng)腳本的環(huán)境變量闷袒,可以在catalina.sh
中添加坑律,也可以添加在setenv.sh
文件中。
[root@agent bin]# cat setenv.sh
CATALINA_OPTS="-Djava.rmi.server.hostname=主機(jī)IP -Djavax.management.builder.initial= -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
2囊骤、 重啟 Tomcat 服務(wù)晃择,并檢測(cè)
首先看一下本地是否有 12345 的端口被監(jiān)聽(tīng)
[root@agent bin]# netstat -nltp | grep 12345
tcp 0 0 :::12345 :::* LISTEN 11380/java
使用cmdline-jmxclient-0.10.3.jar
來(lái)檢測(cè)是否可以取到數(shù)據(jù)
[root@agent xunjian]# java -jar cmdline-jmxclient-0.10.3.jar - 172.16.30.100:12345 java.lang:type=Memory NonHeapMemoryUsage
03/14/2017 19:58:29 +0800 org.archive.jmx.Client NonHeapMemoryUsage:
committed: 23920640
init: 2555904
max: -1
used: 23252880
Zabbix Server 添加Tomcat
主機(jī)
1、 添加這臺(tái) Tocmat 主機(jī)的 host
監(jiān)控
2也物、 添加 JMX interfaces
宫屠,填入 Tomcat 主機(jī)IP和 12345 的端口
3、 在 Templates
中添加 Template JMX Generic
和 Template JMX Tomcat
兩個(gè)模版
無(wú)監(jiān)控?cái)?shù)據(jù)的問(wèn)題處理
添加好監(jiān)控后焦除,等一段時(shí)間觀察到如下現(xiàn)象:
-
Template JMX Generic
有部分的監(jiān)控是取不到數(shù)據(jù) -
Template JMX Tomcat
大部分監(jiān)控項(xiàng)取不到數(shù)據(jù)
解決辦法: 對(duì)模版進(jìn)行更改
Template JMX Generic
模版中可以將取不到數(shù)據(jù)或者用不到的監(jiān)控項(xiàng)去除或者disable
掉激况。
Template JMX Tomcat
模版的通用性不是很強(qiáng),根據(jù)使用的 Tomcat
的 Connector
運(yùn)行模式(bio|nio|apr
)進(jìn)行自定義更改膘魄。
我這邊使用的是bio
的乌逐,對(duì)模版中Item
的Key
進(jìn)行如下更改(推薦使用宏變量):
# 例子: http-8080 bytes received per second 監(jiān)控項(xiàng)的Key
jmx["Catalina:type=GlobalRequestProcessor,name=http-8080",bytesReceived]
# 更改為
jmx["Catalina:type=GlobalRequestProcessor,name=\"http-bio-8080\"",bytesReceived]
# 例子: jk-8009 bytes received per second 監(jiān)控項(xiàng)的Key
jmx["Catalina:type=GlobalRequestProcessor,name=jk-8009", bytesReceived]
#更改為
jmx["Catalina:type=GlobalRequestProcessor,name=\"ajp-bio-8009\"", bytesReceived]
# 例子: Maximum number of active sessions so far 監(jiān)控項(xiàng)的Key
jmx["Catalina:type=Manager,path=/,host=localhost",maxActive]
#更改為
jmx["Catalina:type=Manager,context=/,host=localhost",maxActive]
PS
很多教程說(shuō)是要將catalina-jmx-remote.jar
放到Tomcat
的lib
目錄和Zabbix_Java
的lib
目錄下,我這邊開(kāi)始也分別放置了创葡,后來(lái)刪掉后測(cè)試浙踢,取數(shù)據(jù)也是正常的,可以自行測(cè)試一下灿渴。如哪位大神知道原因洛波,希望可以告知一下。
catalina-jmx-remote.jar
可以在Tomcat
對(duì)應(yīng)版本的官網(wǎng)下載頁(yè)面找到骚露。