Zabbix 监控系统原理介绍

系统介绍 Zabbix 的 Server、Agent、Proxy、Web、数据库和数据采集模型,说明 PUSH、PULL、无代理监控、数据存储和适用场景,帮助理解 Zabbix 的监控系统原理。

作者 快猫运营团队

Zabbix 是一个基于 Web 界面的企业级开源监控解决方案,常用于服务器、网络设备、数据库和基础服务监控。理解 Zabbix 的关键,不是先记住每个菜单,而是先理解它如何采集数据、如何存储数据、如何执行告警逻辑。

核心要点摘要

  • Zabbix 的核心组件包括 Zabbix Server、Zabbix Agent、Zabbix Proxy、数据库和 Web 界面。
  • Zabbix Server 负责主要监控逻辑,Web 页面负责配置入口,数据库保存配置、历史数据和告警信息。
  • Zabbix 同时支持 PUSH、PULL 和 SNMP、IPMI、JMX 等无代理采集方式,适合传统服务器和网络设备场景。
  • Zabbix 的资产管理式设计适合相对固定的主机和设备,但不太适合 Kubernetes 这类高度动态环境。
  • Zabbix 的时序数据通常也存储在关系型数据库中,后续可使用 TimescaleDB,但与专用时序库相比仍有差异。

Zabbix 是什么

Zabbix 是一个企业级开源监控系统,可以监控网络参数、服务器状态、数据库、中间件和基础服务,并通过通知机制帮助系统管理员发现和定位问题。

从使用体验看,Zabbix 在服务器和网络设备监控方向积累很深,社区生态和产品功能都比较完整。对很多传统 IT 运维团队来说,Zabbix 仍然是一个非常成熟的选择。

但它也有明显边界。Zabbix 的设计更偏资产管理:先有 Host,再围绕 Host 配置监控项、触发器、模板和图形。这种方式适合固定服务器、网络设备和数据库,不太适合 Kubernetes 这类实例频繁变化的动态环境。

Zabbix 架构由哪些组件组成

Zabbix架构图

Zabbix 的典型架构包括五类组件。

组件 核心作用 适用说明
Zabbix Server 接收、处理、存储监控数据,并执行触发器和告警逻辑。 整个 Zabbix 监控系统的核心。
Zabbix Agent 安装在被监控主机上,采集 CPU、内存、进程、文件系统等主机数据。 适合主机级监控和自定义脚本扩展。
Zabbix Proxy 在网络边缘或分支环境收集数据,再转发给 Server。 适合分布式监控、隔离网络和大规模场景。
数据库 保存配置、历史数据、趋势数据和告警信息。 支持 MySQL、PostgreSQL、SQLite 等。
Web 界面 提供配置、查询、仪表盘和告警管理入口。 页面配置会写入数据库,再由 Server 读取执行。

可以把 Zabbix 理解为一套集中式监控系统:Web 负责配置入口,数据库负责保存状态,Server 负责执行逻辑,Agent 和 Proxy 负责把数据送进来。

Zabbix 如何采集监控数据

Zabbix 支持多种数据采集方式,常见模型可以分为三类。

  • PUSH:Zabbix Agent 主动把数据推送给 Zabbix Server。
  • PULL:Zabbix Server 主动请求 Zabbix Agent 或目标设备获取数据。
  • 无代理监控:通过 SNMP、IPMI、JMX 等协议直接从设备或服务采集数据,本质上更接近 PULL。

PUSH 和 PULL 的区别

PUSH 是 Agent 主动推送数据到 Server,Server 被动接收。它对网络 ACL 更友好。很多公司存在网络隔离区:隔离区可以访问外部服务,但外部服务无法访问隔离区内部主机。这种情况下,PUSH 更容易落地。

PULL 是 Server 主动拉取 Agent 或目标设备的数据。在调试场景下,PULL 的同步体验更好,因为 Server 发起请求后可以直接看到结果。但 PULL 需要 Server 知道 Agent 的 IP 地址,也需要网络路径可达。

Zabbix 能较好使用 PULL,是因为它面向的核心场景比较固定:服务器、网络设备、数据库等资源通常有明确地址和生命周期。如果监控对象换成 Kubernetes Pod 这类动态对象,PULL 的管理成本就会明显上升。

Zabbix Server 负责什么

Zabbix Server 是 Zabbix 监控系统最核心的组件,主要负责四件事。

  • 数据接收:从 Zabbix Agent、Zabbix Proxy 和 SNMP 等直接监控对象接收监控数据。
  • 数据存储:把采集到的数据写入关系型数据库,便于查询、展示和趋势分析。
  • 数据处理:根据监控项和触发器配置计算状态,生成告警事件。
  • 告警管理:根据触发器条件,通过邮件、短信、Webhook 等方式通知相关人员。

更具体地说,页面上的配置由 PHP Web 写入数据库,Zabbix Server 再读取数据库中的配置并执行监控逻辑。对于 JMX、SNMP 这类场景,Zabbix Server 可以直接完成采集;对于目标机器 CPU、内存、进程等主机指标,通常需要 Zabbix Agent 配合。

Zabbix Agent 负责什么

Zabbix Agent 的核心作用是采集主机数据,然后把数据交给 Zabbix Server。它适合采集操作系统、进程、文件系统、端口、本地脚本等主机侧信息。

Zabbix Agent 不可能内置所有采集能力,所以它提供扩展机制,用户可以通过脚本补充采集逻辑。这个机制能解决很多定制需求,但从规整性和灵活性看,不如 Prometheus exporter 生态那么统一。

Zabbix Agent 有两个主要版本:

  • Zabbix Agent:老版本 agent,主要由 C 编写,稳定性较好。
  • Zabbix Agent 2:新一代 agent,主要由 Go 编写,面向未来扩展了更多采集能力。

实际选型时,如果环境已经稳定运行老版本 agent,可以先保留;如果要接入更多新型组件,agent 2 的扩展方向更值得关注。

Zabbix Proxy 适合哪些场景

Zabbix Proxy 不是必选组件,但在分布式监控和复杂网络环境中很重要。

分布式监控

在大型企业或多地点环境中,可以把 Zabbix Proxy 部署在不同地理位置。Proxy 先收集本地监控数据,再发送给 Zabbix Server,从而减少跨网络访问延迟。

网络带宽管理

Proxy 可以在本地收集和缓冲数据,再批量发送给 Server。相比所有 Agent 都直接访问 Server,这种方式更容易控制跨区域带宽占用。

防火墙和 NAT 场景

如果 Zabbix Agent 无法直接访问 Zabbix Server,或者 Server 无法直接访问 Agent,Proxy 可以作为中间层运行在允许通信的网络位置,代替 Server 收集并转发数据。

故障容错

当 Zabbix Server 临时不可用时,Proxy 可以在本地缓存数据,待 Server 恢复后再发送,降低短时故障导致数据丢失的风险。

监控负载分担

在高密度监控环境中,多个 Proxy 可以分担数据收集和部分预处理压力,降低单个 Zabbix Server 的负载。

联系我们交流

Zabbix 如何存储数据

Zabbix 主要存储两类数据。

  • 配置类数据:主机、模板、监控项、触发器、用户、权限等。
  • 监控时序数据:历史指标、趋势数据、告警事件等。

Zabbix 的特点是配置数据和监控时序数据都依赖关系型数据库。关系型数据库适合保存配置和事务型数据,但面对高频、大规模指标写入时并不是最理想的时序数据存储。

后续 Zabbix 可以使用 TimescaleDB 存储时序数据。TimescaleDB 构建在 PostgreSQL 之上,能改善时序数据能力,但与 VictoriaMetrics 这类专用时序库相比,使用体验和容量模型仍有差异。

这也是为什么很多 Zabbix 用户会把采集频率设置得相对保守,例如 1 分钟采集一次;而 Prometheus 生态中,15 秒采集一次是更常见的配置。

适合继续使用 Zabbix 的场景

Zabbix 不是万能监控系统,但在以下场景中依然很有价值:

  • 服务器、虚拟机、网络设备等对象相对固定。
  • 需要 SNMP、IPMI、JMX 等传统协议支持。
  • 团队已经沉淀了大量模板、触发器和告警经验。
  • 监控目标以主机、设备、端口、进程和基础服务为主。
  • 需要一个 Web 化、一体化、配置集中管理的监控系统。

如果主要监控对象是 Kubernetes、微服务、海量中间件指标或高维标签聚合,通常要结合 Prometheus 生态或现代可观测平台。

FAQ

Zabbix Server 和 Zabbix Agent 是什么关系?

Zabbix Server 是监控逻辑中心,负责接收数据、处理数据和产生告警;Zabbix Agent 安装在被监控主机上,负责采集本机指标并与 Server 配合。

Zabbix Proxy 是否必须部署?

不是。单机房、小规模环境可以不部署 Proxy。多地域、隔离网络、大量主机或需要本地缓存数据时,Proxy 更有价值。

Zabbix 为什么不太适合 Kubernetes 动态环境?

Zabbix 以 Host、模板、监控项和触发器为核心组织监控对象,天然更适合生命周期稳定的资产。Kubernetes 中 Pod 生命周期短、标签维度多、实例变化快,用传统 Host 模型承载会比较吃力。

总结

Zabbix 的核心优势在于成熟、完整、稳定,尤其适合服务器、网络设备、数据库和传统基础设施监控。它通过 Server、Agent、Proxy、数据库和 Web 界面组成一套集中式监控体系,能完成数据采集、存储、展示和告警。

但 Zabbix 的边界也很清楚:资产式模型和关系型数据库存储让它更适合传统 IT 环境。面对 Kubernetes、微服务和高维指标聚合时,通常需要与 Prometheus 生态或统一可观测平台配合使用。

延伸路径

继续看解决方案和产品对比

如果你正在做监控、可观测性或故障定位相关选型,建议从解决方案和产品对比继续往下看。

标签 Zabbix IT监控
快猫星云 联系方式 快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云