Zabbix 企业级分布式监控部署
目录
一、监控系统基础认知
1. 为什么需要监控?
2. 监控的 5 个层次(从底层到上层)
3. 监控系统的基本原理
二、Zabbix 系统详解
1. Zabbix 是什么?
2. Zabbix 核心功能
3. Zabbix 核心组件
三、Zabbix 部署实战(分布式架构)
1. 环境准备(4 台服务器)
2. 部署 Zabbix Server(核心步骤)
步骤 1:添加 Zabbix 源并安装依赖
步骤 2:配置数据库
步骤 3:导入 Zabbix 初始数据
步骤 4:配置 Zabbix Server
步骤 5:启动服务
3. 配置 Zabbix Web 界面
4. 部署 Zabbix Proxy(分布式监控必备)
步骤 1:安装 Proxy
步骤 2:配置数据库(使用 Server 的数据库)
步骤 3:配置 Proxy
步骤 4:Web 界面添加 Proxy
5. 部署 Zabbix Agent(被监控节点)
步骤 1:安装 Agent
步骤 2:配置 Agent(直接连接 Server)
步骤 3:Web 界面添加被监控主机
6. 解决中文乱码问题
四、总结
一、监控系统基础认知
1. 为什么需要监控?
简单说,监控就是 IT 系统的 "体温计" 和 "预警机":
- 实时检测硬件、软件的运行状态(比如服务器 CPU 过高、数据库连接异常)
- 提前发现潜在问题,避免业务中断(比如磁盘满了自动告警)
- 为故障排查提供数据支持(比如根据监控曲线定位卡顿时间点)
2. 监控的 5 个层次(从底层到上层)
监控层次 | 监控对象 | 核心指标示例 |
---|---|---|
基础设施监控 | 网络设备(交换机、路由器) | 带宽使用率、丢包率、连接数 |
系统层监控 | 服务器(物理机 / 虚拟机 / 操作系统) | CPU 使用率、内存占用、磁盘 IO |
应用层监控 | 服务(Nginx、MySQL、Java 应用) | 接口响应时间、慢查询数、错误率 |
业务监控 | 业务流程(登录、下单、支付) | 下单成功率、支付转化率 |
端用户体验监控 | 用户端(浏览器、APP) | 页面加载时间、地区访问延迟 |
3. 监控系统的基本原理
任何监控系统都离不开这 3 个核心模块:
- 数据采集:通过客户端(Agent)或通用协议(SNMP、SSH)收集数据
- 数据处理:存储(数据库)、分析(判断是否异常)、告警(邮件 / 短信)
- 数据展示:通过 Web 界面展示监控图表、拓扑图等
采集模式:
- 被动模式:服务器主动去客户端拉取数据(适合小规模监控)
- 主动模式:客户端主动把数据推送给服务器(适合大规模监控)
二、Zabbix 系统详解
1. Zabbix 是什么?
Zabbix 是一款企业级分布式开源监控系统,能监控从服务器、网络设备到应用程序的几乎所有 IT 资源。它支持自定义监控指标、灵活的告警配置,且完全免费(基于 GPL 协议)。
2. Zabbix 核心功能
- 全场景数据采集:支持 SNMP、IPMI、JMX 等协议,也能自定义脚本采集
- 智能告警:可设置阈值(触发器),超标时通过邮件、短信等方式通知
- 可视化展示:自动生成趋势图、网络拓扑图、自定义仪表盘
- 分布式架构:通过 Proxy 组件实现跨机房、大规模监控(支持上万节点)
3. Zabbix 核心组件
- Zabbix Server:监控核心,负责接收数据、处理告警、存储数据
- Zabbix Agent:安装在被监控设备上,负责采集本地数据(CPU、内存等)
- Zabbix Proxy:代理服务器,分担 Server 压力,适合跨网络监控
- Zabbix Web:Web 管理界面,用于配置监控和查看图表(PHP 开发)
- 数据库:存储监控数据(支持 MySQL、PostgreSQL 等)
工作流程:Agent 采集数据 → 发送给 Server/Proxy → Server 存储并分析 → 超标时触发告警
三、Zabbix 部署实战(分布式架构)
1. 环境准备(4 台服务器)
角色 | 操作系统 | 配置 | IP 地址 | 主机名 |
---|---|---|---|---|
Zabbix Server | openEuler 24.03 | 2C4G | 192.168.207.137 | zabbix |
Zabbix Proxy | openEuler 24.03 | 2C4G | 192.168.207.138 | proxy |
被监控节点 1 | openEuler 24.03 | 2C4G | 192.168.207.139 | server01 |
被监控节点 2 | openEuler 24.03 | 2C4G | 192.168.207.140 | server02 |
基础环境配置(所有服务器执行):
# 关闭防火墙(生产环境可按需开放端口)
systemctl stop firewalld
systemctl disable firewalld# 关闭SELinux(避免权限问题)
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config# 时间同步(确保所有服务器时间一致)
timedatectl set-timezone Asia/Shanghai
yum -y install chrony
systemctl enable --now chronyd
chronyc sources -v # 验证时间同步# 设置主机名(按上面的表修改)
hostnamectl set-hostname 主机名
2. 部署 Zabbix Server(核心步骤)
步骤 1:添加 Zabbix 源并安装依赖
# 安装Zabbix官方源(6.4版本)
rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/9/x86_64/zabbix-release-latest-6.4.el9.noarch.rpm
dnf clean all # 清理缓存# 安装Server组件(含MySQL支持、Web界面、Agent)
dnf -y install zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf zabbix-sql-scripts zabbix-agent# 安装MySQL数据库(Zabbix需要存储数据)
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
解析:
- Zabbix 源提供了官方编译的软件包,避免手动编译的麻烦
- 必须安装与 Zabbix 版本兼容的数据库(MySQL 8.0.30 + 或 MariaDB 10.5+)
步骤 2:配置数据库
# 启动MySQL并设置开机自启
systemctl enable --now mysqld# 登录MySQL(初始无密码,直接回车)
mysql -uroot# 执行SQL命令(复制粘贴整段)
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456'; # 设置root密码
FLUSH PRIVILEGES; # 刷新权限
create database zabbix character set utf8mb4 collate utf8mb4_bin; # 创建Zabbix数据库(支持中文)
create user zabbix@localhost identified by 'zabbix'; # 创建Zabbix用户
grant all privileges on zabbix.* to zabbix@localhost; # 授权
set global log_bin_trust_function_creators=1; # 允许创建函数(Zabbix需要)
quit; # 退出
解析:
utf8mb4
字符集支持 emoji 和特殊符号,避免中文乱码log_bin_trust_function_creators=1
是因为 Zabbix 初始化脚本包含存储函数
步骤 3:导入 Zabbix 初始数据
# 导入Server的SQL脚本(输入密码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;"
解析:
- 初始数据包含 Zabbix 的表结构、默认模板(如 Linux 服务器监控模板)
步骤 4:配置 Zabbix Server
# 编辑配置文件,设置数据库密码
vim /etc/zabbix/zabbix_server.conf
# 找到并修改(约129行)
DBPassword=zabbix # 与前面创建的Zabbix用户密码一致# 配置Nginx(Zabbix Web用Nginx作为Web服务器)
vim /etc/nginx/conf.d/zabbix.conf
# 取消注释并修改(约15行)
listen 8080; # Zabbix Web端口(避免与其他服务冲突)
server_name 192.168.207.137; # 服务器IP
步骤 5:启动服务
# 启动所有相关服务
systemctl restart zabbix-server zabbix-agent nginx php-fpm
# 设置开机自启
systemctl enable zabbix-server zabbix-agent nginx php-fpm
3. 配置 Zabbix Web 界面
- 访问 Web 界面:打开浏览器输入
http://192.168.207.137:8080
- 语言选择:默认英文,可在页面底部切换为 "Chinese (zh_CN)"
- 环境检查:全部显示 "OK" 即可(如有错误,根据提示修复)
- 数据库配置:
- 数据库类型:MySQL
- 服务器:localhost
- 数据库名:zabbix
- 用户:zabbix
- 密码:zabbix(前面设置的)
- 完成安装:点击 "下一步" 直至完成,默认登录账号
Admin
,密码zabbix
4. 部署 Zabbix Proxy(分布式监控必备)
Proxy 用于分担 Server 压力,适合监控大量节点或跨机房场景。
步骤 1:安装 Proxy
# 在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 -y install zabbix-proxy-mysql zabbix-sql-scripts net-snmp-libs
步骤 2:配置数据库(使用 Server 的数据库)
# 在Zabbix Server的数据库中创建Proxy专用库(在zabbix服务器执行)
mysql -uroot -p123456
create database zabbix_proxy character set utf8mb4 collate utf8mb4_bin;
grant all privileges on zabbix_proxy.* to zabbix@'%' identified by 'zabbix'; # 允许远程访问
set global log_bin_trust_function_creators=1;
quit;# 在proxy服务器导入Proxy的初始数据(输入密码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# 在Server上关闭函数权限
mysql -uroot -p123456 -e "set global log_bin_trust_function_creators=0;"
步骤 3:配置 Proxy
vim /etc/zabbix/zabbix_proxy.conf
# 修改以下参数
Server=192.168.207.137 # 指向Zabbix Server的IP
Hostname=Zabbix proxy # Proxy名称(Web界面添加时要一致)
DBHost=192.168.207.137 # 数据库在Server上
DBPassword=zabbix # 数据库密码# 启动Proxy
systemctl start zabbix-proxy
systemctl enable zabbix-proxy
步骤 4:Web 界面添加 Proxy
- 登录 Zabbix Web → 点击左侧 "管理" → "Agent 代理程序" → "创建代理"
- 代理名称:
Zabbix proxy
(与配置文件一致) - 代理类型:主动式
- 点击 "添加",等待几分钟后状态变为 "在线"
5. 部署 Zabbix Agent(被监控节点)
以 server01(192.168.207.139)为例:
步骤 1:安装 Agent
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
步骤 2:配置 Agent(直接连接 Server)
vim /etc/zabbix/zabbix_agentd.conf
# 修改以下参数
Server=192.168.207.137 # Zabbix Server的IP(如果走Proxy,填Proxy的IP)
ServerActive=192.168.207.137 # 主动模式上报地址
Hostname=server01 # 主机名(Web界面添加时要一致)# 启动Agent
systemctl start zabbix-agent
systemctl enable zabbix-agent
步骤 3:Web 界面添加被监控主机
- 登录 Zabbix Web → 左侧 "数据采集" → "主机" → "创建主机"
- 主机名称:
server01
(与 Agent 配置一致) - 主机群组:点击 "选择" → 选 "Linux servers"
- 接口:点击 "添加" → 类型 "Agent",IP 地址
192.168.207.139
,端口10050
- 模板:点击 "选择" → 搜索 "Linux by Zabbix agent" → 添加
- 点击 "添加",几分钟后 "可用性" 变为绿色(表示监控正常)
6. 解决中文乱码问题
Zabbix 默认图表可能显示方块乱码,替换中文字体即可:
# 在Zabbix Server执行
# 1. 上传微软雅黑字体(msyh.ttc)到/usr/share/zabbix/assets/fonts/
# 2. 创建软链接替换默认字体
cd /usr/share/zabbix/assets/fonts
ln -snf msyh.ttc graphfont.ttf # graphfont.ttf是Zabbix默认字体名
刷新 Web 界面,图表中文即可正常显示。
四、总结
通过以上步骤,你已经搭建了一套包含 Server、Proxy、Agent 的分布式 Zabbix 监控系统:
- 基础监控:服务器 CPU、内存、磁盘等指标已自动采集
- 告警配置:可在 "配置"→"触发器" 中自定义告警阈值
- 扩展方向:后续可添加网络设备监控(SNMP)、应用监控(如 Nginx 模板)