說明
何為自動發(fā)現(xiàn)?首先我們監(jiān)控多tomcat實例,如果一個個實例地添加或許可以完成當前需求。但是日后隨著實例的增多,再手動一個個去添加就十分不方便了。這時候需要自動發(fā)現(xiàn)這個功能,來幫助我們自動添加監(jiān)控tomcat實例。本文就以監(jiān)控tomcat線程為例,來實現(xiàn)這個自動發(fā)現(xiàn)的功能。這里zabbix版本為3.0。
創(chuàng)建自動發(fā)現(xiàn)腳本
可以理解為這個腳本能夠打印出當前服務器上所有的tomcat實例名稱。zabbix會定期執(zhí)行這個腳本,做到自動發(fā)現(xiàn)當前所有的tomcat實例,腳本放在zabbix-agent安裝路徑的scripts目錄下。而下一步就是給找到的tomcat實例添加所需要監(jiān)控的值。下面先看腳本:
# cat discover_jvm.py#!/usr/bin/python2.7 #Usage: discover tomcat_app#Last Modified: import subprocessimport json#args為自己定義查找項目名字的方式,由于各自部署方式的不同,這里需要根據(jù)實際情況來寫命令。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=(',',':'))
執(zhí)行打印結(jié)果如下所示:
# chmod a+x discover_jvm.py 賦予執(zhí)行權限# chown zabbix:zabbix discover_jvm.py 添加屬主為zabbix用戶# ./discover_jvm.py { "data":[ { "{#APP_NAME}":"app1" }, { "{#APP_NAME}":"app2" } ]}這里打印出app1、app2兩個實例,以后要是有其他實例,也能夠同樣打印出來。