第六章 监控项配置与管理
近日完成《深入浅出 zabbix 4.0》视频教程的录制并正式发布,该教程基于 zabbix 4.2 ,对Zabbix进行全面讲解。欢迎大家围观。课程链接:https://edu.youkuaiyun.com/course/detail/24870
Zabbix系统中监控项(Items)的定义和管理非常重要,所有的监控指标都是通过定义不同的监控项收集数据。Zabbix通过主机作为一个逻辑单元组织和管理监控项,所有的监控项都必须属于某个主机,且在同一主机中只能有一个唯一的监控项存在。
6.1监控数据
Zabbix 不同于与大多数其他监控解决方案的一个重要特征是Zabbix通过监控项从被监控对象收集的数据是原始数据,而不是告警或状态的更新数据。大多数监控方案中,不管是通过agent或其他方法收集到监控数据后,会对该数据进行逻辑处理,然后将该数据的状态发送到服务器中保存,并进一步进行处理。数据的处理流程如下图6-1所示。
图 6-1
而Zabbix中处理数据的流程会稍有不同,通过agent或其他方法收集到监控数据后,会直接发送到服务器中进行保存,然后触发器逻辑会判断数据的变化情况,进行下一步处理。在Zabbix中收集的数据和特定的触发器的条件(如通过、失败、正常、警告、错误等)没有任何的关联,在服务器的数据库中保留原始的监控数据,并对数值类型的监控项数据,可以保留不同期间内的汇总和趋势,像最小值、最大值和平均值等。如下图6-2所示。
图 6-2
Zabbix采取数据和决策逻辑分离的方式有两个优势:
首先,Zabbix中收集到的监控数据和触发器逻辑、告警没有直接的关联,这样我们可以把Zabbix作为一个纯粹的数据收集器,并将这些数据通过图形等可视化的方式展现出来,这在实际环境中是非常有用的。举个例子,我们需要监控交换机每个端口的流量,目的只是收集数据建立基准线,评估可能的瓶颈,为扩展网络基础架构的规划提供依据。类似的情况还有很多,比如说CPU的使用率、存储的容量、特定应用的用户并发率等等。
其次,所有收集到的原始数据统一保存在数据库中,而不是某一次的监控数据或某一监控项的一部分监控数据。对于触发器和决策逻辑你可能需要完整的数据来确切的定义你想要监控和告警的事件种类,这时你可以关联到监控项的所有历史数据。
Zabbix 中监控项本质上可以理解为一个关联到主机的某种数据类型的标识符(或指标)。而这个标识符通常是一个名称和关联的监控项key,用来区分在整个监控环境中定义的成千上万的监控项中关联到主机中的监控项。监控项的数据类型也非常重要,Zabbix通过数据类型指定怎样保存数据,怎样可视化数据(数值类型的监控项能自动生成简单的图形,字符类型不能生成图形),在触发器中可以指定哪些函数能够应用到监控项进行处理。
6.2 监控项的类型
Zabbix中监控项根据连接的方式划分出多种类型,也就是我们在第三章中介绍过的监控方式,它们之间依据不同的监控目标可以互相替换使用,但也有不能替换的监控方式,为完成监控目标只能使用某种类型,例如Zabbix aggregate监控方式。监控项收集监控数据时,根据数据流的方向不同,我们可以归为两类:Passive(被动式)和Active(主动式)。Passive意味着由Zabbix server发起初始化连接,Active意味着初始化连接是由被监控端发起。如下表6-1所示。
表 6-1
Item type |
方向 |
可替换为 |
Zabbix agent |
Passive(被动式) |
Zabbix agent(active) |
Zabbix agent(active) |
Active(主动式) |
Zabbix agent |
Simple checks |
Passive(被动式) |
Zabbix trapper |
SNMP agent |
Passive(被动式) |
Zabbix trapper |
SNMP trap |
Active(主动式) |
|
Zabbix internal |
Server监控自身收集数据 |
|
Zabbix trapper |
Active(主动式) |
取决于监控数据的性质 |
Zabbix aggregate |
使用数据库中已有的数据 |