zabbix通过External checks的方式自动发现交换机端口(只提取up的)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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界面的配置:
具体监控项是用SNMP的方式抓取数据:
模板见附件:
本文出自 “鹏哥玩linux” 博客,请务必保留此出处http://pengge.blog.51cto.com/25661/1974700
以上是关于zabbix通过External checks的方式自动发现交换机端口(只提取up的)的主要内容,如果未能解决你的问题,请参考以下文章
zabbix_get [2520]: Check access restrictions in Zabbix agent configuration
zabbix proxy出现no active checks on server not found
zabbix客户端错误:no active checks on server [192.168.1.107:10051]: host [ ] not found