centos7,zabbix3.2通過zabbix_java_gateway監控jmx[java/tomcat]


網絡上很多教程也比較多和全了,但是自己做時候多多少少的坑備注下吧。

1,監控原理簡單說一下,就是zabbix_server通過代理(zabbix_java_gateway)來獲取agent端(tomcat)的數據。【當然可以和zabbix_agent分開使用了】

2。配置舉例吧。zabbix_server:10.2.2.123  zabbix_java_gateway:10.2.2.124  tomcat:10.2.2.125  

  三台機器是可以在一起的,但是為了區分三個作用還是分開來看吧

3.在zabbix_server端,修改配置文件

JavaGateway=10.2.2.124
JavaGatewayPort=10052
StartJavaPollers=5

在zabbix_java_gateway修改配置文件

LISTEN_IP="0.0.0.0"
LISTEN_PORT=10052
START_POLLERS=5

listen_ip 我猜測是監控的地址池,不過沒有驗證  StartJavaPollers<=START_POLLERS

tomcat端修改catalina.sh文件,$(tomcat)/bin/Catalina.sh加入

 

export CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote
  -Dcom.sun.management.jmxremote.port=12345
  -Dcom.sun.management.jmxremote.ssl=false
  -Dcom.sun.management.jmxremote.authenticate=false
  -Dcom.sun.management.jmxremote.local.only=false
  -Djava.rmi.server.hostname=10.2.2.125"

 

注意這個10.2.2.125要寫進/etc/hosts中,因為jmxremote這個包在回調信息時候回查詢其域名,不然回找不到路由。有時候不寫也行,我塊兒我也不太明白,先留着這個坑吧(我測試過連接成功之后刪除可以用,可能是記住了路由,不過最后還是都配置好比較好)。最好實現所有的內網服務器可以通過域名來互相訪問通。(ansible/saltstack之類的來做唄)

4.有人說要把jmxremote這個包放到$(tomcat)/lib/中,不過我沒放也可以,給個下載地址吧。一般在tomcat自己鏡像同目錄的bin/extras/  目錄中

然后下載cmdline-jmxclient-0.10.3.jar這個包,我一直不知道這個包是哪個公司做的,而且這個包好像也沒人用新版本,這個版本用了n年了吧,不過能用就挺好。

現在tomcat端  測試

java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:12345

org.apache.logging.log4j2:component=Loggers,name=org.springframework,type="WebappClassLoader\n  context: ROOT\n  delegate: false\n----------> Parent Classloader:\njava.net.URLClassLoader@4bf558aa\n"
org.apache.logging.log4j2:component=Appenders,name=RollingFile,type="WebappClassLoader\n  context: ROOT\n  delegate: false\n----------> Parent Classloader:\njava.net.URLClassLoader@4bf558aa\n"
Catalina:context=/,host=localhost,type=Loader
com.alibaba.druid:type=DruidDataSourceStat
Catalina:name=HttpRequest1,type=RequestProcessor,worker="http-nio-8088"
java.util.logging:type=Logging
org.apache.logging.log4j2:component=Loggers,name=,type="WebappClassLoader\n  context: ROOT\n  delegate: false\n----------> Parent Classloader:\njava.net.URLClassLoader@4bf558aa\n"
java.lang:type=Compilation
Catalina:port=8088,type=Connector
JMImplementation:type=MBeanServerDelegate
java.lang:type=ClassLoading

有數據就說明catalina.sh配置沒問題

然后在zabbix_java_gateway端 測試

java -jar cmdline-jmxclient-0.10.3.jar - 10.2.2.125:12345

org.apache.logging.log4j2:component=Loggers,name=org.springframework,type="WebappClassLoader\n  context: ROOT\n  delegate: false\n----------> Parent Classloader:\njava.net.URLClassLoader@4bf558aa\n"
org.apache.logging.log4j2:component=Appenders,name=RollingFile,type="WebappClassLoader\n  context: ROOT\n  delegate: false\n----------> Parent Classloader:\njava.net.URLClassLoader@4bf558aa\n"
Catalina:context=/,host=localhost,type=Loader
com.alibaba.druid:type=DruidDataSourceStat
Catalina:name=HttpRequest1,type=RequestProcessor,worker="http-nio-8088"
java.util.logging:type=Logging
org.apache.logging.log4j2:component=Loggers,name=,type="WebappClassLoader\n  context: ROOT\n  delegate: false\n----------> Parent Classloader:\njava.net.URLClassLoader@4bf558aa\n"
java.lang:type=Compilation
Catalina:port=8088,type=Connector
JMImplementation:type=MBeanServerDelegate
java.lang:type=ClassLoading

要讓zabbix_java_gateway端也能獲取數據才行

 

5.zabbix自帶模板除了檢測版本和壓縮傳輸的兩項,其他基本不能直接用,要用java -jar cmdline-jmxclient-0.10.3.jar - 10.2.2.125:12345 | grep "監控項"慢慢調整才能用

比如

jmx["Catalina:type=GlobalRequestProcessor,name=http-8080",requestCount]
調整為
jmx["Catalina:type=GlobalRequestProcessor,name=\"http-8080\"",requestCount]

一個一個改太麻煩,可以導出模板xml文件,vim 或者 emeditor來批量修改(其他帶正則表達式的替換工具也行)

改好了就添加主機,使用jmx的方式IP:port     10.2.2.125:12345

關聯模板,

完成

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM