zabbix已是网工的一大利器,zabbix监控网络设备这一场景非常常见。及时发现网络设备风扇、cpu和内存、板卡、端口流量这些数据的异常有利于及时处理、降低损失。zabbix监控常见的网络设备我们是可以在网上找到对应的监控模板的,那么在找不到监控模板的情况下,我们需要定制模板的时候,自动发现规则就显得很方便了。
找到旧模板
制作新模板,我们不需要一切从头再来,我们只需要在之前旧模板的基础上根据新设备型号的mib修改对应的oid即可。我将以网络接口的自动发现规则配置为例,其他自动发现规则类似。
以上是我找到的一个旧监控模板,我们只需要在上面对自动发现规则和监控项原型中不适用的oid改成新型号的即可。
查看mib库
通过snmp监控网络设备,每个网络设备型号都有其对应的mib库。相同厂商的不同设备型号的mib可能适用也可能不适用需要自己通过snmpwalk去试。我们将拿到的mib文件通过MIB Browser
软件打开。这里我们监控的是网络设备的设备信息和端口,主要查看IF-MIB.mib
这个文件
使用MIB Browser
载入mib文件后每个监控项的名称和对应的oid都可以清楚看到了。
因为我这里是之前就已经找到oid所在路径了。一下子找不到的同学可以在MIB Browser
中使用ctrl+f
进行关键词查找。
修改模板
这里简单介绍下自动发现规则配置项:
- 名称:自动发现规则的名称。
- 类型:自动发现规则的类型,这里我们是通过snmp监控的就选snmp agent。
- 键值:自动发现规则的key,自定义,没有特殊含义,自己认识即可。但是很多二开平台为了后续开发方便会将这里定义自己的规范,大家可以根据是自动发现什么来定义。比如我这里是为了发现网络设备接口信息则定义的键值为:
net.if.discovery
。 - SNMP OID:这里是最重要的地方。这里的snmp oid配置有很多变量,方便后续在监控项原型中使用。这里的SNMP OID输入框中大串填写遵循的格式为:discovery[变量1,oid1,变量2,oid2…]。变量和oid两两一组,变量在前,其值对应的oid紧跟其后。下面给出我这里SNMP OID输入框中的部分内容,其中{#SNMPVALUE}是官方定义的宏变量。其对应有个宏变量{#SNMPINDEX},为自动发现监控项的索引,这个我们在后续在配置监控项原型中会经常看见。这里自动发现规则取到的值会是一个json数组,包含多类监控项,通过我们后续配置的监控项原型来分类,生成多个监控项:
discovery[{#SNMPVALUE},.1.3.6.1.2.1.2.2.1.2,{#IFADMINSTATUS},.1.3.6.1.2.1.2.2.1.7,...]
- 更新间隔:配置了自动发现规则后,自动发现规则多久生效一次。
- 自定义更新间隔:支持自定义更新间隔。
- 资源周期不足:资源更新周期。详细含义可以去查看官方文档。
- 描述:自动发现规则描述。
打开mib文件后我们就只需要根据旧模板中设置的oid名称去MIB Browser
中查找对应名称的oid回填到zabbix模板自动发现规则中即可。这里我们以修改{#IFADMINSTATUS}
的oid为例,去MIB Browser
搜索:ifAdminStatus
。
可以发现每个oid的名称都是驼峰命名,是比较规范的,我们查询起来也比较规范。我们复制这里ifAdminStatus
的oid替换到SNMP OID输入框中{#IFADMINSTATUS}后续紧跟的oid值即可,这里我们找到的ifAdminStatus
的oid为.1.3.6.1.2.1.2.2.1.7
。如此替换完SNMP OID中所有变量的oid为最新mib库中的oid后自动发现规则的SNMP OID就更新完毕了。
修改监控项原型
完成自动发现规则的配置最后一步就是完成监控项原型的配置了。下面以修改Admin status
这个监控项为例:
这里最关键的配置就是SNMP OID
和键值。配置格式为:oid+.{#SNMPINDEX}
。
- SNMP OID
对于Admin status
这类监控项来说就是.1.3.6.1.2.1.2.2.1.7.{#SNMPINDEX}
,其中oid是我们上面在MIB Browser
查询到的。
- 键值
用于唯一区别监控项,所以这里我们会用监控项的类别加索引来唯一标识一个发现的监控项。其他配置见名知意,可参考自行填写。
测试
最后我们在主机自动发现规则页面中点击测试,即可获得预计自动发现的监控项的值:
上述测试不为空,再点击“立即执行”,稍等几秒钟就可以看到我们的主机多了很多监控项了!
进入主机监控项,选择关心的监控项,点击立即执行就可以在监测->最新数据->选择主机,在最新数据查看到自动发现的监控项的最新值了!