zabbix实现原理及架构详解html
想要用好zabbix进行监控,那么咱们首要须要了解下zabbix这个软件的实现原理及它的架构。建议多阅读官方文档。前端
1、整体上zabbix的总体架构以下图所示:mysql
重要组件说明:web
1)zabbix server:负责接收agent发送的报告信息的核心组件,全部配置、统计数据及操做数据都由它组织进行;sql
2)database storage:专用于存储全部配置信息,以及由zabbix收集的数据;数据库
3)web interface:zabbix的GUI接口;架构
4)proxy:可选组件,经常使用于监控节点不少的分布式环境中,代理server收集部分数据转发到server,能够减轻server的压力;并发
5)agent:部署在被监控的主机上,负责收集主机本地数据如cpu、内存、数据库等数据发往server端或proxy端;tcp
另外,zabbix server、proxy、agent都有本身的配置文件以及log文件,重要的参数须要在这里配置,后面会详细说明。分布式
一个监控系统运行的大概的流程是这样的:
agentd须要安装到被监控的主机上,它负责按期收集各项数据,并发送到zabbix server端,zabbix server将数据存储到数据库中,zabbix web根据数据在前端进行展示和绘图。这里agentd收集数据分为主动和被动两种模式:
主动:agent请求server获取主动的监控项列表,并主动将监控项内须要检测的数据提交给server/proxy
被动:server向agent请求获取监控项的数据,agent返回数据。
【主动监测】通讯过程以下:
zabbix首先向ServerActive配置的IP请求获取active items,获取并提交active tiems数据值server或者proxy。不少人会提出疑问:zabbix多久获取一次active items?它会根据配置文件中的RefreshActiveChecks的频率进行,若是获取失败,那么将会在60秒以后重试。分两个部分:
获取ACTIVE ITEMS列表
主动检测提交数据过程以下:
【被动监测】通讯过程以下:
这里,有人能够看出来,被动模式每次都须要打开一个tcp链接,这样当监控项愈来愈多时,就会出现server端性能问题了。
还有人会问,那实际监控中是用主动的仍是被动的呢?这里主要涉及两个地方:
一、新建监控项目时,选择的是zabbix代理仍是zabbix端点代理程式(主动式),前者是被动模式,后者是主动模式。
二、agentd配置文件中StartAgents参数的设置,若是为0,表示禁止被动模式,不然开启。通常建议不要设置为0,由于监控项目不少时,能够部分使用主动,部分使用被动模式。
2、经常使用的监控架构平台
一、server-agentd模式:
这个是最简单的架构了,经常使用于监控主机比较少的状况下。
二、server-proxy-agentd模式:
这个经常使用于比较多的机器,使用proxy进行分布式监控,有效的减轻server端的压力。