说明

  何为自动发现?首先我们监控多tomcat实例,如果一个个实例地添加或许可以完成当前需求。但是日后随着实例的增多,再手动一个个去添加就十分不方便了。这时候需要自动发现这个功能,来帮助我们自动添加监控tomcat实例。本文就以监控tomcat线程为例,来实现这个自动发现的功能。这里zabbix版本为3.0。
seo优化培训,网络推广培训,网络营销培训,SEM培训,网络优化,在线营销培训

创建自动发现脚本

  可以理解为这个脚本能够打印出当前服务器上所有的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两个实例,以后要是有其他实例,也能够同样打印出来。

网友评论