前言說明:
公司需要監控交換機,但有些交換機端口是不使用的,如果zabbix通過snmp直接抓取自動發現端口,就沒法排除不使用的端口,因此我採用了external check的方式去自動發現交換機端口,並自動添加監控項。
本人QQ:279379936
zabbixExternal checks 外部命令檢測
1. 概述
zabbix server運行腳本或者二進制文件來執行外部檢測,外部檢測不需要在被監控端運行任何agentd
備註:請不要過度使用外部檢測,這會嚴重降低zabbix系統性能
item key語法如下:
ARGUMENT DEFINITION
script shell腳本或者二進制文件名.
parameter(s) Optional command line parameters.
如果不想傳遞任何參數,如下:
script[] or
script
zabbix server會再定義好的目錄裏面執行外部腳本(zabbixserver中的配置extenalScripts),這個腳本將使用zabbix的運行用戶身份運行。請注意權限以及只有指定目錄中的命令才能夠被執行。
zabbix腳本使用標準方式輸出(完整輸出但是會刪除末尾的空白),標準錯誤和退出代碼將會被丟棄
備註:請不要過度使用那個外部檢測,這會嚴重降低zabbix系統性能
2. 範例
執行帶參數腳本 check_oracle.sh "-h<host IP address>".
check_oracle.sh["-h","{HOST.CONN}"]
zabbix將會執行:
check_oracle.sh "-h""192.168.1.4"
下面爲本人的具體配置說明:
Zabbix_server.conf中的配置:
加這一行:ExternalScripts=/opt/zabbix/externalscripts
重啓zabbix server
在/opt/zabbix/externalscripts下放置抓取數據的腳本:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# cat/opt/zabbix/externalscripts/get_switch_up_port.py #!/usr/bin/env python import commands import sys def get_up_port_name(public,ip): port_infos=commands.getoutput("snmpwalk -v2c -c %s %sIF-MIB::ifOperStatus|grep 'up(1)'|grep -v grep|awk -F\. '{print $2}'|awk'{print $1}'|tr '\n' ' '" % (public, ip)).split() #print port_infos num=len(port_infos) i=1 print '{' print '\t"data":[' for port_id in port_infos: port_name=commands.getoutput("snmpwalk -v2c -c %s %s IF-MIB::ifName.%s|awk'{print $NF}'" % (public, ip, port_id)) if i == num: info='\t\t{"{#SNMPVALUE}":"%s","{#SNMPINDEX}":"%s"}'% (port_name,port_id) else: info='\t\t{"{#SNMPVALUE}":"%s","{#SNMPINDEX}":"%s"},'% (port_name,port_id) print info i=i+1 print '\t]' print '}' if __name__ == '__main__': if len(sys.argv) == 3: public = sys.argv[1] ip = sys.argv[2] get_up_port_name(public, ip)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Chmod+x /opt/zabbix/externalscripts/get_switch_up_port.py
注:確保系統存在python環境
Zabbix server界面的配置:
具體監控項是用SNMP的方式抓取數據:
模板見附件: