部署 Zabbix 企业级分布式监控

文档目录

  1. 监控系统基础:从概念到核心价值
  2. 主流开源监控产品对比:为什么选择 Zabbix?
  3. Zabbix 系统深度解析:特性、架构与核心组件
  4. Zabbix 部署全流程:环境准备与基础配置
  5. Zabbix Server 部署实战:从安装到 Web 初始化
  6. Zabbix Proxy 部署:分布式监控的关键节点
  7. Zabbix Agent 部署:被监控节点接入方案
  8. Zabbix 可视化与优化:字体显示及监控效果提升
  9. 常见问题与解决方案:部署中的避坑指南

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 的优势尤为突出:

  1. 全链路监控能力:从基础设施到端用户体验,覆盖监控 5 大层次,无需搭配其他工具即可实现 "一站式监控"。
  2. 分布式架构支持:通过 Proxy 实现跨地域、大规模监控(支持上万节点),适合企业级复杂环境。
  3. 灵活的告警机制:支持告警升级(如 "10 分钟未处理自动通知上级")、多渠道推送(邮件、短信、API 对接企业微信),并可通过 "宏变量" 自定义告警内容(如 "服务器 {HOST.NAME} 的 CPU 使用率达到 {ITEM.VALUE}%")。
  4. 模板化配置:内置上千个监控模板(如 Linux 服务器、MySQL 数据库),支持模板继承(如 "通用服务器模板 + Web 服务子模板"),大幅减少重复配置工作。
  5. 自动发现功能:可自动发现网络设备、服务器、文件系统等,新增节点无需手动配置即可接入监控。
  6. 开源免费:基于 GPLv2 协议,源码开放,无 License 费用,适合企业降低成本。

3. Zabbix 系统深度解析:特性、架构与核心组件

Zabbix 是一款 "企业级分布式开源监控平台",由 Alexei Vladishev 创建,目前由 Zabbix SIA 主导开发。它支持 Linux、Windows、AIX 等多系统部署,可监控从服务器、网络设备到 Web 应用、数据库的所有 IT 资源,是企业级监控的 "全能选手"。

3.1 Zabbix 的 14 大核心功能特性

Zabbix 的功能覆盖监控全流程,以下是最核心的 14 项特性:

  1. 全面的数据收集

    • 支持可用性(如服务是否存活)和性能(如响应时间)检测;
    • 兼容多种协议(SNMP、IPMI、JMX)和自定义检测(如脚本采集);
    • 可自定义采集间隔(如 10 秒一次的高频采集或 1 小时一次的低频采集)。
  2. 灵活的阈值定义:通过 "触发器(Trigger)" 设置阈值(如 "CPU 使用率 > 90% 持续 5 分钟"),触发条件存储在数据库中,支持复杂逻辑(如 "CPU>90% 且内存 > 80%")。

  3. 高级告警配置

    • 告警升级:可设置 "首次通知运维,10 分钟未处理通知经理";
    • 宏变量:告警信息中插入动态变量(如 {HOST.NAME}、{ITEM.VALUE});
    • 自动动作:触发告警时执行远程命令(如 "内存溢出时自动重启服务")。
  4. 实时绘图与可视化

    • 内置绘图工具,支持实时展示监控指标(如 CPU 趋势图);
    • 可自定义仪表盘(Dashboard),集中展示核心指标(如业务下单量 + 系统 CPU);
    • 生成网络拓扑图(Network Maps),直观展示设备连接关系及状态。
  5. 历史数据管理

    • 数据存储在关系型数据库(如 MySQL)或时序数据库(如 TimescaleDB);
    • 支持配置数据保留周期(如 "核心指标保留 1 年,非核心保留 30 天");
    • 内置数据清理机制,自动删除过期数据,避免磁盘占满。
  6. 模板与自动化

    • 模板可包含监控项、触发器、图形等,支持 "一次配置,批量应用";
    • 模板支持继承(如 "通用 Linux 模板" 作为父模板,"Web 服务器模板" 继承后新增 Web 指标);
    • 支持自动发现(如新增服务器时自动关联模板)。
  7. 网络自动发现

    • 自动扫描网络设备(通过 SNMP、ARP 等协议);
    • Agent 自动注册(新增节点安装 Agent 后自动上报到 Server);
    • 自动发现文件系统、网卡(如新增磁盘时自动添加监控)。
  8. Web 管理界面:基于 PHP 开发,支持多语言(含中文),可从任何设备访问,方便远程管理。

  9. API 接口:提供 RESTful API,支持第三方系统对接(如通过 Python 脚本批量添加主机)。

  10. 权限控制:支持多角色管理(如 "运维组" 可修改配置,"开发组" 仅查看数据),细粒度控制资源访问权限。

  11. 跨平台 Agent:支持 Linux、Windows、AIX 等系统,轻量(占用内存 < 10MB)、高性能(C 语言开发)。

  12. 代理架构支持:通过 Proxy 实现分布式监控,减轻 Server 压力,支持跨网络部署。

  13. 低资源消耗:Server 和 Agent 均为二进制守护进程(C 语言开发),内存占用低(单 Server 可支撑数千节点)。

  14. 开源免费:源码开放,可二次开发,无 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" 的分布式架构为例,数据流转步骤如下:

  1. Agent 采集本地数据(如每 10 秒采集一次 CPU 使用率);
  2. Agent 按配置将数据主动发送给 Proxy(主动模式);
  3. Proxy 临时存储数据,并定期汇总发送给 Server;
  4. Server 将数据写入数据库,并通过触发器判断是否触发告警(如 CPU>90%);
  5. 若触发告警,Server 按配置发送通知(如邮件给运维);
  6. 用户通过 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.rpm

dnf 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 界面注册,步骤如下:

  1. 登录 Zabbix Web(Admin 账号);
  2. 点击左侧菜单 "管理"→"Proxies";
  3. 点击右上角 "创建代理";
  4. 填写配置:
    • 代理名称:Zabbix proxy(需与zabbix_proxy.conf中的 Hostname 一致);
    • 代理类型:主动式(Proxy 主动向 Server 同步配置);
    • 其他默认,点击 "添加"。

添加后约 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" 为例,步骤如下:

  1. 登录 Zabbix Web,点击左侧 "数据采集"→"主机";
  2. 点击右上角 "创建主机";
  3. 填写配置:
    • 主机名称:server01(需与 Agent 配置的 Hostname 一致);
    • 主机群组:点击 "选择"→勾选 "Linux servers"→"选择";
    • 代理:选择之前创建的 "Zabbix proxy";
    • 接口:点击 "添加"→选择 "Agent"→IP 地址填写192.168.207.139→端口10050
  4. 模板:点击 "模板"→"选择"→搜索 "Linux by Zabbix agent"→勾选→"选择";
  5. 点击 "添加"。

添加后约 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:替换字体
  1. 上传中文字体(如 "微软雅黑 msyh.ttc")到/usr/share/zabbix/assets/fonts/
  2. 创建软链接替换默认字体:

bash

复制代码
cd /usr/share/zabbix/assets/fonts
ln -snf msyh.ttc graphfont.ttf  # 软链接指向中文字体
  1. 刷新 Web 页面,图表中文将正常显示。

8.2 自定义仪表盘(Dashboard)

仪表盘可集中展示核心指标,步骤如下:

  1. 登录 Web,点击 "仪表盘"→"创建仪表盘";
  2. 填写名称(如 "生产核心监控"),点击 "添加";
  3. 点击 "添加小部件",选择需要的组件:
    • 图形:选择监控项的趋势图(如 "CPU 使用率");
    • 状态指示:显示主机 / 服务状态(如 "数据库是否在线");
    • 数据聚合:展示业务指标(如 "今日下单总量");
  4. 调整布局后点击 "保存"。

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 端口不通(需开放端口)。

9.3 监控数据采集问题

  • 问题:Agent 添加后无数据,提示 "不支持的项目键值"?

    • 解决:检查模板是否匹配(如 "Linux by Zabbix agent" 需 Agent 正常运行),Agent 日志是否有 "permission denied"(需调整目录权限)。
  • 问题:Proxy 采集的数据未显示在 Server?

    • 解决 :确认 Proxy 与 Server 的Hostname一致,DataSenderFrequency参数是否过小(建议≥5 秒),查看 Server 日志是否有 Proxy 连接记录。
相关推荐
Gold Steps.3 小时前
K8s WebUI 选型:国外 Rancher vs 国内 KubeSphere vs 原生 Dashboard,从部署到使用心得谁更适合企业级场景?
云原生·容器·kubernetes
许墨の小蝴蝶4 小时前
k8s怎么找deploy历史版本?
kubernetes
云游6 小时前
K8s:离线部署Kubernetes1.26.12及采用外部Harbor
云原生·容器·kubernetes
W@Lucky6 小时前
谷粒商城篇章13--P340-P360--k8s/KubeSphere【高可用集群篇一】
云原生·容器·kubernetes·devops
步、步、为营9 小时前
.NET 8.0 中有哪些新的变化?
容器·kubernetes·.net
许墨の小蝴蝶10 小时前
k8s把某个secret挂在某命名空间下
kubernetes
David爱编程11 小时前
深入理解K8s的Volume生命周期管理
云原生·容器·kubernetes
hello_ world.1 天前
华为云CCE-PV使用OBS存储类之坑
kubernetes·华为云
元气满满的热码式1 天前
修复WSL安装失败(错误: 0x80248014 )并安装K8S
云原生·容器·kubernetes