想要用好zabbix进行监控,那么我们首要需要了解下zabbix这个软件的实现原理及它的架构。建议多阅读官方文档。
一、zabbix架构图
二、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,因为监控项目很多时,可以部分使用主动,部分使用被动模式。