Zabbix 企业级分布式监控部署

发布于:2025-07-26 ⋅ 阅读:(18) ⋅ 点赞:(0)

目录

一、监控系统基础认知

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 界面

  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 模板)

网站公告

今日签到

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