当前位置: 首页 > news >正文

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 ServeropenEuler 24.032C4G192.168.207.137zabbix
Zabbix ProxyopenEuler 24.032C4G192.168.207.138proxy
被监控节点 1openEuler 24.032C4G192.168.207.139server01
被监控节点 2openEuler 24.032C4G192.168.207.140server02

基础环境配置(所有服务器执行)

# 关闭防火墙(生产环境可按需开放端口)
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 界面

  1. 访问 Web 界面:打开浏览器输入 http://192.168.207.137:8080
  2. 语言选择:默认英文,可在页面底部切换为 "Chinese (zh_CN)"
  3. 环境检查:全部显示 "OK" 即可(如有错误,根据提示修复)
  4. 数据库配置
    • 数据库类型:MySQL
    • 服务器:localhost
    • 数据库名:zabbix
    • 用户:zabbix
    • 密码:zabbix(前面设置的)
  5. 完成安装:点击 "下一步" 直至完成,默认登录账号 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
  1. 登录 Zabbix Web → 点击左侧 "管理" → "Agent 代理程序" → "创建代理"
  2. 代理名称:Zabbix proxy(与配置文件一致)
  3. 代理类型:主动式
  4. 点击 "添加",等待几分钟后状态变为 "在线"

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 界面添加被监控主机
  1. 登录 Zabbix Web → 左侧 "数据采集" → "主机" → "创建主机"
  2. 主机名称:server01(与 Agent 配置一致)
  3. 主机群组:点击 "选择" → 选 "Linux servers"
  4. 接口:点击 "添加" → 类型 "Agent",IP 地址 192.168.207.139,端口 10050
  5. 模板:点击 "选择" → 搜索 "Linux by Zabbix agent" → 添加
  6. 点击 "添加",几分钟后 "可用性" 变为绿色(表示监控正常)

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 模板)
http://www.lryc.cn/news/595147.html

相关文章:

  • C++学习<2>--引用、函数、内存分区
  • 【2025】Vscode Python venv虚拟环境显示“激活终端”成功但是在终端中“并没有激活成功”,pip安装还是会安装到全局环境中的解决方法;
  • 第十八节:第七部分:java高级:注解的应用场景:模拟junit框架
  • nextjs+react接口会请求两次?
  • 元宇宙与DAO自治:去中心化治理的数字文明实践
  • 【设计模式C#】简单工厂模式(用于简化获取对象实例化的复杂性)
  • 实时数据可视化的“心跳”设计:毫秒级延迟下的动态图表抗闪烁优化方案
  • 时空数据可视化新范式:基于Three.js的生产全流程时间轴回溯技术解析
  • 基于爬虫技术的电影数据可视化系统 Python+Django+Vue.js
  • 基于VSCode的nRF52840开发环境搭建
  • 机器学习中核心评估指标(准确率、精确率、召回率、F1分数)
  • 动态数据源切换
  • Android Jetpack系列组件之:LiveData(保姆级教程)
  • 动静态库原理与实战详解
  • Ubuntu 22 安装 ZooKeeper 3.9.3 记录
  • 【HarmonyOS】ArkUI - 声明式开发范式
  • 信息整合注意力IIA,通过双方向的轻量级注意力机制强化目标关键特征并抑制噪声,提升特征融合的有效性和空间位置信息的保留能力。
  • I2S音频的时钟
  • C/C++ 详谈结构体大小计算(内存对齐)
  • 移动端轻量级神经网络推理框架
  • 蚂蚁数科AI数据产业基地正式投产,携手苏州推进AI产业落地
  • 解决mac chrome无法打开本地网络中的内网网址的问题
  • ELN和LIMS的区别
  • Django关于ListView通用视图的理解(Cursor解释)
  • Java基础教程(010):面向对象中的this和就近原则
  • 算法训练营DAY37 第九章 动态规划 part05
  • 两个相机的视野 拼接算法
  • 【C++】stack和queue拓展学习
  • DevCon 6记录
  • 从 “能用“ 到 “好用“:中小制造企业数字化转型中的 IT 系统优化管理策略