前言
安装zabbix的方法,可以参考我的另一篇文章:CentOS7 安装zabbix
完成安装后进来后,大家可能会和我一样,不知道要怎么配置监控网络设备。这里我先介绍下流程,然后再详细介绍下每一步的操作。
- 使用自动发现功能,自动发现网络设备
- 将发现的设备进行动作关联,连接到SNMP模板
- 修改SNMP模板,添加需要监控的项
- 添加触发器原型和图形原型
- 创建仪表盘
这里面有一些概念,可能会弄混,需要提前进行说明
概念说明
两个自动发现
配置 -> 自动发现 这里的自动发现,是用来发现网络设备的
配置 -> 模板 -> 自动发现 这个自动发现官方称为LLD,是用来自动生成监控项、触发器和图形的
两者没有关系
OID,MIB库
MIB库是网络设备的一个数据库,里面存放了网络设备的各种信息,比如CPU、内存、端口等等。OID是MIB库中的一个标识符,用来标识某个信息,其实就是定位用的。
既然是数据库,那么就一定会有多个表,一个完整的OID其实就是指向了表中的某个字段。
这个OID是配置监控项非常重要的一个参数,所以后文会着重讲一下如何获取想要的OID
模板
配置 -> 模板,是表示一组监控项、触发器、图形的集合,可以理解为一个模板就是一个监控项目
其中监控项是用固定的OID来获取,所以只能做一些通用的监控,并且不能动态添加
触发器一样,由固定的监控项得到,所以也是不能动态添加的
想要动态的进行添加,比如序列号、接口信息等,就需要使用到LLD了,也就是自动发现
主机
当完成模板的配置后,就会通过LLD自动生成监控项、触发器和图形,在配置 -> 主机中,就可以看到这些信息了
OID 获取
OID的获取,其实就是从MIB库中找到对应的OID,然后填入监控项中
首先需要一个MIB浏览软件
另外厂商各自都有私有MIB库,推荐大家到官方下载,例如:
另外这里有一个收集MIB库的网站,可以参考,但是当你不知道需要哪个MIB库时,就没办法定位了
其实我们需要的OID可能就那么几种,所以厂商也很贴心的为我们准备了常用MIB库的指南,例如:
以华三为例,获取设备序列号
想要获取序列号,在华三常用mib清单里面已经有介绍了
里面有两个关键信息:
- 定位序列号的OID:
1.3.6.1.2.1.47.1.1.1.1.11
- 定位实体描述的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 自动发现主机
- 我们先配置一个SNMP团体值的宏,用于所有设备连接SNMP使用
宏的名称为 {SNMP_COMMUNITY}
- 在配置 -> 自动发现中,创建一个自动发现规则
按照上图配置,IP范围根据实际情况修改即可,尽量小一点,不然会很慢
检查项目为SNMPv2-MIB::sysName.0
,意思是获取设备名称。
如果获取到了,就将IP作为唯一标识,使用SNMP获取到的内容作为主机名称和可见名称。
已启用 这里可以先取消,因为要做一个关联动作,然后再启用
- 全克隆一个模板
我们需要全克隆一个模板,方便后面对其进行深度修改
例如H3C的设备,官方提供的是 HP Comware HH3C by SNMP
,但其实里面有很多错误无法使用。
找到这个模板点击进去后,选择下方的全克隆,修改模板名称为 HP Comwrare V7 SNMP
,然后保存。
- 创建发现动作
按照上图配置条件和操作即可。
- 主机群主可以自己在 配置 -> 主机群主 中添加一个。
- 启用自动发现规则
在自动发现中选择网络设备自动发现,点击启用。等待一段时间后(大概遍历100个IP地址需要10分钟),设备就会自动添加到主机列表中了。并且关联到了我们克隆的模板上了。
修改 SNMP 模板
模板中的监控项,都是通过固定的OID来获取的,所以只能做一些通用的监控,并且不能动态添加
这一块源模板已经写好了,我们只需要修改下名称,方便查看即可。
另外一种自动添加的监控项,就需要在自动发现里面进行设置了。
里面的监控项原型就是为自动添加监控项准备的。
这里先说一下,自动添加监控项的原理:
- 通过发现规则,获取到了设备的一些定位信息
- 通过发现规则,将这些信息作为宏,传递给监控项原型
- 监控项原型,通过宏,拼接出对应的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