Zabbix 企业级分布式监控

发布于:2025-07-25 ⋅ 阅读:(15) ⋅ 点赞:(0)

目录

简介

一、监控系统基础

1.1 监控的价值

1.2 监控的 5 大类型与 5 大层次

1.3 监控系统的实现原理

二、Zabbix:企业级监控方案

2.1 Zabbix 简介

2.2 Zabbix 核心功能特性

2.3 Zabbix 角色与架构

三、Zabbix 部署案例

3.1 资源清单

3.2 基础环境配置

(1)关闭防火墙

(2)关闭 SELinux

(3)时间同步

(4)修改主机名

3.3 部署 Zabbix Server

(1)添加 Zabbix 源

(2)安装依赖软件

(3)配置 MySQL 数据库

(4)导入 Zabbix 初始数据

(5)配置 Zabbix Server

(6)配置 Nginx(Web 服务)

(7)启动服务并设置自启

3.4 Zabbix Web 界面配置

(1)访问登录页面

(2)语言与许可协议

(3)环境检查

(4)配置数据库连接

(5)设置 Server 名称与时区

(6)完成安装

(7)登录验证

3.5 部署 Zabbix Proxy(分布式监控)

(1)添加 Zabbix 源(同 Server)

(2)安装 Proxy 组件

(3)导入 Proxy 初始数据

(4)配置 Proxy

(5)启动 Proxy 并设置自启

(6)Web 界面添加 Proxy

3.6 部署 Zabbix Agent(被监控节点)

(1)添加 Zabbix 源(同 Server)

(2)安装 Agent

(3)配置 Agent

(4)启动 Agent 并设置自启

(5)Web 界面添加主机

四、常见问题:解决 Zabbix 字体显示乱码

总结


简介

在 IT 运维领域,监控系统如同 “千里眼” 与 “顺风耳”,是保障业务稳定运行的核心支柱。据行业经验,监控工作在运维环节中占比可达 30%,构建一套高效的监控告警系统更是运维工程师的核心能力。本文将从监控系统的基础原理出发,讲解 Zabbix 的功能特性,并完成 Zabbix 企业级分布式监控的部署与配置。

一、监控系统基础

1.1 监控的价值

监控(Monitoring)的本质是 “检测与预防”,通过对 IT 系统全链路的指标采集、分析与告警,提前发现潜在问题,避免故障扩散。在复杂的 IT 架构中,监控需覆盖从底层硬件到上层业务的全栈场景。

1.2 监控的 5 大类型与 5 大层次

  • 5 大监控类型:应用性能监控、业务交易监控、网络性能监控、操作系统监控(文档中列 4 项,实际涵盖全场景)。
  • 5 大逻辑层次(从底层到上层):
  • 基础设施监控:网络设备(交换机、路由器)的流量、丢包率、连接数等,由运维负责,保障底层稳定性。
  • 系统层监控:物理机 / 虚拟机 / 操作系统的 CPU 使用率、内存占用、磁盘 IO、网络带宽等核心指标。
  • 应用层监控:接口响应时间、调用量、错误率、慢 SQL、缓存命中率等服务相关指标。
  • 业务监控:用户登录、下单、支付等核心业务流程数据,为运营决策和战略调整提供数据支撑。
  • 端用户体验监控:用户端(APP、H5、PC)的性能、错误码、地域 / 运营商访问情况等,直接反映用户感知。

1.3 监控系统的实现原理

一个完整的监控系统需包含数据采集数据处理(存储、分析、告警、展示) 两大部分,核心组件与工作模式如下:

  • 采集协议:分为专用客户端(如 Zabbix Agent)和公用协议(SNMP、IPMI、SSH、Telnet 等)。
  • 工作模式
  • 被动模式:服务器主动向客户端采集数据(对服务器开销大,适合小规模场景)。
  • 主动模式:客户端主动向服务器上报数据(对服务器开销小,适合大规模场景)。
  • 代理架构:在大规模 / 跨地域场景中,通过 C/S/P(Client/Proxy/Server)架构分摊服务器压力,支持分布式监控。

二、Zabbix:企业级监控方案

2.1 Zabbix 简介

Zabbix 是一款开源的企业级分布式监控系统,支持从服务器、网络设备到 Web 应用、数据库的全场景监控。其优势在于:

  • 跨平台适配:可运行于 Linux、Windows、AIX 等主流系统。
  • 开源免费:基于 GPLv2 协议,源代码公开可定制。
  • 功能全面:覆盖数据采集、告警、可视化、自动化等全流程。

2.2 Zabbix 核心功能特性

  1. 数据收集:支持 SNMP、IPMI、自定义检测,可按自定义间隔采集数据,包含 Server、Proxy、Agent 三种角色。
  2. 灵活告警:通过 “触发器(trigger)” 定义阈值,支持告警升级、多渠道通知(邮件、短信等),可结合宏变量自定义告警信息,甚至通过远程命令实现自动化修复。
  3. 可视化与报告:内置实时绘图、网络拓扑图、自定义面板,支持生成监控报告,助力数据可视化分析。
  4. 历史数据管理:数据存储于数据库,支持配置保留周期,内置自动清理机制。
  5. 自动化能力:支持网络设备自动发现、Agent 自动注册、模板继承(减少重复配置)。
  6. 高扩展性:通过 API 支持第三方集成,Agent 轻量可扩展,支持大规模分布式部署(Proxy 架构)。

2.3 Zabbix 角色与架构

Zabbix 采用分布式架构,核心角色包括:

  • Zabbix Server:核心组件,负责接收、存储、分析数据,触发告警。
  • Zabbix Proxy:代理节点,用于大规模场景,分摊 Server 压力,支持跨网络监控。
  • Zabbix Agent:部署在被监控节点,负责采集本地数据(主动 / 被动模式)。
  • Zabbix Web:基于 PHP 的 Web 界面,用于配置、管理和查看监控数据。

架构示意图如下:

Client(Agent)<--> Proxy <--> Server(数据存储/分析/告警)<--> Web界面

三、Zabbix 部署案例

3.1 资源清单

本次部署采用 4 台 openEuler 24.03 主机,配置如下:

操作系统

配置

主机名

IP 地址

角色

openEuler 24.03

2C4G

zabbix

192.168.207.137

Zabbix Server

openEuler 24.03

2C4G

proxy

192.168.207.138

Zabbix Proxy

openEuler 24.03

2C4G

server01

192.168.207.139

被监控节点

openEuler 24.03

2C4G

server02

192.168.207.140

被监控节点

3.2 基础环境配置

所有节点需完成以下预处理(以 root 用户操作):

(1)关闭防火墙

防火墙可能拦截 Zabbix 通信,需关闭并禁用自启动:

systemctl stop firewalld  # 临时关闭防火墙
systemctl disable firewalld  # 永久禁用防火墙(生产环境可按需配置规则)
(2)关闭 SELinux

SELinux 可能限制进程权限,临时关闭并永久禁用:

setenforce 0  # 临时关闭(立即生效)
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config  # 永久禁用(需重启)
(3)时间同步

确保所有节点时间一致(避免日志与监控数据时间错乱):

timedatectl set-timezone Asia/Shanghai  # 设置时区为上海
chronyc sources -v  # 同步时间(需安装chrony:dnf install -y chrony)
(4)修改主机名

按资源清单设置主机名,便于识别角色:

# 在zabbix节点执行
hostnamectl set-hostname zabbix
# 在proxy节点执行
hostnamectl set-hostname proxy
# 在server01节点执行
hostnamectl set-hostname server01
# 在server02节点执行
hostnamectl set-hostname server02

3.3 部署 Zabbix Server

Zabbix Server 是核心节点,负责数据存储与分析,需关联数据库(本次用 MySQL)。

(1)添加 Zabbix 源

Zabbix 官方源提供稳定版本,适用于 RHEL 系系统(openEuler 兼容):

rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/9/x86_64/zabbix-release-latest-6.4.el9.noarch.rpm
dnf clean all  # 清理缓存,确保源生效
(2)安装依赖软件

需安装 Zabbix Server、Web 组件、MySQL 及 SNMP 库:

# 安装Zabbix Server核心组件
dnf -y install zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent
# 安装MySQL数据库(Zabbix 6.4要求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
(3)配置 MySQL 数据库

Zabbix 需数据库存储监控数据,需创建库、用户并授权:

  1. 启动 MySQL 并设置开机自启:
systemctl enable mysqld --now  # --now表示立即启动
  1. 登录 MySQL 并配置(默认无密码,首次登录直接回车):
mysql -uroot
  1. 执行 SQL 语句(设置 root 密码、创建 Zabbix 库和用户):
-- 设置root本地登录密码(示例为123456,生产环境需复杂密码)
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
FLUSH PRIVILEGES;  # 刷新权限

-- 创建Zabbix主数据库(utf8mb4支持中文)
create database zabbix character set utf8mb4 collate utf8mb4_bin;
-- 创建Zabbix用户(本地访问)
create user zabbix@localhost identified by 'zabbix';
grant all privileges on zabbix.* to zabbix@localhost;

-- 创建Proxy数据库(若需部署Proxy)
create database zabbix_proxy character set utf8mb4 collate utf8mb4_bin;
-- 允许Zabbix用户远程访问Proxy库(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@'%';

-- 允许创建存储函数(导入数据时需要)
set global log_bin_trust_function_creators=1;
quit;  # 退出MySQL
(4)导入 Zabbix 初始数据

Zabbix 提供预设 SQL 脚本,需导入主数据库:

# 导入Server初始数据(输入密码zabbix)
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix

# 导入完成后关闭存储函数创建权限(安全加固)
mysql -uroot -p  # 输入root密码123456
set global log_bin_trust_function_creators=0;
quit;
(5)配置 Zabbix Server

修改配置文件,关联数据库密码:

vim /etc/zabbix/zabbix_server.conf
# 找到129行左右,取消注释并设置数据库密码
DBPassword=zabbix  # 与之前创建的zabbix用户密码一致
(6)配置 Nginx(Web 服务)

Zabbix Web 通过 Nginx 提供访问,需设置监听端口:

vim /etc/nginx/conf.d/zabbix.conf
# 找到并修改监听端口(避免与其他服务冲突,示例用8080)
listen 8080;
server_name _;  # 保持默认
(7)启动服务并设置自启
# 重启相关服务
systemctl restart zabbix-server zabbix-agent nginx php-fpm
# 设置开机自启
systemctl enable zabbix-server zabbix-agent nginx php-fpm

3.4 Zabbix Web 界面配置

通过 Web 界面完成 Zabbix 初始化,步骤如下:

(1)访问登录页面

在浏览器输入 Server 节点 IP + 端口:​​http://192.168.207.137:8080/​

(2)语言与许可协议

选择 “中文”(支持多语言),同意 GPLv2 许可协议,点击 “下一步”。

(3)环境检查

系统会自动检测依赖(如 PHP 版本、数据库驱动等),全部通过后点击 “下一步”。

(4)配置数据库连接
  • 数据库类型:MySQL
  • 服务器:localhost(数据库与 Server 同机)
  • 端口:3306(MySQL 默认)
  • 数据库名:zabbix
  • 用户名:zabbix
  • 密码:zabbix(与之前配置一致)
    点击 “下一步”。
(5)设置 Server 名称与时区
  • Zabbix 主机名称:保持默认(或自定义)
  • 时区:选择 “Asia/Shanghai”(上海时区)
    点击 “下一步”。
(6)完成安装

确认配置无误后,点击 “下一步”,提示 “Zabbix 前端已配置好” 即完成。

(7)登录验证

默认账号:​​Admin​​​,默认密码:​​zabbix​​(首次登录建议修改密码)。

3.5 部署 Zabbix Proxy(分布式监控)

Proxy 用于分担 Server 压力,适合大规模监控场景,部署步骤如下:

(1)添加 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
(2)安装 Proxy 组件
dnf -y install zabbix-proxy-mysql zabbix-sql-scripts zabbix-selinux-policy mysql
# 安装SNMP依赖(同Server)
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
(3)导入 Proxy 初始数据

Proxy 数据需存储在之前创建的​​zabbix_proxy​​库(在 Proxy 节点执行):

# 输入zabbix用户密码(zabbix)
zcat /usr/share/zabbix-sql-scripts/mysql/proxy.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix_proxy -h 192.168.207.137
(4)配置 Proxy
vim /etc/zabbix/zabbix_proxy.conf
# 修改以下参数:
Server=192.168.207.137  # 指向Zabbix Server的IP
Hostname=Zabbix proxy  # 与Web添加时的名称一致
DBHost=192.168.207.137  # 数据库主机(Server节点IP)
DBPassword=zabbix  # 数据库密码
(5)启动 Proxy 并设置自启
systemctl start zabbix-proxy
systemctl enable zabbix-proxy
(6)Web 界面添加 Proxy
  • 登录 Zabbix Web,进入 “管理”→“Agent 代理程序”→“创建代理”
  • 代理名称:与​​zabbix_proxy.conf​​​中​​Hostname​​一致(Zabbix proxy)
  • 代理类型:主动式(Proxy 主动向 Server 汇报)
  • 点击 “添加”。

3.6 部署 Zabbix Agent(被监控节点)

在被监控节点(server01、server02)部署 Agent,步骤如下:

(1)添加 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
(2)安装 Agent
dnf -y install zabbix-agent
(3)配置 Agent
vim /etc/zabbix/zabbix_agentd.conf
# 修改以下参数:
Server=192.168.207.137  # 被动模式:允许哪个节点采集数据(Server或Proxy)
ServerActive=192.168.207.137  # 主动模式:向哪个节点上报数据(与Server一致)
Hostname=server01  # 与Web添加的主机名一致(server01节点用此名,server02改为server02)
(4)启动 Agent 并设置自启
systemctl start zabbix-agent
systemctl enable zabbix-agent
(5)Web 界面添加主机
  • 进入 “数据采集”→“主机”→“创建主机”
  • 主机名称:与 Agent 配置的​​Hostname​​一致(如 server01)
  • 主机群组:选择或创建(如 “Linux 服务器”)
  • 接口:添加 “Agent”,IP 地址填写被监控节点 IP(192.168.207.139)
  • 模板:链接 “Template OS Linux by Zabbix agent”(系统自带模板)
  • (若通过 Proxy 监控)在 “由代理程序监测” 中选择之前创建的 Proxy
  • 点击 “添加”。

四、常见问题:解决 Zabbix 字体显示乱码

默认情况下,Zabbix 图表可能因缺少中文字体导致乱码,解决方法如下:

  1. 查找字体配置
# 查找字体路径定义
grep "ZBX_FONTPATH" /usr/share/zabbix/include/defines.inc.php
# 输出:define('ZBX_FONTPATH', realpath('assets/fonts'));

# 查找默认字体名称
grep "ZBX_GRAPH_FONT_NAME" /usr/share/zabbix/include/defines.inc.php
# 输出:define('ZBX_GRAPH_FONT_NAME', 'graphfont');
  1. 替换字体文件
  • 上传中文字体文件(如微软雅黑​​msyh.ttc​​​)到​​/usr/share/zabbix/assets/fonts/​
  • 创建软链接替换默认字体:
cd /usr/share/zabbix/assets/fonts
ln -snf msyh.ttc graphfont.ttf  # 让系统识别为默认字体
  1. 刷新页面:字体生效,中文正常显示。

总结

Zabbix 作为企业级监控方案,凭借灵活的架构、丰富的功能和开源免费的优势,被广泛应用于各行业。本文从原理到实战,详细讲解了 Zabbix 的部署流程,涵盖 Server、Proxy、Agent 全组件。实际生产中,还可结合模板自定义、自动发现、告警升级等功能,进一步提升监控效率。

监控系统的核心价值不仅在于 “发现问题”,更在于 “预防问题”。通过 Zabbix 构建全链路监控体系,可为业务稳定运行提供坚实保障。


网站公告

今日签到

点亮在社区的每一天
去签到