zabbix自动发现规则实现批量监控交换机端口
1、创建群组,名称自己取
2、创建模板
3、可以看到模板添加完成后,里面什么监控项都没有
4、创建自动发现规则
名称:Discovery Switch Interface
类型:SNMP agent
键值:ifDescr
SNMP OID:discovery[{#IFDESCR},1.3.6.1.2.1.2.2.1.2,{#IFINDEX},1.3.6.1.2.1.2.2.1.1,{#IFALIAS},1.3.6.1.2.1.31.1.1.1.18,{#STATUS},1.3.6.1.2.1.2.2.1.8]
discovery 是zabbix内置的一个自动发现函数,使用规则必须遵循语法 discovery[{#变量名},值,{#变量名1},值1,{#变量名2},值2]
{#IFDESCR} 这个是自定义变量,定义获取交换机所有接口名称,1.3.6.1.2.1.2.2.1.2 这是交换机所有接口的OID值,用于获取接口名称
{#IFINDEX} 定义获取接口序号,1.3.6.1.2.1.2.2.1.1 是获取交换机所有序号OID值,用于后面监控交换机端口序号用
{#IFALIAS} 定义获取接口描述信息,1.3.6.1.2.1.31.1.1.1.18 是获取交换机所有接口描述OID值,用于在图形显示接口描述信息
{#STATUS} 定义获取交换机接口状态,0---未知、1---up、2---down,1.3.6.1.2.1.2.2.1.8 是获取交换机所有接口状态信息,用于在后期过滤不监控状态为 down 的接口使用
* 注:OID值可以用 MIB-browser 软件来获取,或者用 snmpwalk 命令获取,下面列出 H3C 交换机一些常用的OID值
IF-MIB::ifDescr 1.3.6.1.2.1.2.2.1.2 #接口名称
IF-MIB::ifIndex 1.3.6.1.2.1.2.2.1.1 #接口序号
1.3.6.1.2.1.31.1.1.1.18 #接口描述,暂时没找到 IF-MIB 所在路径
IF-MIB::ifOperStatus 1.3.6.1.2.1.2.2.1.8 #接口状态
IF-MIB::ifInOctets 1.3.6.1.2.1.2.2.1.10 #接口入流量
IF-MIB::ifOutOctets 1.3.6.1.2.1.2.2.1.16 #接口出流量
大家也可以用这款工具来获取交换机的OID
* 或者使用 snmpwalk 命令获取,以下两条命令都能获取交换机所有接口名称
sudo snmpwalk -v 2c -c public 10.20.80.100 IF-MIB::ifDescr
sudo snmpwalk -v 2c -c public 10.20.80.100 1.3.6.1.2.1.2.2.1.2
以上两条命令都能获取交换机所有接口名称,命令参数如下:
#-v 交换机上当前配置的snmp协议版本,一般都用2c
#-c 交换机上配置snmp使用的团体名
#10.20.80.100 交换机的ip地址
#IF-MIB::ifDescr 交换机OID路径
#1.3.6.1.2.1.2.2.1.2 交换机OID值
5、创建监控项原型
名称:In traffic Interface {#IFDESCR} #IFDESCR变量表示获取所有接口名称
类型:SNMP agent
键值:if.in.bits[{#IFDESCR}] #IFDESCR变量表示获取所有接口名称
SNMP OID:1.3.6.1.2.1.2.2.1.10.{#SNMPINDEX} #zabbix会轮询SNMPINDEX序号并和前面的值相结合,以此来获取所有接口流量
单位:bps
更新间隔:1s
然后切换到预处理项,添加2项如下,自定义倍数 *8,表示是将bit换算成bps计算,填好后点击更新
6、按照同样的方法,我们再把接口的出流量统计也加上
所有操作都加好后,我们就监控获取了两条监控项,如下图:
7、添加图形原型
名称是直接显示在图形里的,所以我们填写名称时最好把端口变量写上,我这里写的是 IT_Dep Switch {#IFDESCR} 【{#IFALIAS}】 ,到时候图形上显示为 IT_Dep Switch 接口名称 【接口描述】
8、创建主机,套用模板
主机名称:不可有中文
可见的名称:将显示在主机列表
模板:选择刚创建的模板
群组:选择模板所在的群组
SNMP:填写交换机的ip
端口:SNMP默认161
SNMP version:SNMPv2
SNMP community:交换机上配置的snmp团体名
9、创建完成后,等待一会,我们就可以看到已经有监控项了
10、查看最新数据,监测-----主机-----最新数据
可以看到所有接口都有数据了
查看图形数据:监测-----主机-----图形,可以看到所有接口图形都展示了
11、过滤不要的监控项,比如 loopback口、vlanif接口、null接口、AUX接口、所有状态为down的接口,对这些对象监控指标没有任何意义,所以我们需要添加过滤器操作
12、添加过滤器,全局添加,管理-----一般-----正则表达式-----新的正则表达式,输入如下内容,排除包含 loopback、vlan-interface、null、AUX 接口
再创建一个接口为down的也过滤,有朋友可能要问了那为什么不和上面那个规则创建在一起呢?因为这个接口状态的变量不是在 IFDESCR 里面,而是存在于 STATUS 这个变量中,所以我们需要单独创建一条规则出来
13、应用过滤器,找到刚创建的模板,点击过滤器,宏 我们填写自动发现SNMP OID中定义的变量名,正则表达式直接@调用在系统全局创建的正则表达式名称
14、我们再回到主机,查看调用模板的主机监控项,可以看到zabbix已经不再监控 loopback口、vlanif接口、null接口、所有状态为down的接口了
15、我们可以手动将这些报错的监控项全部删掉,要不然zabbix需要等到30天后才会自动删除这些项,我们只需等待30秒,zabbix下一次自动发现规则只会监控所有接口为up的端口,可以看到实操后的效果
16、看到图形也只有7条数据了