最近因為某些事情要嘗試利用 Zabbix 去監控多個硬體和虛擬機,並針對監控的內容抓取寫進資料庫的資料來做一些像是 Line 的訊息推撥,而當中也想到 Zabbix 也可以使用 zabbix-java-gateway 去監控像 tomcat 這樣的資源,所以就來安裝玩看看,以下的步驟會分為 zabbix server 端和 tomcat client 的方式。

Note

裡面有些相關的 port 防火牆有設定的話記得要開啟。

Zabbix Server


環境

  • Cent OS 7
  • OpenJDK 1.8.0_191

事前已準備(略過安裝流程)

  • zabbix 4.0.3

安裝 zabbix-java-gateway

  • package download install

    1. 前往官方 下載 source 包
    2. 安裝 (使用編譯安裝編譯時要加上 --enable-java)

    tar -xzvf zabbix-4.0.3.tar.gz
    cd zabbix-4.0.3
    ./configure --prefix=/usr/local/zabbix_java_gateway --enable-java
    make
    make install

  • npm install

    1. yum install package

    yum install zabbix-java-gateway-4.0.3-1.el7.x86_64.rpm

文件配置

  1. 修改 zabbix_java_gateway.conf 設定

vim /etc/zabbix/zabbix_java_gateway.conf

  1. 使用設定檔內以下幾個基本參數

LISTEN_IP="0.0.0.0"
LISTEN_PORT=10052
PID_FILE="/var/run/zabbix/zabbix_java.pid"
START_POLLERS=5

  1. 重啟 zabbix-java-gateway

systemctl restart zabbix-java-gateway

  1. 修改 zabbix_server.conf 設定

vim /etc/zabbix/zabbix_server.conf

  1. 修改設定內參數,而最重要的 StartJavaPollers 探測器一定要打開並且不要使用預設值 0,這邊範例使用 5,不然 Zabbix Server 的網頁會因為你沒打開他不會去要東西而不會亮綠燈,這也是我搞了好久才發現的...

JavaGateway=172.16.7.14 # your zabbix server IP
LISTEN_PORT=10052 # default setting port
StartJavaPollers=5 # default is zero

  1. 重啟 zabbix-server

systemctl restart zabbix-server


Tomcat Client


環境

  • Cent OS 7
  • OpenJDK 1.8.0_191

事前已準備(略過安裝流程)

  • Tomcat 9
  • zabbix agent

重要事項

  • 網路資源較少提到其實要先下載兩個 jar 檔來讓 zabbix-java-gateway 來呼叫從而利用 jar 檔中的 method 來取得需要監控的項目

    1. catalina-jmx-remote.jar 點我下載,這個要去官網對應的 tomcat 版本的底下的 bin 拉下來在丟到你的 tomcat lib path,他的檔案透過網頁方式去搜尋到對應的版本然後選擇 bin/extras 後才會看到
    2. cmdline-jmxclient-0.10.3.jar 點我下載,目前已經有 0.10.4 version,多了一個 attributes command
    3. 將上述兩包 jar 檔放入 tomcat lib

文件配置

  1. 修改 tomactcatalina.sh 設定上加上 JMX 的參數在 CATALINA_OPTS,我將讓 zabbix-java-gateway 可監聽的 port 設為 12346

# add JMX param
CATALINA_OPTS="$CATALINA_OPTS
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=12346
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Djava.rmi.server.hostname=172.16.4.182" # your tomcat server IP

  1. 重啟 tomcat

./shutdown.sh
./startup.sh


Zabbix Server Web

  1. login admin > Configuration > Hosts > Create host

  2. Host name 為 tomcat IP, Visiable name 為要在列表顯示的名稱,Groups 我是先選 Zabbix servers,而主要是要加入 JMX interfaces, IP 一樣為 tomcat IPport 為剛剛所設在 catalina.sh 裡的 12346,最後按下 update

  3. 跳到上面的 Templates,並在 Linked templates 加入 Template App Apache Tomcat JMX 以及 Template App Generic Java JMX,然後按下 update

  4. 回到 Hosts 頁面觀看列表,可以發現 Tomcat9JMX 亮起了綠燈

  5. 點進 Tomcat9Application,我們可以看一下基本 JMX 到底可以監聽哪些事情,例如 Memory ...等等,當然要看更細項的東西可以點選最右邊的 items

Future

之後會動手實際放一包有和 DB 連結的 war ,來利用 zabbix 監控整個專案的使用 DB 的情況再來撰寫一篇做記錄。