zabbix通過JMX監控Tomcat


一、zabbix java gateway編譯參數如下

如果沒有zabbix的jmx封裝的話,自己來寫自定義腳本監控tomcat也是可以的,只是很麻煩。通過zabbix的jmx,監控tomcat就變得很簡單。

java環境安裝:

yum install java-1.7.0-openjdk java-1.7.0-openjdk-devel -y

要使用java gateway需要在源碼安裝zabbix的時候,在./configure的時候加入

--enable-java

以下是我的zabbix server編譯參數:

/configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2 --enable-java
make
make install

看下有沒有成功:

ll -h /usr/local/zabbix/sbin/zabbix_java/

二、zabbix server啟動java gateway

/usr/local/zabbix/sbin/zabbix_java/startup.sh

三、看下java gateway的監控端口(10052)

ps auxfw|grep JavaGateway

四、zabbix server配置vim /usr/local/zabbix/etc/zabbix_server.conf

JavaGateway=192.168.1.106
JavaGatewayPort=10052
StartJavaPollers=5

zabbix server --> zabbix java gateway --> 訪問tomcat服務器

五、tomcat服務器加入如下配置(vim /usr/local/tomcat/bin/catalina.sh)

CATALINA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=12345 -Djava.rmi.server.hostname=192.168.1.106"
重啟tomcat:
/usr/local/tomcat/bin/startup.sh 

需要先下載一個cmdline-jmxclient-0.10.3.jar,用來測試jmx獲取監控數據,獲取沒問題后再在zabbix網頁上添加監控項目。

六、自定義添加

jmx一般監控,都適用,講講自定義監控tomcat:
cd /usr/local/tomcat/
java -jar cmdline-jmxclient-0.10.3.jar - 192.168.1.106:12345 java.lang:type=Memory HeapMemoryUsage
java -jar cmdline-jmxclient-0.10.3.jar - 192.168.1.106:12345 java.lang:type=OperatingSystem ProcessCpuLoad

zabbix上添加監控:

先添加主機,使用jmx的接口進行監控。

jmx["java.lang:type=Memory",HeapMemoryUsage.used]默認(單位B)
jmx["java.lang:type=Memory",HeapMemoryUsage.max]默認(單位B)
jmx["java.lang:type=Memory",NonHeapMemoryUsage.max]  默認(單位B)
jmx["java.lang:type=Memory",NonHeapMemoryUsage.used]  默認(單位B)
jmx["java.lang:type=ClassLoading",UnloadedClassCount]  默認
jmx["java.lang:type=ClassLoading",LoadedClassCount]  默認
jmx["java.lang:type=ClassLoading",TotalLoadedClassCount] 默認
jmx["java.lang:type=OperatingSystem",OpenFileDescriptorCount] 默認
jmx["java.lang:type=OperatingSystem",MaxFileDescriptorCount] 默認
jmx["java.lang:type=OperatingSystem",ProcessCpuLoad]浮點數 % 自定義倍數100
jmx["java.lang:type=Runtime",Uptime] 默認 探測是否存活(nodata3分鍾)

tomcat監控:

java -jar cmdline-jmxclient-0.10.3.jar - 192.168.1.106:12345 |grep -i Catalina
java -jar cmdline-jmxclient-0.10.3.jar - 192.168.1.106:12345 "Catalina:name=\"http-bio-8080\",type=GlobalRequestProcessor" requestCount

zabbix上添加如下:

jmx["Catalina:name=\"http-bio-8080\",type=GlobalRequestProcessor",requestCount] 每秒的請求數
jmx["Catalina:name=\"http-bio-8080\",type=ThreadPool",maxThreads]

七、使用模板

jmx generic
jmx tomcat 默認的很多不能用,得改下

tomcat的安裝腳本:

#!/bin/sh
LANG=C

if [ -d "/usr/local/tomcat/" ];then
    echo "tomcat is install"
    exit 1
else
    echo "tomcat in not install"
fi

my_gcc=`rpm -qa gcc`
if [[ -n "$my_gcc" ]];then
    echo "$my_gcc" 
else
    yum -y install gcc
fi

my_make=`rpm -qa make`
if [[ -n "$my_make" ]];then
    echo "$my_make"
else
    yum -y install make 
fi

my_tar=`rpm -qa tar`
if [[ -n "$my_tar" ]];then
    echo "$my_tar"
else
    yum -y install tar
fi

my_openssl=`rpm -qa openssl`
if [[ -n "$my_openssl" ]];then
    echo "$my_openssl"
else
    yum -y install openssl
fi

my_openssl_devel=`rpm -qa openssl-devel`
if [[ -n "$my_openssl_devel" ]];then
    echo "$my_openssl_devel"
else
    yum -y install openssl-devel
fi

my_jdk=`rpm -qa java-1.7.0-openjdk`
if [[ -n "$my_jdk" ]];then
    echo "$my_jdk"
else
    yum -y install java-1.7.0-openjdk
fi

cd /usr/local/src
tar -zxvf apache-tomcat-7.0.63.tar.gz
mv apache-tomcat-7.0.63 /usr/local/tomcat
echo "install tomcat success. tomcat is in /usr/local/tomcat"
exit 0

 


免責聲明!

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



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