說(shuō)明

  何為自動(dòng)發(fā)現(xiàn)?首先我們監(jiān)控多tomcat實(shí)例,如果一個(gè)個(gè)實(shí)例地添加或許可以完成當(dāng)前需求。但是日后隨著實(shí)例的增多,再手動(dòng)一個(gè)個(gè)去添加就十分不方便了。這時(shí)候需要自動(dòng)發(fā)現(xiàn)這個(gè)功能,來(lái)幫助我們自動(dòng)添加監(jiān)控tomcat實(shí)例。本文就以監(jiān)控tomcat線程為例,來(lái)實(shí)現(xiàn)這個(gè)自動(dòng)發(fā)現(xiàn)的功能。這里zabbix版本為3.0。
seo優(yōu)化培訓(xùn),網(wǎng)絡(luò)推廣培訓(xùn),網(wǎng)絡(luò)營(yíng)銷培訓(xùn),SEM培訓(xùn),網(wǎng)絡(luò)優(yōu)化,在線營(yíng)銷培訓(xùn)

創(chuàng)建自動(dòng)發(fā)現(xiàn)腳本

  可以理解為這個(gè)腳本能夠打印出當(dāng)前服務(wù)器上所有的tomcat實(shí)例名稱。zabbix會(huì)定期執(zhí)行這個(gè)腳本,做到自動(dòng)發(fā)現(xiàn)當(dāng)前所有的tomcat實(shí)例,腳本放在zabbix-agent安裝路徑的scripts目錄下。而下一步就是給找到的tomcat實(shí)例添加所需要監(jiān)控的值。下面先看腳本:

# cat discover_jvm.py#!/usr/bin/python2.7 #Usage: discover tomcat_app#Last Modified:
 import subprocessimport json#args為自己定義查找項(xiàng)目名字的方式,由于各自部署方式的不同,這里需要根據(jù)實(shí)際情況來(lái)寫命令。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可識(shí)別的json格式print json.dumps({'data':apps},indent=4,separators=(',',':'))

  執(zhí)行打印結(jié)果如下所示:

# chmod a+x discover_jvm.py 賦予執(zhí)行權(quán)限# chown zabbix:zabbix discover_jvm.py 添加屬主為zabbix用戶# ./discover_jvm.py {
    "data":[        {
            "{#APP_NAME}":"app1"
        },        {
            "{#APP_NAME}":"app2"
        }
    ]}這里打印出app1、app2兩個(gè)實(shí)例,以后要是有其他實(shí)例,也能夠同樣打印出來(lái)。

網(wǎng)友評(píng)論