部署 Zabbix 企业级分布式监控
文档目录
- 监控系统基础:从概念到核心价值
- 主流开源监控产品对比:为什么选择 Zabbix?
- Zabbix 系统深度解析:特性、架构与核心组件
- Zabbix 部署全流程:环境准备与基础配置
- Zabbix Server 部署实战:从安装到 Web 初始化
- Zabbix Proxy 部署:分布式监控的关键节点
- Zabbix Agent 部署:被监控节点接入方案
- Zabbix 可视化与优化:字体显示及监控效果提升
- 常见问题与解决方案:部署中的避坑指南
1. 监控系统基础:从概念到核心价值
在 IT 运维领域,监控是保障系统稳定运行的 “神经中枢”。按行业经验,监控工作在运维总工作量中占比可达 30%,其核心价值在于 “提前发现问题、快速定位故障、支撑业务决策”。无论是中小公司的服务器集群,还是大型企业的分布式架构,没有监控的 IT 系统就像 “盲人走钢丝”—— 故障发生时毫无感知,直到业务中断才被动应对。
1.1 监控的五大层次:从硬件到用户体验
监控并非单一维度的工作,而是覆盖 IT 系统全链路的体系化工程。按逻辑层次可分为 5 层,每层对应不同的监控目标和指标:
-
基础设施监控:最底层的 “硬件防线”,由运维人员直接负责。监控对象包括网络设备(交换机、路由器)、物理服务器等,核心指标有网络流量、丢包率、错包率、设备端口连接数等。例如,路由器的端口流量突然飙升可能预示 DDoS 攻击,需立即告警。
-
系统层监控:覆盖操作系统及虚拟化层,是 “系统健康度” 的直接反映。监控对象包括物理机、虚拟机(如 KVM、VMware),核心指标有 CPU 使用率(单核心及整体负载)、内存占用率(实际使用与缓存区分)、磁盘 IO(读写速率、IOPS)、网络带宽(出入站流量)等。例如,CPU 持续 100% 可能导致服务响应延迟,内存溢出会直接引发进程崩溃。
-
应用层监控:贴近业务的 “服务性能监控”,需结合应用特性定制。监控对象包括 Web 服务、数据库、缓存、API 接口等,核心指标有:
- Web 服务:URL 访问延迟、调用成功率、错误码(如 4xx/5xx 占比);
- 数据库:慢 SQL 数量、连接池使用率、事务提交成功率;
- 缓存(如 Redis):命中率(低于 80% 可能需优化)、内存碎片率;
- 服务接口:响应时间(P95/P99 分位值)、并发调用数。
-
业务监控:直接关联企业营收的 “核心数据看板”,面向运营和管理层。以电商平台为例,需监控用户登录量、注册转化率、下单数、支付成功率、订单金额等。这些数据不仅用于故障告警(如支付成功率突降为 0),还能支撑战略决策(如某地区下单量增长可考虑新增节点)。
-
端用户体验监控:最贴近用户的 “最后一公里监控”。监控对象包括用户使用的终端(PC、APP、H5)、网络环境(运营商、地区),核心指标有页面加载时间、客户端错误率、不同地区 / 运营商的访问延迟等。例如,某地区用户打开 APP 耗时超过 5 秒,可能是 CDN 节点故障或运营商链路问题,需优先修复。
1.2 监控系统的核心原理
一个完整的监控系统需实现 “数据采集 - 存储 - 分析 - 告警 - 展示” 全链路,其核心原理可拆解为 3 部分:
1.2.1 模块组成:两大核心模块支撑全流程
- 数据采集部分:通过 Agent(客户端)或协议对接(如 SNMP)从被监控对象获取数据,是监控的 “数据源入口”。
- 数据处理部分:包括数据存储(如 MySQL、InfluxDB)、分析(指标计算、阈值判断)、告警(邮件、短信、企业微信)、展示(可视化图表、仪表盘),是监控的 “大脑与输出端”。
1.2.2 采集协议:两类协议覆盖不同场景
- 专用客户端采集:通过部署 Agent(如 Zabbix Agent)实现数据采集,优势是支持深度定制(如自定义脚本采集),适合需高频、高精度监控的场景(如系统层指标)。
- 公用协议采集:无需部署 Agent,通过通用协议对接,适合网络设备、第三方硬件等场景。常见协议包括:
- SNMP(简单网络管理协议):主流网络设备(如华为、Cisco 交换机)默认支持,可采集设备端口、CPU 等基础指标;
- IPMI(智能平台管理接口):用于监控物理服务器的硬件状态(如硬盘健康、风扇转速);
- SSH/Telnet:通过远程登录执行命令采集数据(如在无 Agent 的服务器上执行
df -h
获取磁盘使用率)。
1.2.3 采集模式:主动与被动的选择
- 被动模式:Server 主动向 Agent 请求数据(如 Zabbix Server 定期轮询 Agent)。优势是部署简单,劣势是 Server 压力随被监控节点增加而增大,适合节点数少于 100 的小规模场景。
- 主动模式:Agent 主动向 Server 上报数据(如 Agent 按配置间隔推送指标)。优势是 Server 压力小,适合节点数超过 500 的大规模场景(如分布式集群)。
1.2.4 代理架构:大规模监控的 “减压方案”
当被监控节点超过 1000 个,或跨地域、跨网络(如多机房)时,需引入 Proxy(代理)架构(C/S/P 架构:Client/Proxy/Server)。Proxy 就近采集本地 Agent 数据,再汇总到 Server,可大幅减少 Server 的网络开销和计算压力。例如,跨地域部署时,北京机房的 Proxy 采集本地服务器数据,再统一发送到上海的 Zabbix Server,避免跨地域网络延迟影响监控精度。
1.3 监控的核心价值:从 “被动救火” 到 “主动预防”
- 故障快速定位:通过全链路监控数据,可快速定位故障点(如 “用户支付失败”→“支付 API 超时”→“数据库连接池满”),缩短故障排查时间(从小时级降至分钟级)。
- 性能瓶颈预警:通过历史数据趋势分析,提前发现潜在瓶颈(如 “内存使用量每周增长 10%,预计 30 天后溢出”),避免业务中断。
- 资源合理规划:基于监控数据的容量规划(如 “某服务 CPU 峰值 80%,需新增服务器扩容”),避免资源浪费或不足。
- 业务决策支撑:通过业务监控数据(如 “某地区注册量增长 200%”),辅助管理层制定扩张或优化策略。
2. 主流开源监控产品对比:为什么选择 Zabbix?
开源监控工具种类繁多,不同产品有各自的优势场景。以下是 8 款主流开源监控产品的对比,帮助你快速判断 “哪种工具适合你的需求”:
产品名称 | 核心优势 | 适用场景 | 劣势 |
---|---|---|---|
Zabbix | 分布式架构、全链路监控、模板丰富、Web 管理 | 企业级分布式环境、混合云监控 | 初期配置较复杂 |
Prometheus+Grafana | 时序数据处理强、告警灵活、适合容器监控 | Kubernetes 集群、微服务架构 | 需手动搭建组件(无现成一体化方案) |
Cacti | 网络流量绘图专业、用户权限管理细致 | 中小网络环境(如校园网、企业内网) | 功能较单一(侧重绘图,告警能力弱) |
Nagios | 轻量、插件丰富、适合简单监控 | 中小服务器集群、基础服务监控 | 无内置绘图,需搭配第三方工具(如 PNP4Nagios) |
Checkmk | 部署快、自动化程度高 | 快速搭建监控(如临时项目、中小团队) | 企业版功能收费 |
OpenNMS | 支持 Java 生态、网络拓扑自动发现 | Java 应用、复杂网络环境 | 资源占用较高 |
Netdata | 实时性强(秒级采集)、指标覆盖广 | 实时性能排查(如突发性能问题) | 历史数据存储能力弱 |
LibreNMS | 网络设备自动发现、多厂商支持 | 多品牌网络设备监控(如 Cisco + 华为混合环境) | 服务器监控功能较弱 |
Zabbix 的核心优势:为什么成为企业级首选?
在企业级分布式监控场景中,Zabbix 的优势尤为突出:
- 全链路监控能力:从基础设施到端用户体验,覆盖监控 5 大层次,无需搭配其他工具即可实现 “一站式监控”。
- 分布式架构支持:通过 Proxy 实现跨地域、大规模监控(支持上万节点),适合企业级复杂环境。
- 灵活的告警机制:支持告警升级(如 “10 分钟未处理自动通知上级”)、多渠道推送(邮件、短信、API 对接企业微信),并可通过 “宏变量” 自定义告警内容(如 “服务器 {HOST.NAME} 的 CPU 使用率达到 {ITEM.VALUE}%”)。
- 模板化配置:内置上千个监控模板(如 Linux 服务器、MySQL 数据库),支持模板继承(如 “通用服务器模板 + Web 服务子模板”),大幅减少重复配置工作。
- 自动发现功能:可自动发现网络设备、服务器、文件系统等,新增节点无需手动配置即可接入监控。
- 开源免费:基于 GPLv2 协议,源码开放,无 License 费用,适合企业降低成本。
3. Zabbix 系统深度解析:特性、架构与核心组件
Zabbix 是一款 “企业级分布式开源监控平台”,由 Alexei Vladishev 创建,目前由 Zabbix SIA 主导开发。它支持 Linux、Windows、AIX 等多系统部署,可监控从服务器、网络设备到 Web 应用、数据库的所有 IT 资源,是企业级监控的 “全能选手”。
3.1 Zabbix 的 14 大核心功能特性
Zabbix 的功能覆盖监控全流程,以下是最核心的 14 项特性:
-
全面的数据收集:
- 支持可用性(如服务是否存活)和性能(如响应时间)检测;
- 兼容多种协议(SNMP、IPMI、JMX)和自定义检测(如脚本采集);
- 可自定义采集间隔(如 10 秒一次的高频采集或 1 小时一次的低频采集)。
-
灵活的阈值定义:通过 “触发器(Trigger)” 设置阈值(如 “CPU 使用率 > 90% 持续 5 分钟”),触发条件存储在数据库中,支持复杂逻辑(如 “CPU>90% 且内存 > 80%”)。
-
高级告警配置:
- 告警升级:可设置 “首次通知运维,10 分钟未处理通知经理”;
- 宏变量:告警信息中插入动态变量(如 {HOST.NAME}、{ITEM.VALUE});
- 自动动作:触发告警时执行远程命令(如 “内存溢出时自动重启服务”)。
-
实时绘图与可视化:
- 内置绘图工具,支持实时展示监控指标(如 CPU 趋势图);
- 可自定义仪表盘(Dashboard),集中展示核心指标(如业务下单量 + 系统 CPU);
- 生成网络拓扑图(Network Maps),直观展示设备连接关系及状态。
-
历史数据管理:
- 数据存储在关系型数据库(如 MySQL)或时序数据库(如 TimescaleDB);
- 支持配置数据保留周期(如 “核心指标保留 1 年,非核心保留 30 天”);
- 内置数据清理机制,自动删除过期数据,避免磁盘占满。
-
模板与自动化:
- 模板可包含监控项、触发器、图形等,支持 “一次配置,批量应用”;
- 模板支持继承(如 “通用 Linux 模板” 作为父模板,“Web 服务器模板” 继承后新增 Web 指标);
- 支持自动发现(如新增服务器时自动关联模板)。
-
网络自动发现:
- 自动扫描网络设备(通过 SNMP、ARP 等协议);
- Agent 自动注册(新增节点安装 Agent 后自动上报到 Server);
- 自动发现文件系统、网卡(如新增磁盘时自动添加监控)。
-
Web 管理界面:基于 PHP 开发,支持多语言(含中文),可从任何设备访问,方便远程管理。
-
API 接口:提供 RESTful API,支持第三方系统对接(如通过 Python 脚本批量添加主机)。
-
权限控制:支持多角色管理(如 “运维组” 可修改配置,“开发组” 仅查看数据),细粒度控制资源访问权限。
-
跨平台 Agent:支持 Linux、Windows、AIX 等系统,轻量(占用内存 < 10MB)、高性能(C 语言开发)。
-
代理架构支持:通过 Proxy 实现分布式监控,减轻 Server 压力,支持跨网络部署。
-
低资源消耗:Server 和 Agent 均为二进制守护进程(C 语言开发),内存占用低(单 Server 可支撑数千节点)。
-
开源免费:源码开放,可二次开发,无 License 费用,适合企业长期使用。
3.2 Zabbix 架构:核心组件与协作流程
Zabbix 采用模块化架构,核心组件包括 Server、Proxy、Agent、Web 前端,各组件分工明确,协同完成监控全流程。
核心组件及作用
- Zabbix Server:监控系统的 “核心大脑”,负责接收 Agent/Proxy 发送的数据、存储数据、分析指标、触发告警、管理配置等。所有监控逻辑的最终处理都由 Server 完成。
- Zabbix Proxy:“分布式代理节点”,用于分担 Server 压力。Proxy 采集本地 Agent 的数据,汇总后发送给 Server(支持主动 / 被动模式),适合跨地域、大规模监控场景。
- Zabbix Agent:部署在被监控节点的 “数据采集器”,负责采集本地指标(如 CPU、内存),并按配置将数据发送给 Server 或 Proxy(主动模式),或等待 Server/Proxy 请求(被动模式)。
- Zabbix Web 前端:基于 Web 的 “管理与展示界面”,通过 PHP 与 Server 交互,提供配置管理(如添加主机)、数据查看(如监控图表)、告警管理等功能。
- 数据库:存储所有配置数据(如主机信息、模板)和监控历史数据(如 CPU 指标),支持 MySQL、PostgreSQL、Oracle 等。
数据流转流程
以 “Agent→Proxy→Server” 的分布式架构为例,数据流转步骤如下:
- Agent 采集本地数据(如每 10 秒采集一次 CPU 使用率);
- Agent 按配置将数据主动发送给 Proxy(主动模式);
- Proxy 临时存储数据,并定期汇总发送给 Server;
- Server 将数据写入数据库,并通过触发器判断是否触发告警(如 CPU>90%);
- 若触发告警,Server 按配置发送通知(如邮件给运维);
- 用户通过 Web 前端查看监控数据、告警信息及图表。
4. Zabbix 部署全流程:环境准备与基础配置
部署 Zabbix 前需做好环境准备,包括硬件配置、操作系统选择、基础环境优化等。以下基于文档中的 “openEuler 24.03” 环境(兼容 CentOS/RHEL),提供标准化部署流程。
4.1 资源清单与硬件要求
4.1.1 部署节点规划
节点角色 | 操作系统 | 配置(最低要求) | 主机名 | IP 地址 | 备注 |
---|---|---|---|---|---|
Zabbix Server | openEuler 24.03 | 2C4G,50GB 磁盘 | zabbix | 192.168.207.137 | 需安装数据库(MySQL) |
Zabbix Proxy | openEuler 24.03 | 2C2G,20GB 磁盘 | proxy | 192.168.207.138 | 需连接 Server 的数据库 |
被监控节点 1 | openEuler 24.03 | 1C1G,10GB 磁盘 | server01 | 192.168.207.139 | 部署 Zabbix Agent |
被监控节点 2 | openEuler 24.03 | 1C1G,10GB 磁盘 | server02 | 192.168.207.140 | 部署 Zabbix Agent |
4.1.2 硬件配置说明
- Zabbix Server:作为核心节点,配置需根据监控规模调整:
- 小规模(<100 节点):2C4G,50GB 磁盘(存储 1 个月数据);
- 中规模(100-1000 节点):4C8G,100GB 磁盘;
- 大规模(>1000 节点):8C16G 以上,搭配 SSD 提升数据库性能。
- Zabbix Proxy:按监控节点数量分配,每 1000 节点建议 2C4G。
- Agent 节点:轻量部署,1C1G 足够(Agent 本身占用资源极低)。
4.2 基础环境配置
所有节点(Server、Proxy、Agent)需先完成以下基础配置,避免部署中出现 “防火墙拦截”“时间不同步” 等问题。
4.2.1 关闭防火墙(所有节点)
Zabbix 各组件通信依赖特定端口(如 Server 端口 10051,Agent 端口 10050),临时关闭防火墙可避免端口拦截:
bash
# 停止防火墙服务
systemctl stop firewalld
# 禁止开机自启
systemctl disable firewalld
生产环境建议保留防火墙,仅开放必要端口(如 10050、10051、8080),命令参考:
firewall-cmd --add-port=10050/tcp --permanent
(开放 Agent 端口)。
4.2.2 关闭 SELinux(所有节点)
SELinux 可能拦截 Zabbix 的文件访问、端口通信,临时关闭可减少权限问题:
bash
# 临时关闭(立即生效)
setenforce 0
# 永久关闭(需重启,编辑/etc/selinux/config,设置SELINUX=disabled)
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
4.2.3 时间同步(所有节点)
监控数据依赖时间戳,节点时间不同步会导致历史数据混乱(如 “指标顺序错误”)。需统一同步到 “Asia/Shanghai” 时区:
bash
# 设置时区为上海
timedatectl set-timezone Asia/Shanghai# 安装chrony(时间同步工具)
dnf -y install chrony# 启动并设置开机自启
systemctl start chronyd
systemctl enable chronyd# 验证同步状态(出现*号表示同步成功)
chronyc sources -v
4.2.4 修改主机名(所有节点)
主机名用于标识节点角色,便于后续管理(需与后续 Zabbix 配置中的 “Hostname” 对应):
bash
# Zabbix Server节点
hostnamectl set-hostname zabbix# Zabbix Proxy节点
hostnamectl set-hostname proxy# 被监控节点1
hostnamectl set-hostname server01# 被监控节点2
hostnamectl set-hostname server02# 查看修改结果
hostname
4.2.5 配置本地解析(可选)
为避免依赖 DNS,可在/etc/hosts
中添加节点 IP 与主机名的映射:
bash
cat >> /etc/hosts << EOF
192.168.207.137 zabbix
192.168.207.138 proxy
192.168.207.139 server01
192.168.207.140 server02
EOF
5. Zabbix Server 部署实战:从安装到 Web 初始化
Zabbix Server 是监控系统的核心,需部署数据库、Server 服务、Web 前端等组件。以下按 “添加源→安装软件→配置数据库→启动服务→Web 配置” 的流程逐步操作。
5.1 添加 Zabbix 官方源
Zabbix 官方提供了 rpm 包源,通过源安装可自动解决依赖关系(推荐使用 6.4 版本,稳定性与功能平衡):
bash
# 在Zabbix Server节点执行
rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/9/x86_64/zabbix-release-latest-6.4.el9.noarch.rpm# 清理缓存并生成新缓存
dnf clean all
dnf makecache
5.2 安装核心软件包
Zabbix Server 需安装 Server 服务、Web 组件、数据库、Agent(可监控自身)等,具体包说明如下:
软件包名称 | 作用 |
---|---|
zabbix-server-mysql | Zabbix Server 核心服务(MySQL 支持) |
zabbix-web-mysql | Zabbix Web 前端(MySQL 支持) |
zabbix-nginx-conf | Nginx 配置(Web 前端依赖) |
zabbix-sql-scripts | 数据库初始化脚本(创建表结构) |
zabbix-selinux-policy | SELinux 政策(避免权限问题) |
zabbix-agent | Zabbix Agent(监控 Server 自身) |
mysql-server-8.0.41 mysql | MySQL 数据库(存储配置和监控数据) |
net-snmp-libs | SNMP 支持(监控网络设备需用到) |
执行安装命令:
bash
# 安装Zabbix相关包
dnf -y install zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent# 安装MySQL(需8.0.30及以上版本)
dnf -y install mysql-server-8.0.41 mysql# 安装SNMP依赖(解决部分监控项依赖问题)
dnf -y install https://www.rpmfind.net/linux/centos-stream/9-stream/AppStream/x86_64/os/Packages/net-snmp-libs-5.9.1-17.el9.x86_64.rpm
5.3 数据库配置:初始化与权限设置
Zabbix 的所有数据(配置、监控指标)需存储在数据库中,需先初始化数据库并配置权限。
5.3.1 启动 MySQL 并设置开机自启
bash
# 启动MySQL
systemctl start mysqld# 设置开机自启
systemctl enable mysqld# 查看状态(确保Active: active (running))
systemctl status mysqld
5.3.2 初始化 MySQL(安全配置)
默认 MySQL 的 root 用户无密码,需设置密码并优化安全配置:
bash
# 登录MySQL(首次登录无密码,直接回车)
mysql -uroot# 执行以下SQL语句(复制粘贴到MySQL终端)
-- 设置root密码(替换为你的密码,如123456)
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
FLUSH PRIVILEGES;-- 创建Zabbix Server数据库(字符集utf8mb4支持中文)
create database zabbix character set utf8mb4 collate utf8mb4_bin;-- 创建Zabbix用户(本地访问,密码zabbix)
create user zabbix@localhost identified by 'zabbix';-- 授予Zabbix用户数据库权限
grant all privileges on zabbix.* to zabbix@localhost;-- 创建Proxy数据库(后续Proxy使用)
create database zabbix_proxy character set utf8mb4 collate utf8mb4_bin;-- 允许Zabbix用户远程访问(Proxy需连接Server的数据库)
create user zabbix@'%' identified by 'zabbix';
grant all privileges on zabbix_proxy.* to zabbix@localhost;
grant all privileges on zabbix_proxy.* to zabbix@'%';-- 允许创建存储函数(Zabbix初始化脚本需要)
set global log_bin_trust_function_creators = 1;-- 退出MySQL
quit;
5.3.3 导入 Zabbix 初始化脚本
Zabbix 提供了数据库表结构脚本,需导入到zabbix
数据库(约 5 分钟,耐心等待):
bash
# 导入脚本(需输入Zabbix用户密码:zabbix)
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix# 导入完成后,关闭存储函数创建权限(安全加固)
mysql -uroot -p123456 -e "set global log_bin_trust_function_creators = 0;"
若提示 “zcat: 无此文件或目录”,检查
zabbix-sql-scripts
包是否安装(rpm -qa | grep zabbix-sql-scripts
),未安装需重新安装。
5.4 配置 Zabbix Server
Zabbix Server 需配置数据库连接信息(密码、地址等),修改zabbix_server.conf
文件:
bash
# 编辑配置文件
vim /etc/zabbix/zabbix_server.conf# 找到以下参数并修改(取消注释并填写)
DBPassword=zabbix # 数据库密码(与创建用户时一致)
DBName=zabbix # 数据库名(默认即可)
DBUser=zabbix # 数据库用户(默认即可)
5.5 配置 Web 前端(Nginx)
Zabbix Web 前端通过 Nginx 提供访问,需配置端口(默认 8080,避免与其他服务冲突):
bash
# 编辑Nginx配置
vim /etc/nginx/conf.d/zabbix.conf# 找到以下参数,取消注释并设置端口
listen 8080; # Web访问端口
server_name _; # 服务器名(默认即可)
5.6 启动服务并验证
启动 Zabbix Server、Agent、Nginx、PHP-FPM(Web 依赖),并设置开机自启:
bash
# 启动服务
systemctl restart zabbix-server zabbix-agent nginx php-fpm# 设置开机自启
systemctl enable zabbix-server zabbix-agent nginx php-fpm# 查看状态(确保均为active)
systemctl status zabbix-server zabbix-agent nginx php-fpm
5.7 Web 前端初始化配置
通过浏览器访问 Web 前端,完成初始化配置(语言设置、数据库连接等)。
5.7.1 访问 Web 界面
在浏览器输入:http://192.168.207.137:8080/
(Zabbix Server 的 IP + 端口),首次访问将进入配置向导。
5.7.2 步骤 1:选择语言
点击页面右下角 “Language”,选择 “Chinese (zh_CN)”,点击 “Next step”。
5.7.3 步骤 2:检查环境
系统会自动检查依赖(如 PHP 版本、目录权限),所有项显示 “OK” 后点击 “Next step”。若有 “Not OK”,需按提示修复(如 PHP 扩展缺失需安装对应包)。
5.7.4 步骤 3:配置数据库连接
填写 MySQL 连接信息(与之前配置一致):
- Database type:MySQL
- Server:localhost(数据库与 Server 同机)
- Port:3306(MySQL 默认端口)
- Database name:zabbix
- User:zabbix
- Password:zabbix(之前设置的密码)
填写完成后点击 “Next step”。
5.7.5 步骤 4:设置 Server 名称
默认名称为 “Zabbix Server”,可自定义(如 “生产环境 Zabbix”),点击 “Next step”。
5.7.6 步骤 5:安装前汇总
确认配置信息无误后,点击 “Next step”。
5.7.7 步骤 6:完成安装
显示 “Zabbix 前端已经配置好了” 表示成功,点击 “Finish”。
5.7.8 登录 Zabbix
使用默认账号密码登录:
- 用户名:Admin
- 密码:zabbix
首次登录建议修改密码(点击右上角 “Admin”→“Profile”→“Password”)。
6. Zabbix Proxy 部署:分布式监控的关键节点
当监控节点超过 500 个,或跨地域部署时,需通过 Proxy 分担 Server 压力。Proxy 部署流程包括 “添加源→安装包→配置数据库→启动服务→Web 注册”。
6.1 环境准备与源配置
Proxy 节点需与 Server 保持一致的源(确保版本兼容):
bash
# 在Proxy节点执行(192.168.207.138)
rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/9/x86_64/zabbix-release-latest-6.4.el9.noarch.rpmdnf clean all
dnf makecache
6.2 安装 Proxy 相关包
Proxy 需安装 Proxy 服务、SQL 脚本、SNMP 依赖等:
bash
# 安装Proxy核心包(MySQL支持)
dnf -y install zabbix-proxy-mysql zabbix-sql-scripts zabbix-selinux-policy mysql# 安装SNMP依赖
dnf -y install https://www.rpmfind.net/linux/centos-stream/9-stream/AppStream/x86_64/os/Packages/net-snmp-libs-5.9.1-17.el9.x86_64.rpm
6.3 初始化 Proxy 数据库
Proxy 需使用之前在 Server 的 MySQL 中创建的zabbix_proxy
数据库,需导入 Proxy 专用初始化脚本。
6.3.1 导入 Proxy 表结构
bash
# 在Proxy节点执行(需连接Server的数据库,输入密码zabbix)
mysql --default-character-set=utf8mb4 -uzabbix -p zabbix_proxy -h 192.168.207.137 < /usr/share/zabbix-sql-scripts/mysql/proxy.sql
若提示 “mysql: 未找到命令”,需安装 MySQL 客户端:
dnf -y install mysql
;若提示 “proxy.sql 不存在”,检查zabbix-sql-scripts
包是否安装。
6.4 配置 Zabbix Proxy
修改zabbix_proxy.conf
,设置 Server 地址、数据库连接等关键参数:
bash
vim /etc/zabbix/zabbix_proxy.conf# 修改以下参数(按实际情况填写)
Server=192.168.207.137 # Zabbix Server的IP
Hostname=Zabbix proxy # Proxy名称(Web注册时需一致)
DBHost=192.168.207.137 # 数据库IP(Server的IP)
DBName=zabbix_proxy # 数据库名
DBUser=zabbix # 数据库用户
DBPassword=zabbix # 数据库密码
ConfigFrequency=60 # 从Server同步配置的间隔(秒)
DataSenderFrequency=5 # 向Server发送数据的间隔(秒)
6.5 启动 Proxy 服务
bash
# 启动服务
systemctl start zabbix-proxy# 设置开机自启
systemctl enable zabbix-proxy# 查看状态(确保Active: active (running))
systemctl status zabbix-proxy
6.6 在 Web 前端添加 Proxy
Proxy 需在 Server 的 Web 界面注册,步骤如下:
- 登录 Zabbix Web(Admin 账号);
- 点击左侧菜单 “管理”→“Proxies”;
- 点击右上角 “创建代理”;
- 填写配置:
- 代理名称:Zabbix proxy(需与
zabbix_proxy.conf
中的 Hostname 一致); - 代理类型:主动式(Proxy 主动向 Server 同步配置);
- 其他默认,点击 “添加”。
- 代理名称:Zabbix proxy(需与
添加后约 1 分钟,Proxy 状态会显示 “在线”(绿色),表示注册成功。
7. Zabbix Agent 部署:被监控节点接入方案
被监控节点需部署 Agent,用于采集数据并发送给 Server 或 Proxy。以下以server01
节点为例,提供部署流程。
7.1 添加源并安装 Agent
bash
# 在被监控节点(192.168.207.139)执行
rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/9/x86_64/zabbix-release-latest-6.4.el9.noarch.rpm
dnf clean all
dnf -y install zabbix-agent
7.2 配置 Zabbix Agent
修改zabbix_agentd.conf
,设置数据发送目标(Server 或 Proxy):
bash
vim /etc/zabbix/zabbix_agentd.conf# 修改以下参数
Server=192.168.207.138 # 若通过Proxy采集,填写Proxy的IP;直接连Server则填Server的IP
ServerActive=192.168.207.138 # 与Server一致(主动发送数据的目标)
Hostname=server01 # 主机名(Web添加主机时需一致)
7.3 启动 Agent 服务
bash
# 启动服务
systemctl start zabbix-agent# 设置开机自启
systemctl enable zabbix-agent# 查看状态
systemctl status zabbix-agent
7.4 在 Web 前端添加被监控节点
以 “通过 Proxy 采集 server01” 为例,步骤如下:
- 登录 Zabbix Web,点击左侧 “数据采集”→“主机”;
- 点击右上角 “创建主机”;
- 填写配置:
- 主机名称:server01(需与 Agent 配置的 Hostname 一致);
- 主机群组:点击 “选择”→勾选 “Linux servers”→“选择”;
- 代理:选择之前创建的 “Zabbix proxy”;
- 接口:点击 “添加”→选择 “Agent”→IP 地址填写
192.168.207.139
→端口10050
;
- 模板:点击 “模板”→“选择”→搜索 “Linux by Zabbix agent”→勾选→“选择”;
- 点击 “添加”。
添加后约 1 分钟,主机状态会显示 “已启用”,监控项开始采集数据(可在 “最新数据” 中查看)。
8. Zabbix 可视化与优化:字体显示及监控效果提升
默认 Zabbix 的图表可能显示 “方块”(缺少中文字体),需替换字体;同时可通过自定义仪表盘提升监控体验。
8.1 解决中文显示乱码问题
步骤 1:查找字体配置文件
bash
# 在Zabbix Server节点执行
find / -name defines.inc.php
# 结果通常为:/usr/share/zabbix/include/defines.inc.php
步骤 2:确认字体文件名称
bash
grep "ZBX_GRAPH_FONT_NAME" /usr/share/zabbix/include/defines.inc.php
# 输出:define('ZBX_GRAPH_FONT_NAME', 'graphfont');(默认字体名)
步骤 3:替换字体
- 上传中文字体(如 “微软雅黑 msyh.ttc”)到
/usr/share/zabbix/assets/fonts/
; - 创建软链接替换默认字体:
bash
cd /usr/share/zabbix/assets/fonts
ln -snf msyh.ttc graphfont.ttf # 软链接指向中文字体
- 刷新 Web 页面,图表中文将正常显示。
8.2 自定义仪表盘(Dashboard)
仪表盘可集中展示核心指标,步骤如下:
- 登录 Web,点击 “仪表盘”→“创建仪表盘”;
- 填写名称(如 “生产核心监控”),点击 “添加”;
- 点击 “添加小部件”,选择需要的组件:
- 图形:选择监控项的趋势图(如 “CPU 使用率”);
- 状态指示:显示主机 / 服务状态(如 “数据库是否在线”);
- 数据聚合:展示业务指标(如 “今日下单总量”);
- 调整布局后点击 “保存”。
9. 常见问题与解决方案:部署中的避坑指南
9.1 数据库相关问题
-
问题:导入 server.sql 时提示 “权限不足”?
- 解决:检查
zabbix
用户对zabbix
数据库的权限:mysql -uroot -p -e "show grants for zabbix@localhost;"
,确保有ALL PRIVILEGES
。
- 解决:检查
-
问题:Proxy 连接数据库提示 “Access denied”?
- 解决:确认
zabbix
用户允许远程访问:create user zabbix@'%' identified by 'zabbix';
,并授予权限。
- 解决:确认
9.2 服务启动失败
-
问题:zabbix-server 启动失败,日志提示 “Cannot connect to MySQL”?
- 解决:检查
zabbix_server.conf
的 DB 参数是否正确,MySQL 是否启动,防火墙是否开放 3306 端口。
- 解决:检查
-
问题:zabbix-proxy 状态为 “未在线”?
- 解决:查看 Proxy 日志
/var/log/zabbix/zabbix_proxy.log
,常见原因:- Server IP 配置错误(
Server
参数); - 数据库连接失败(
DBHost
/DBPassword
错误); - 与 Server 的 10051 端口不通(需开放端口)。
- Server IP 配置错误(
- 解决:查看 Proxy 日志
9.3 监控数据采集问题
-
问题:Agent 添加后无数据,提示 “不支持的项目键值”?
- 解决:检查模板是否匹配(如 “Linux by Zabbix agent” 需 Agent 正常运行),Agent 日志是否有 “permission denied”(需调整目录权限)。
-
问题:Proxy 采集的数据未显示在 Server?
- 解决:确认 Proxy 与 Server 的
Hostname
一致,DataSenderFrequency
参数是否过小(建议≥5 秒),查看 Server 日志是否有 Proxy 连接记录。
- 解决:确认 Proxy 与 Server 的