Zabbix是一款能够监控各种网络参数以及服务器健康性和完整性的软件,比如服务器、虚拟机、应用程序、数据库、网站等。Zabbix使用灵活的通知机制,允许用户为几乎任何事件配置基于邮件的告警。这样可以快速反馈服务器的问题。基于已存储的数据,Zabbix提供了出色的报告和数据可视化功能。
监控在工作中是至关重要的,利用一个优秀的监控软件可以浏览整个网站的所有服务器的状态,在监控平台上实时查看监控数据,可以回溯寻找事故发生时系统的问题和报警情况
zabbix 由两部分组成,分别为 zabbix server 和可选组件 zabbix agent,通过 C/S 模式采集数据,通过 B/S 模式在 Web 端展示和配置。zabbix server 可以通过 SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能, 它可以运行在 Linux 等平台上;zabbix agent 需要安装在被监视的目标服务器上,它主要完成对硬件信息或与操作系统有关的内存,CPU 等信息的收集。
zabbix 的构成
zabbix 主要由五个组件构成
1.server
功能:zabbix server 是整个监控系统的核心组件,负责接收来自被监控设备的数据,处理这些数据,并生成警报和报告
职责:收集和处理来自 Zabbix Agent 和其他数据源的数据;
存储监控数据到数据库中;
生成警报和通知;
提供 Web 界面供用户管理和查看监控数据。
2.web页面
功能:Zabbix Web 是一个基于 Web 的用户界面,用于管理和配置 Zabbix 系统,查看监控数据和生成报告
职责:提供直观的界面,方便用户配置监控项、触发器、用户等;
显示实时监控数据和历史数据;
生成报告和图表,帮助用户分析和理解监控数据;
管理用户权限和访问控制。
3.数据库
功能:Zabbix 使用数据库来存储所有的监控数据、配置信息和历史记录。
职责:存储监控数据,如性能指标、事件、警报等;
存储配置信息,如监控项、触发器、用户等;
提供数据查询和报告功能。
4.proxy
功能:Zabbix Proxy 是一个可选的中间代理,用于分担 Zabbix Server 的负载,特别是在大规模分布式环境中
职责:收集来自多个 Zabbix Agent 的数据;
将收集到的数据转发给 Zabbix Server;
缓存数据,减少网络流量。
5.agent
功能:Zabbix Agent 是安装在被监控设备上的轻量级代理程序,负责收集本地设备的数据并发送给 Zabbix Server
职责:收集本地设备的性能数据,如 CPU 使用率、内存使用率、磁盘 I/O 等;
执行用户自定义的监控脚本;
将收集到的数据发送给 Zabbix Server。
zabbix监控对象
硬件监控:Zabbix IPMI Interface ,通过IPMI接口进行监控,我们可以通过标准的IPMI硬件接口,监控被监控对象的物理特征,比如电压、温度、风扇状态、电源状态等。
系统监控:Zabbix Agent Interface ,通过专用的代理程序进行监控,与常见的master/agent模型类似,如果被监控对象支持对应的agent,推荐首选这种方式。
java监控:Zabbix JMX Interface ,通过JMX进行监控,JMX(java management extensions,即java管理扩展),监控JVM虚拟机时,使用这种方法是非常不错的选择。
网络设备监控:Zabbix SNMP Interface ,通过SNMP协议与被监控对象进行通信,SNMP协议的全称为simple network management protocol,被译为简单网络管理协议,通常来说,我们无法在路由器、交换机这种硬件上安装agent,但是这些硬件都支持SNMP协议
除此之外还有应用服务监控、MySQL数据监控、URL监控等就不一一介绍了
zabbix工作模式
zabbix在进行监控时,zabbix客户端要安装在被监控设备上,负责定期收集数据,并将其发送给zabbix服务端;zabbix服务端要安装在监控设备上,其将zabbix客户端发送的数据存储的数据库中,zabbix web根据数据在前端进行展示和绘图。
zabbix 的数据收集分为两种模式
主动模式
zabbix客户端主动向zabbix server请求监控项列表,并主动将监控项内需要的数据提交给zabbix server
被动模式
zabbix server向agent请求获取监控项的数据,zabbix agent返回数据
无论主动还是被动,理解为都是以agent客户端为参照物定义的
zabbix 进程详解
默认情况下,zabbix有6个工作进程,分别是zabbix_agentd,zabbix_get、zabbix_proxy、zabbix_sender、zabbix_server和zabbix_gateway
zabbix_agented
zabbix_agentd为zabbix客户端守护进程,主要负责收集客户端监控项数据
zabbix_server
zabbix_server为zabbix服务端守护进程,主要负责收集zabbix客户端数据
zabbix_proxy
zabbix_proxy是zabbix代理进程,其功能类似于server,作用上类似与一个中转站,最终会把收集到的数据再次提交给zabbix_server
zabbix_get
zabbix_get为一个zabbix工具,通常运行在zabbix server或者是zabbix proxy上,用于远程获取客户端信息,通常用于排错
zabbix_sender
zabbix_sender也是一个zabbix工具,通常运行在zabbix客户端,通常用于耗时比较长的检查,其作用是主动发送数据
zabbix_java_gateway
zabbix_java_gateway是zabbix2.0之后引入的新功能,可以用户JAVA方面的设备,但是其只能主动获取数据,而不能被动获取数据
zabbix 监控架构
server-client 架构
zabbix最简单的架构,监控设备和被监控设备之间直接相连,zabbix server和zabbix client之间直接进行数据交互
server-proxy-client 架构
proxy是连接server和client之间的桥梁,其本身并不存放数据,只是将zabbix agent端发送来的数据暂存,然后再提交给server。这种架构一般用于跨机房、跨网络的中型网络架构。在server-proxy-client架构架构中,server设备的宕机会导致整个系统无法正常工作
master-node-client 架构
master-node-client架构是zabbix最复杂的架构,一般用于跨机房、跨网络、监控设备较多的大型网络架构。与server-proxy-client相比,master-node-client架构的主要区别在于node与proxy上。在master-node-client架构中,每个node可以理解为一个小的server端,有自己的配置文件和数据库,node下游可以直接连接client,也可以再次经过proxy代理后连接client。在master-node-client架构中,master设备宕机不会影响node结点的正常工作