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条数据了

 

posted @ 2024-03-15 14:17  凡是過往;皆為序章  阅读(1531)  评论(0编辑  收藏  举报