1. 程式人生 > >如何用zabbix 監控 tomcat

如何用zabbix 監控 tomcat

監控是比較容易調通的,就是zabbix 預設的 jmx tomcat和 jmx catalina模板存在不小的問題。最終的監控項什麼的可能不全,只能自行去查詢。

tomcat大致分佈:

代理端: java-gateway服務
客戶端: catalina.sh修改
web端: JMX interfaces 調通(跟Agent interfaces同級別的東西)
一. 安裝 配置 java-gateway

本文java-gate-way是安裝在 proxy上。

一般分為兩種情況:
如果之前編譯安裝的 有加入 --enable-java,沒啥好講究的,直接配置一下 sbin/zabbix_java/settings.sh 和 zabbix_proxy.conf 檔案
如果之前編譯沒有加java選項,你可以重新編譯一下,但是不安裝即可;(不建議這麼做)你還可以隨便在另外一個地方 編譯安裝一份新的出來,然後把編譯安裝出來的 zabbix_java整個目錄拷過來即可,反正是沒什麼區別的。

1. 配置 settings.sh

整個檔案生效的欄位如下:

LISTEN_IP="0.0.0.0"
LISTEN_PORT=10052
PID_FILE="/zabbix/zabbix/zabbix_java.pid"
START_POLLERS=30
TIMEOUT=30
2.配置 zabbix_proxy.conf

java相關的配置如下:

JavaGateway=xx.xx.xx.xx
JavaGatewayPort=10052
StartJavaPollers=2
3.啟動java gateway

javagateway 啟動與關閉 用的就是 zabbix_java 下的 startup.sh 和 shutdown.sh
啟動的話,切換到對應目錄下 ./startup.sh 即可
如果啟動成功會生成/zabbix/zabbix/zabbix_java.pid 這個儲存程序號的檔案,可 ps -ef 看是否有這個程序。

二.除錯客戶端

修改配置檔案 catalina.sh 新增如下欄位 這裡的port就是 java agent的通訊埠,hostname最好填本機IP 。

export 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=168.192.10.95"

重啟 tomcat 重啟tomcat 即可

三.web端配置

主機新增 jmx interfaces 點開被監控的主機,配置 他的 JMX interfaces,填上本機ip 和 12345埠即可。

關聯模板 當JMX 按鈕已經綠了,就是通了, 給他關聯兩個預設的模板 Apache Tomcat JMX 和 Generic Java JMX

四. 模板裡的監控項除錯

Zabbix的模板並不能和 tomcat完全容納,只能一點點的除錯(大多數時候 tomcat的啟動埠都不是用8080,很多都是不符合的)

1.下載除錯工具

下載 cmdline-jmxclient-0.10.3.jar 到 代理端

2. 執行命令的方法

java -jar cmdline-jmxclient-0.10.3.jar - 168.192.10.95:12345 + key(注意此處的- 168.192.10.95中間有個空格,ip是之前的hostname,這個測試對 命令格式要求比較高,不能錯一點)

下面舉一些具體的執行例子:(列舉的都是 很明顯要調整的,沒涉及到的還需自行測試,方法反正是這個方法)
(1) java -jar cmdline-jmxclient-0.10.3.jar - 168.192.10.95:12345
這條命令 輸出的是 整個 模板裡的 監控項 鍵名 鍵值 引數 格式之類。可以這樣說,只有這裡面有的,zabbix才能正常監控。
(2)java -jar cmdline-jmxclient-0.10.3.jar - 168.192.10.95:12345| grep type=Manager

  如何用zabbix 監控 tomcat如何用zabbix 監控 tomcat  

給出這條語句是發現 預設模板裡的 和這個有非常明顯的區別, 預設模板裡的是 path=/ 而圖片裡的為 context=/

(3)java -jar cmdline-jmxclient-0.10.3.jar - 168.192.10.95:12345|grep -i globalrequestprocessor

  如何用zabbix 監控 tomcat如何用zabbix 監控 tomcat  

上面是關於 tomcat 埠的,這裡跟預設的模板裡存在的埠監控項也會有非常大的區別

(4)java-jarcmdline-jmxclient-0.10.3.jar-168.192.10.95:12345"Catalina:name=\"ajp-bio-7007\",type=GlobalRequestProcessor" bytesReceived
上面這條命令也是很典型的,這裡的格式 代表的也是模板裡的 key的格式,這些都是一一對應的。
key值裡遇到name=ajp-bio-7007 這種也是需