说明
何为自动发现?首先我们监控多tomcat实例,如果一个个实例地添加或许可以完成当前需求。但是日后随着实例的增多,再手动一个个去添加就十分不方便了。这时候需要自动发现这个功能,来帮助我们自动添加监控tomcat实例。本文就以监控tomcat线程为例,来实现这个自动发现的功能。这里zabbix版本为3.0。
创建自动发现脚本
可以理解为这个脚本能够打印出当前服务器上所有的tomcat实例名称。zabbix会定期执行这个脚本,做到自动发现当前所有的tomcat实例,脚本放在zabbix-agent安装路径的scripts目录下。而下一步就是给找到的tomcat实例添加所需要监控的值。下面先看脚本:
# cat discover_jvm.py#!/usr/bin/python2.7 #Usage: discover tomcat_app#Last Modified:
import subprocessimport json#args为自己定义查找项目名字的方式,由于各自部署方式的不同,这里需要根据实际情况来写命令。args="find /opt/app/applications -name 'catalina.properties' | sort -n | uniq | awk -F'/' '{print $5}'"t=subprocess.Popen(args,shell=True,stdout=subprocess.PIPE).communicate()[0]
apps=[]for app in t.split('\n'): if len(app) != 0:
apps.append({'{#APP_NAME}':app})#打印出zabbix可识别的json格式print json.dumps({'data':apps},indent=4,separators=(',',':'))执行打印结果如下所示:
# chmod a+x discover_jvm.py 赋予执行权限# chown zabbix:zabbix discover_jvm.py 添加属主为zabbix用户# ./discover_jvm.py {
"data":[ {
"{#APP_NAME}":"app1"
}, {
"{#APP_NAME}":"app2"
}
]}这里打印出app1、app2两个实例,以后要是有其他实例,也能够同样打印出来。
