一、Zabbix 简介
Zabbix 是一款开源的企业级监控解决方案,主要用于实时监控网络、服务器、应用程序等 IT 基础设施的状态和性能,帮助管理员及时发现并解决问题,保障系统的稳定运行。
- 开发与发布:由拉脱维亚公司 Zabbix SIA 开发,首个版本于 2001 年发布,目前已更新至多个版本(截至 2026 年 5 月,最新稳定版为 Zabbix 7.0 LTS)。
- 开源性质:基于 GPL v2 许可证开源,用户可免费使用、修改源代码,适合企业根据自身需求定制监控方案。
- 跨平台支持:可运行在 Linux、Windows、Solaris 等主流操作系统上,能监控各类设备(服务器、路由器、交换机等)和应用(数据库、Web 服务、容器等)。
二、核心功能
- 全面监控能力:涵盖硬件监控(CPU、内存、磁盘、网络接口)、软件与应用监控(进程、服务状态、数据库性能、中间件)、网络监控(带宽、延迟、丢包率、端口状态)以及自定义监控(通过脚本、API 监控特定业务指标)。
- 告警机制:当监控指标超过预设阈值时,可通过邮件、短信、微信、Slack 等多种渠道发送告警,并支持告警分级和升级策略。
- 数据可视化与分析:提供折线图、柱状图、饼图等丰富图表,支持自定义仪表盘,历史数据存储在数据库中,可用于趋势分析和容量规划。
- 自动发现:自动扫描网络中的设备和服务,并自动添加监控项,减少手动配置工作量。
- 分布式监控:支持通过 Proxy 节点实现分布式监控,适合跨机房、大规模部署场景,减轻中心服务器压力。
三、架构组成
- Zabbix Server:核心组件,负责接收 Agent 发送的监控数据、处理告警、存储数据、管理配置等。
- Zabbix Agent:安装在被监控设备上,采集本地硬件和软件指标,发送给 Server 或 Proxy。
- Zabbix Proxy:可选组件,用于分布式监控,代理 Server 收集数据并转发,减轻 Server 负载。
- Database:存储监控配置、历史数据、告警信息等(支持 MySQL、PostgreSQL、Oracle 等)。
- Web 界面:基于 PHP 开发,提供图形化操作界面,用于配置监控、查看数据和管理系统。
- Java Gateway:用于监控 Java 应用程序(如 JVM 性能),通过 JMX 协议与 Java 进程通信。
四、部署 Zabbix
1. 安装源与软件包
通过官方网站下载 Zabbix 资源,安装官方源到系统中,并安装服务端、前端及客户端相关软件包。
2. 安装与配置数据库
下载并安装 MySQL 8,启动数据库服务,获取临时密码并完成安全初始化。随后为 Zabbix 建立数据库和用户,导入 Zabbix 数据。
3. 配置 Zabbix 服务端
编辑主配置文件 /etc/zabbix/zabbix_server.conf,设置数据库密码,启动 Zabbix Server、Agent、HTTPD 和 PHP-FPM 服务。
4. 前端设置与字体修复
通过 Web 界面完成 Zabbix Server 初始化配置。针对中文字体显示错误的问题,Zabbix 7.0 和 7.4 分别提供了不同的字体替换方法。
五、Zabbix Agent 部署与使用
1. 核心作用与运行模式
Zabbix Agent 部署在被监控设备上,负责数据采集、数据传输和执行远程命令。支持被动模式(Server 主动请求)和主动模式(Agent 主动上报)两种运行模式。
2. 被动模式添加监控节点
在被监控节点安装 Agent,配置 zabbix_agentd.conf 文件,指定 Server 地址、主机名等参数。然后在 Zabbix Web 界面创建主机群组、添加主机、创建监控项(包括不带参数和带参数的监控项)以及创建触发器。
3. 触发器与告警
触发器用于判断监控数据是否在合理范围内,通过逻辑表达式评估。可配置自动执行脚本动作(Action)实现故障自动处理,并通过邮件等媒介发送报警通知。
4. 自定义模板
创建自定义模板可以告别逐台手动配置,统一监控标准,便于后期维护和批量管理。模板可包含监控项、图形等,并可添加到主机。
5. 主动模式与自动注册
主动模式下 Agent 主动向 Server 上报数据。自动注册机制允许 Agent 启动时主动向 Server 报到并请求被监控,适用于动态环境(如容器、云服务器)中快速纳入新设备。
6. 监控项与触发器配置要点
监控项(Item)是 Zabbix 采集数据的基本单元,每个监控项对应一个 Key,用于获取特定指标。创建监控项时需注意:不带参数的监控项(如 system.uptime)直接使用内建 Key 即可;带参数的监控项(如监控文件大小、CPU 负载、端口状态)需要在 Key 中传入对应参数,例如 vfs.file.size[/mnt/timinglee]、system.cpu.load、net.tcp.port[,22]。
触发器(Trigger)用于判断监控数据是否处于合理范围,其表达式格式为 {<server>:<key>.<function>(<parameter>)}<operator><constant>。常用函数包括 avg(平均)、last(最近值)、max(最大值)、min(最小值)、nodata(无数据)、sum(总和)等。参数前加 # 表示最近 N 次取值,如 sum(#10) 表示最近 10 次取值之和。
7. 告警媒介与通知模板
当触发器触发后,可通过告警媒介(Media)发送通知。以 163 邮箱为例,需先在邮箱官网开启 POP3/SMTP 服务,然后在 Zabbix 中配置告警媒介类型、SMTP 服务器和认证信息,最后将媒介关联到用户并设置接收告警的邮箱地址。
告警通知支持自定义模板,常用宏变量包括:{HOST.NAME}(主机名)、{EVENT.DATE}(事件日期)、{EVENT.TIME}(事件时间)、{TRIGGER.NAME}(触发器名称)、{TRIGGER.SEVERITY}(告警等级)、{ITEM.NAME}(监控项名称)、{ITEM.VALUE1}(监控项当前值)、{EVENT.ID}(事件 ID)等。可分别配置「故障发生」和「故障恢复」两套模板,便于区分通知场景。
8. 自动发现与自动注册
自动发现(Discovery)由 Zabbix Server 主动扫描网络中的设备和服务,发现新设备后可通过自动发现动作自动完成添加主机、关联模板、加入主机组、发送通知等操作,适用于静态网络环境。
自动注册(Auto-registration)则由 Agent 启动时根据 ServerActive 参数主动向 Server 发送注册请求,Server 根据预设的自动注册动作判断是否接受并自动配置,适用于动态环境(如容器、云服务器)中快速纳入新部署的设备。做自动注册实验时,需确保自动发现动作已全部停止,避免两者冲突。
六、总结
Zabbix 是一款功能强大的开源企业级监控解决方案,覆盖从硬件、软件到网络和自定义业务指标的全面监控能力,并支持多渠道告警、数据可视化、自动发现与分布式监控等核心特性。其架构由 Zabbix Server、Agent、Proxy、Database、Web 界面和 Java Gateway 等组件构成,各组件分工明确,可灵活适配不同规模的监控场景。
在部署方面,Zabbix 的安装流程主要包括配置官方软件源、安装服务端与前端软件包、部署 MySQL 8 数据库并导入初始数据、配置服务端主文件并启动相关服务,最后通过 Web 界面完成初始化设置,其中中文字体显示问题可通过版本对应的字体替换方法解决。
在 Agent 使用层面,Zabbix 支持被动模式与主动模式两种数据采集方式。被动模式下由 Server 主动请求数据,主动模式下 Agent 主动上报,并可通过自动注册机制在动态环境中快速纳入新设备。监控项(Item)是数据采集的基本单元,触发器(Trigger)通过逻辑表达式判断数据是否异常,告警媒介(Media)负责将告警通知发送给管理员,自定义模板则能统一监控标准、简化批量管理。
整体来看,Zabbix 从数据采集、异常判断、告警通知到可视化分析形成了完整的监控闭环,既适合中小型环境的快速部署,也能通过 Proxy 和自动发现机制支撑大规模、跨机房的分布式监控需求,是企业 IT 基础设施运维中可靠且灵活的监控平台。