Zabbix-原理


想要用好zabbix进行监控,那么我们首要需要了解下zabbix这个软件的实现原理及它的架构。建议多阅读官方文档。

官网地址:https://www.zabbix.com/documentation/4.0/zh/manual

一、zabbix架构图

B8SPUg.png

二、zabbix组件

组件部分
1、Zabbix Server

负责接收agent发送的报告信息的核心组件,所有配置,统计数据及操作数据均由其组织进行;

2、Database Storage

专用于存储所有配置信息,以及由zabbix收集的数据;

3、Web interface

zabbix的GUI接口,通常与Server运行在同一台主机上;

4、Proxy

可选组件,常用于监控节点很多的分布式环境中,代理server收集部分数据转发到server,可以减轻server的压力;

5、Agent

部署在被监主机上,负责收集本地数据并发往Server端或Proxy端;

三、相关术语

1、主机(host)

要监控的网络设备,可由IP或DNS名称指定;

2、主机组(host group)

主机的逻辑容器,可以包含主机和模板,但同一个组织内的主机和模板不能互相链接;主机组通常在给用户或用户组指派监控权限时使用;

3、监控项(item)

一个特定监控指标的相关的数据;这些数据来自于被监控对象;item是zabbix进行数据收集的核心,相对某个监控对象,每个item都由”key”标识;

4、触发器(trigger)

一个表达式,用于评估某监控对象的特定item内接收到的数据是否在合理范围内,也就是阈值;接收的数据量大于阈值时,触发器状态将从”OK”转变为”Problem”,当数据再次恢复到合理范围,又转变为”OK”;

5、事件(event)

触发一个值得关注的事情,比如触发器状态转变,新的agent或重新上线的agent的自动注册等;

6、动作(action)

指对于特定事件事先定义的处理方法,如发送通知,何时执行操作;

7、报警媒介类型(media)

发送通知的手段或者通道,如Email、Jabber或者SMS等;

8、模板(template)

用于快速定义被监控主机的预设条目集合,通常包含了item、trigger、graph、screen、application以及low-level discovery rule;模板可以直接链接至某个主机;

9、前端(frontend)

Zabbix的web接口

四、监控流程

监控系统运行流程

agentd需要安装到被监控的主机上,它负责定期收集各项数据,并发送到zabbix server端,zabbix server将数据存储到数据库中,zabbix web根据数据在前端进行展现和绘图。
这里agentd收集数据分为主动和被动两种模式:

主动

agent请求server获取主动的监控项列表,并主动将监控项内需要检测的数据提交给server/proxy

【主动监测】通信过程如下:

zabbix首先向ServerActive配置的IP请求获取active items,获取并提交active items数据值server或者proxy。很多人会提出疑问:zabbix多久获取一次active items?它会根据配置文件中的RefreshActiveChecks的频率进行,如果获取失败,那么将会在60秒之后重试。分两个部分

获取ACTIVE ITEMS列表

• Agent打开TCP连接
• Agent请求items检测列表
• Server返回items列表
• Agent 处理响应
• 关闭TCP连接
• Agent开始收集数据

主动检测提交数据过程如下

• Agent建立TCP连接
• Agent提交items列表收集的数据
• Server处理数据,并返回响应状态
• 关闭TCP连接

被动

server向agent请求获取监控项的数据,agent返回数据。

【被动监测】通信过程如下:

• Server打开一个TCP连接
• Server发送请求agent.ping\n
• Agent接收到请求并且响应
• Server处理接收到的数据1
• 关闭TCP连接

从以上过程我们可以看出来,被动模式每次都需要打开一个tcp连接,这样当监控项越来越多时,就会出现server端性能问题了。
还有人会问,那实际监控中是用主动的还是被动的呢?这里主要涉及两个地方:
1、新建监控项目时,选择的是zabbix代理还是zabbix端点代理程式(主动式),前者是被动模式,后者是主动模式。
2、agentd配置文件中StartAgents参数的设置,如果为0,表示禁止被动模式,否则开启。一般建议不要设置为0,因为监控项目很多时,可以部分使用主动,部分使用被动模式。


 上一篇
K8S 原理 K8S 原理
面试问到了K8S原理,花5分钟来总结下,以后再也不怕了原创DevOps笔记2020-10-25 22:32:59 前言 K8S K8S现在是一项必会的技能,它为软件工程师提供了强大的容器编排能力,模糊了开发和运维之间的边界,让我们开发、管理
2020-10-25
下一篇 
运维面试题-01 运维面试题-01
PS:以下内容,网友提供 欢迎投稿 cyylog@aliyun.com 三剑客awk 统计日志中某个时间范围的 IP 访问量,并进行排序 $ start_dt='10/May/2018:23:47:43 $ end_dt='
2020-10-16
  目录