关闭
Hit
enter
to search or
ESC
to close
May I Suggest ?
#leanote #leanote blog #code #hello world
柯仓无居所
Home
Archives
Tags
Search
zabbix 监控 tomcat
? zabbix ?
? jvm ?
? gc ?
? tomcat ?
723
0
0
swimming
? zabbix ?
? jvm ?
? gc ?
? tomcat ?
[TOC] - - - - -- #zabbix监控tomcat zabbix监控tomcat相关信息,我按照对tomcat中`lib`的修改,分为以下两种: ##**非侵入式** 此种方式适合zabbix服务端和客户端之前**没有网络限制**。访问端口范围: 12345-65535 - 监控主机添加Template JMX Generic、Template JMX Tomcat两个模板,并开启JMX接口。 - 监控主机需要在`bin/catalina.sh`内添加`CATALINA_OPTS`,`CATALINA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=12345"` 以上,重启应用后,稍等片刻后即可看到JMX标识变绿。 - - - - --------- ##**侵入式** 此种方式适合于zabbix服务端和客户端之前**有网络策略限制**,访问端口:12345,12346 - 监控主机添加Template JMX Generic、Template JMX Tomcat两个模板,并开启JMX接口. - 根据tomcat版本下载相应的 [catalina-jmx-remote.jar](https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/) 将下载的jar包放在tomcat下`lib`内。 - 修改`conf/server.xml`中34行左右添加如下`Listener` : `<Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener" rmiRegistryPortPlatform="12345" rmiServerPortPlatform="12346"/>` - 修改`bin/catalina.sh` 中`CATALINA_OPTS` 如下:`CATALINA_OPTS="-Djava.rmi.server.hostname=本机IP -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"` > **注意!** 两处的`CATALINA_OPTS`值和上面的值不太一样。 开通服务端访问客户端,12345和12346两个端口的相关策略,重启tomcat后,即可实现监控数据的提取。 ##**获取JVM的GC相关数据** 因zabbix无法通过agentconfig配置获取JVM相关信息,系统定时脚本又无法精确至秒,因此编写以下脚本每个10秒获取jvm相关信息,放在`/tmp/java_gc` 内。通过zabbix 的 Userparameter 获取值,获取的值后一定要使用倍数乘以值,这样不会出现数据类型格式不正确的问题**文本除外**。以下为获取相关数据脚本: ```bash #!/bin/bash check_crontab(){ #导出定时 /usr/bin/crontab -l >/tmp/crontab.tmp_old #取消自我定时 sed -e '/get_gc.sh/d' /tmp/crontab.tmp_old >/tmp/crontab.tmp if [ "$1" == "0" ];then echo "* * * * * /var/tmp/scripts/get_gc.sh" >> /tmp/crontab.tmp_old else echo "*/$1 * * * * /var/tmp/scripts/get_gc.sh" >> /tmp/crontab.tmp_old fi test -f /tmp/crontab.tmp_old && /usr/bin/crontab /tmp/crontab.tmp_old || echo /usr/bin/crontab /tmp/crontab.tmp } f_main(){ [ -z $1 ] || check_crontab $1 java_pid=`ps -ef | grep "org.apache.catalina.startup.Bootstrap" |grep -v "grep"| awk '{print $2}'` oc=`/usr/local/java/bin/jstat -gc ${java_pid}| awk 'NR==2{print $7}'` ou=`/usr/local/java/bin/jstat -gc ${java_pid}| awk 'NR==2{print $8}'` pmc=`/usr/local/java/bin/jstat -gc ${java_pid}| awk 'NR==2{print $9}'` pmu=`/usr/local/java/bin/jstat -gc ${java_pid}| awk 'NR==2{print $10}'` fgc=`/usr/local/java/bin/jstat -gc ${java_pid}| awk 'NR==2{print $13}'` fgct=`/usr/local/java/bin/jstat -gc ${java_pid}| awk 'NR==2{print $14}'` java_oc=`echo "scale=0;${oc}/1024"| bc` java_ou=`echo "scale=1;${ou}/1024"| bc` java_pmc=`echo "scale=1;${pmc}/1024"| bc` java_pmu=`echo "scale=1;${pmu}/1024"| bc` echo ${java_oc}" "${java_ou}" "${java_pmc}" "${java_pmu}" "${fgc}" "${fgct} >/tmp/java_gc } for((i=1;i<=6;i++)) do f_main $1 2>/dev/null & sleep 10 done #f_main $1 #!/bin/bash check_crontab(){ #导出定时 /usr/bin/crontab -l >/tmp/crontab.tmp_old #取消自我定时 sed -e '/get_gc.sh/d' /tmp/crontab.tmp_old >/tmp/crontab.tmp if [ "$1" == "0" ];then echo "* * * * * /var/tmp/scripts/get_gc.sh" >> /tmp/crontab.tmp_old else echo "*/$1 * * * * /var/tmp/scripts/get_gc.sh" >> /tmp/crontab.tmp_old fi test -f /tmp/crontab.tmp_old && /usr/bin/crontab /tmp/crontab.tmp_old || echo /usr/bin/crontab /tmp/crontab.tmp } f_main(){ [ -z $1 ] || check_crontab $1 java_pid=`ps -ef | grep "org.apache.catalina.startup.Bootstrap" |grep -v "grep"| awk '{print $2}'` oc=`/usr/local/java/bin/jstat -gc ${java_pid}| awk 'NR==2{print $7}'` ou=`/usr/local/java/bin/jstat -gc ${java_pid}| awk 'NR==2{print $8}'` pmc=`/usr/local/java/bin/jstat -gc ${java_pid}| awk 'NR==2{print $9}'` pmu=`/usr/local/java/bin/jstat -gc ${java_pid}| awk 'NR==2{print $10}'` fgc=`/usr/local/java/bin/jstat -gc ${java_pid}| awk 'NR==2{print $13}'` fgct=`/usr/local/java/bin/jstat -gc ${java_pid}| awk 'NR==2{print $14}'` java_oc=`echo "scale=0;${oc}/1024"| bc` java_ou=`echo "scale=1;${ou}/1024"| bc` java_pmc=`echo "scale=1;${pmc}/1024"| bc` java_pmu=`echo "scale=1;${pmu}/1024"| bc` echo ${java_oc}" "${java_ou}" "${java_pmc}" "${java_pmu}" "${fgc}" "${fgct} >/tmp/java_gc } for((i=1;i<=6;i++)) do f_main $1 2>/dev/null & sleep 10 done #f_main $1 ```
觉得不错,点个赞?
提交评论
Sign in
to leave a comment.
No Leanote account ?
Sign up now
.
0
条评论
More...
文章目录
No Leanote account ? Sign up now.