zabbix 6.0 SNMP模板配置监控网络设备

前言

安装zabbix的方法,可以参考我的另一篇文章:CentOS7 安装zabbix

完成安装后进来后,大家可能会和我一样,不知道要怎么配置监控网络设备。这里我先介绍下流程,然后再详细介绍下每一步的操作。

  1. 使用自动发现功能,自动发现网络设备
  2. 将发现的设备进行动作关联,连接到SNMP模板
  3. 修改SNMP模板,添加需要监控的项
  4. 添加触发器原型和图形原型
  5. 创建仪表盘

这里面有一些概念,可能会弄混,需要提前进行说明

概念说明

两个自动发现

配置 -> 自动发现 这里的自动发现,是用来发现网络设备的
配置 -> 模板 -> 自动发现 这个自动发现官方称为LLD,是用来自动生成监控项、触发器和图形的

两者没有关系

OID,MIB库

MIB库是网络设备的一个数据库,里面存放了网络设备的各种信息,比如CPU、内存、端口等等。OID是MIB库中的一个标识符,用来标识某个信息,其实就是定位用的。

既然是数据库,那么就一定会有多个表,一个完整的OID其实就是指向了表中的某个字段。

这个OID是配置监控项非常重要的一个参数,所以后文会着重讲一下如何获取想要的OID

模板

配置 -> 模板,是表示一组监控项、触发器、图形的集合,可以理解为一个模板就是一个监控项目

其中监控项是用固定的OID来获取,所以只能做一些通用的监控,并且不能动态添加
触发器一样,由固定的监控项得到,所以也是不能动态添加的

想要动态的进行添加,比如序列号、接口信息等,就需要使用到LLD了,也就是自动发现

主机

当完成模板的配置后,就会通过LLD自动生成监控项、触发器和图形,在配置 -> 主机中,就可以看到这些信息了

OID 获取

OID的获取,其实就是从MIB库中找到对应的OID,然后填入监控项中

首先需要一个MIB浏览软件

另外厂商各自都有私有MIB库,推荐大家到官方下载,例如:

另外这里有一个收集MIB库的网站,可以参考,但是当你不知道需要哪个MIB库时,就没办法定位了

其实我们需要的OID可能就那么几种,所以厂商也很贴心的为我们准备了常用MIB库的指南,例如:

以华三为例,获取设备序列号

想要获取序列号,在华三常用mib清单里面已经有介绍了

里面有两个关键信息:

  1. 定位序列号的OID:1.3.6.1.2.1.47.1.1.1.1.11
  2. 定位实体描述的OID:1.3.6.1.2.1.47.1.1.1.1.2

使用MIB Browser打开,SNMP连接到设备,搜索上面的OID

可以看到,其实这些OID都是指向了同一个表,只是定位的字段不同而已。
使用Table View,打开整个表

就可以看到这个表中的所有数据了。

需要注意的是,要定位到某一行,最后加上index字段,这个字段是唯一的,所以可以用来定位。
例如,我想要获取23行的序列号,对应的OID就是1.3.6.1.2.1.47.1.1.1.1.11.23

而LLD,也就是自动发现的原理,就是通过这个index字段,来定位到某一行,然后生成对应的监控项目。

zabbix 自动发现主机

  1. 我们先配置一个SNMP团体值的宏,用于所有设备连接SNMP使用

宏的名称为 {SNMP_COMMUNITY}

  1. 配置 -> 自动发现中,创建一个自动发现规则

按照上图配置,IP范围根据实际情况修改即可,尽量小一点,不然会很慢

检查项目为SNMPv2-MIB::sysName.0,意思是获取设备名称。
如果获取到了,就将IP作为唯一标识,使用SNMP获取到的内容作为主机名称和可见名称。
已启用 这里可以先取消,因为要做一个关联动作,然后再启用

  1. 全克隆一个模板

我们需要全克隆一个模板,方便后面对其进行深度修改

例如H3C的设备,官方提供的是 HP Comware HH3C by SNMP,但其实里面有很多错误无法使用。

找到这个模板点击进去后,选择下方的全克隆,修改模板名称为 HP Comwrare V7 SNMP,然后保存。

  1. 创建发现动作

按照上图配置条件和操作即可。

  • 主机群主可以自己在 配置 -> 主机群主 中添加一个。
  1. 启用自动发现规则

在自动发现中选择网络设备自动发现,点击启用。等待一段时间后(大概遍历100个IP地址需要10分钟),设备就会自动添加到主机列表中了。并且关联到了我们克隆的模板上了。

修改 SNMP 模板

模板中的监控项,都是通过固定的OID来获取的,所以只能做一些通用的监控,并且不能动态添加

这一块源模板已经写好了,我们只需要修改下名称,方便查看即可。

另外一种自动添加的监控项,就需要在自动发现里面进行设置了。

里面的监控项原型就是为自动添加监控项准备的。

这里先说一下,自动添加监控项的原理:

  1. 通过发现规则,获取到了设备的一些定位信息
  2. 通过发现规则,将这些信息作为宏,传递给监控项原型
  3. 监控项原型,通过宏,拼接出对应的OID,然后生成监控项

CPU 和 内存发现 为例:

编写发现规则

键值
这个键值是zabbix的唯一标识符,可以随便写,只要保证其唯一性就好
但是一般有种写法,使用点进行命名空间的区分 net.board.discovery 这个就是一个唯一的命名空间

SNMP OID

discovery[{#ENT_CLASS},1.3.6.1.2.1.47.1.1.1.1.5,{#NAME},1.3.6.1.2.1.47.1.1.1.1.7,{#REL_POS},1.3.6.1.2.1.47.1.1.1.1.6]

这里的写法,discovery[arg1,arg2,...]是一个函数,这个函数的作用是类似snmpwalk进行一个遍历,然后返回一个json文件
参数成对出现,全部以逗号分隔,一对中的第一个代表存储的宏,第二个就是需要遍历的OID。可以有多个参数对,但是必须成对出现。

另外函数会自动补上 {#SNMPINDEX}这个宏,作为唯一标识符,所以不需要手动添加。其实只要理解这个是数据库,进行查询就好了。

[
    {
        "{#SNMPINDEX}": "1",
        "{#ENT_CLASS}": "11",
        "{#NAME}": "",
        "{#REL_POS}": "-1"
    },
    {
        "{#SNMPINDEX}": "2",
        "{#ENT_CLASS}": "3",
        "{#NAME}": "S6800",
        "{#REL_POS}": "1"
    },
    {
        "{#SNMPINDEX}": "3",
        "{#ENT_CLASS}": "3",
        "{#NAME}": "S6800",
        "{#REL_POS}": "2"
    },
    {
        "{#SNMPINDEX}": "12",
        "{#ENT_CLASS}": "5",
        "{#NAME}": "",
        "{#REL_POS}": "0"
    },
    {
        "{#SNMPINDEX}": "13",
        "{#ENT_CLASS}": "5",
        "{#NAME}": "",
        "{#REL_POS}": "1"
    }
]

写好这个发现规则后,可以对其进行测试。另外,还需要对发现的内容进行筛选过滤,只取需要的内容,所以还要对过滤器进行配置。

意思是只有配置到的才会留下,传递给监控项原型。否则会平白多出非常多无效监控项。

创建监控项原型

进入到监控项原型,点击创建监控项原型

键值,同样也是唯一性,推荐的写法
net.cpu.usage[{#SNMPINDEX}] 这里的net.cpu.usage是一个命名空间,{#SNMPINDEX}是一个宏,这个宏是发现规则自动添加的,所以不需要手动添加。如果有多个认为在同一命名空间内的,那么在{#SNMPINDEX}前面加上MIB库的字段名是一个好方法。

SNMP OID
如何找OID,在文章开头已经讲过了,就不在赘述了。最后加上 {#SNMPINDEX} 进行定位,拼接成一个唯一的OID即可。

完成后点击测试,试一试能不能正常获取到。

创建触发器原型

当有了监控项,就可以自动获取设备信息了,但是还需要一个触发器,来进行告警。所以需要创建一个触发器原型。

这里表达式有的会比较复杂,需要拆解,但是示例中的很简单,只是比较一下大小即可。

创建图像原型

这个比较方便,跟着选择对应原型监控项即可。

设置好后,就可以在模板中的仪表盘中去自定义设备的仪表盘了。


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 365433079@qq.com