您的位置:首页 > 其它

zabbix通过External checks的方式自动发现交换机端口(只提取up的)

2017-10-20 18:17 453 查看
前言说明:

公司需要监控交换机,但有些交换机端口是不使用的,如果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的方式抓取数据:




模板见附件:

附件:http://down.51cto.com/data/2368674
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  交换机 zabbix External