目录
一、监控系统基础认知
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. 解决中文乱码问题
四、总结
简单说,监控就是 IT 系统的 "体温计" 和 "预警机":
监控层次 | 监控对象 | 核心指标示例 |
---|---|---|
基础设施监控 | 网络设备(交换机、路由器) | 带宽使用率、丢包率、连接数 |
系统层监控 | 服务器(物理机 / 虚拟机 / 操作系统) | CPU 使用率、内存占用、磁盘 IO |
应用层监控 | 服务(Nginx、MySQL、Java 应用) | 接口响应时间、慢查询数、错误率 |
业务监控 | 业务流程(登录、下单、支付) | 下单成功率、支付转化率 |
端用户体验监控 | 用户端(浏览器、APP) | 页面加载时间、地区访问延迟 |
任何监控系统都离不开这 3 个核心模块:
采集模式:
Zabbix 是一款企业级分布式开源监控系统,能监控从服务器、网络设备到应用程序的几乎所有 IT 资源。它支持自定义监控指标、灵活的告警配置,且完全免费(基于 GPL 协议)。
工作流程:Agent 采集数据 → 发送给 Server/Proxy → Server 存储并分析 → 超标时触发告警
角色 | 操作系统 | 配置 | 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 主机名
# 安装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
解析:
# 启动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 初始化脚本包含存储函数# 导入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;"
解析:
# 编辑配置文件,设置数据库密码
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
# 启动所有相关服务
systemctl restart zabbix-server zabbix-agent nginx php-fpm
# 设置开机自启
systemctl enable zabbix-server zabbix-agent nginx php-fpm
http://192.168.207.137:8080
Admin
,密码 zabbix
Proxy 用于分担 Server 压力,适合监控大量节点或跨机房场景。
# 在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
# 在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;"
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
Zabbix proxy
(与配置文件一致)以 server01(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
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
server01
(与 Agent 配置一致)192.168.207.139
,端口 10050
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 监控系统: