zabbix通過External checks的方式自動發現交換機端口(只提取up的)

前言說明:

 

公司需要監控交換機,但有些交換機端口是不使用的,如果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界面的配置:

 

2eec04c268fe15640e741dd28f723d34.png-wh_

具體監控項是用SNMP的方式抓取數據:

10b95a8897a3579305fcb9b91792ac59.png-wh_


 

模板見附件:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章