在tomcat配置文件中定义JMX端口,并附加到tomcat启动参数中:
...
JMX_PORT_NUMBER=6791
JAVA_OPTS=
"-server -Xms2048M -Xmx2048M -Xmn512m -Xss256k -XX:+AggressiveOpts -XX:ParallelGCThreads=8
-XX:PermSize=128M -XX:MaxPermSize=256M -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+UseParNewGC
-XX:+CMSParallelRemarkEnabled -XX:LargePageSizeInBytes=128m -XX:+UseCMSInitiatingOccupancyOnly
-Djava.awt.headless=true -Djava.library.path=/usr/local/apr/lib
-Dnet.spy.log.LoggerImpl=net.spy.memcached.compat.log.SunLogger"
JAVA_OPTS=$JAVA_OPTS
" -Dcom.sun.management.jmxremote.port=$JMX_PORT_NUMBER"
JAVA_OPTS=$JAVA_OPTS
" -Dcom.sun.management.jmxremote.host=127.0.0.1"
JAVA_OPTS=$JAVA_OPTS
" -Dcom.sun.management.jmxremote.ssl=false"
JAVA_OPTS=$JAVA_OPTS
" -Dcom.sun.management.jmxremote.authenticate=true"
JAVA_OPTS=$JAVA_OPTS
" -Dcom.sun.management.jmxremote.access.file=$CATALINA_HOME/conf/jmxremote.access"
JAVA_OPTS=$JAVA_OPTS
" -Dcom.sun.management.jmxremote.password.file=$CATALINA_HOME/conf/jmxremote.passwd"
###################################################
# For shutdown ,we use STOP_OPTS, since a jmx bug
###################################################
STOP_OPTS=
"$CATALINA_OPTS -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
export
JAVA_OPTS
export
STOP_OPTS
...
zabbix自动发现:通过遍历各服务器/opt/platform/services/*/*/目录下的server.sh,得到service name和jmx端口的对应关系的JSON文件
java_discovery.sh:
#!/bin/bash
tomcatlist=(`
ls
-al
/etc/sysconfig/tomcat_websvr
*|
grep
-
v
~$|
awk
'{print $NF}'
|
awk
-F /
'{print $NF}'
`)
length=${
#tomcatlist[@]}
printf
"{\n"
printf
'\t'
"\"data\":["
for
((i=0;i<$length;i++))
do
JMX_PORT=
JMX_PORT=`
cat
/etc/sysconfig/
${tomcatlist[$i]}|
grep
JMX_PORT_NUMBER= |
awk
-F =
'{print $NF}'
`
if
[ -n ${JMX_PORT} ];
then
printf
'\n\t\t{'
printf
"\"{#TOMCAT_NAME}\":\"${tomcatlist[$i]}\","
printf
'\n\t\t'
printf
"\"{#JMX_PORT}\":\"${JMX_PORT}\"}"
if
[ $i -lt $[$length-1] ];
then
printf
','
fi
fi
done
printf
"\n\t]\n"
printf
"}\n"
修改zabbix conf文件,定义user parameter
zabbix_agentd.conf:
UserParameter=tomcatcheck[*],
bash
/opt/ops/zabbix/agent_bin/tomcat_discovery
.sh
重启zabbix agent
/opt/ops/zabbix/sbin/zabbix_agentd
/opt/ops/zabbix/etc/zabbix_agentd
.conf