一、监控系统概述
1. 监控的目的与作用
-
预防故障:通过提前发现异常避免服务中断。
-
性能分析:了解系统瓶颈,优化资源配置。
-
容量规划:根据历史数据预测未来资源需求。
-
故障定位:快速定位问题根因,缩短MTTR。
2. 监控的五个层次
| 层次 | 说明 |
|---|---|
| 基础设施 | 网络设备、交换机、路由器等 |
| 系统层 | CPU、内存、磁盘、网络等 |
| 应用层 | URL访问、SQL性能、缓存命中率等 |
| 业务层 | 用户登录、下单、支付等业务指标 |
| 用户体验 | 客户端性能、错误率、地域分布等 |
⚙️ 二、Zabbix 架构与原理
1. Zabbix 核心组件
| 组件 | 功能 |
|---|---|
| Zabbix Server | 核心服务端,负责数据处理、告警、存储 |
| Zabbix Proxy | 代理节点,分担Server压力,适合跨地域监控 |
| Zabbix Agent | 部署在被监控端,采集数据 |
| Zabbix Web | 提供图形化界面管理 |
| Database | 支持MySQL、PostgreSQL、Oracle等 |
2. 工作模式
-
被动模式:Server 主动向 Agent 请求数据,适合小规模环境。
-
主动模式:Agent 主动上报数据到 Server,适合大规模环境。
💡 补充知识点:主动模式下,Agent 会定期向 Server 发送数据,减少Server负担,建议在大规模分布式环境中使用。
3. 数据采集协议
-
SNMP:网络设备监控
-
IPMI:硬件健康监控
-
JMX:Java 应用监控
-
Zabbix Agent:自定义监控项
三、部署环境准备(含所有代码)
资源清单
| 主机名 | IP | 角色 |
|---|---|---|
| zabbix | 192.168.10.107 | Zabbix Server |
| proxy | 192.168.10.106 | Zabbix Proxy |
| server01 | 192.168.10.104 | 被监控节点 |
| server02 | 192.168.10.105 | 被监控节点 |
基础环境配置(所有节点执行)
bash
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
# 关闭 SELinux
setenforce 0
sed -i 's/SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
# 时间同步
timedatectl set-timezone Asia/Shanghai
chronyc sources -v
# 修改主机名(按角色执行)
hostnamectl set-hostname zabbix # 在 zabbix 节点
hostnamectl set-hostname proxy # 在 proxy 节点
hostnamectl set-hostname server01 # 在 server01 节点
hostnamectl set-hostname server02 # 在 server02 节点
四、Zabbix Server 部署(完整代码)
1. 添加 Zabbix 源
bash
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. 安装软件包
bash
dnf -y install zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent mysql-server
3. 配置数据库
bash
systemctl enable mysqld --now
mysql -uroot
sql
FLUSH PRIVILEGES;
create database zabbix character set utf8mb4 collate utf8mb4_bin;
create user zabbix@localhost identified by 'zabbix';
grant all privileges on zabbix.* to zabbix@localhost;
set global log_bin_trust_function_creators = 1;
quit;
4. 导入数据
bash
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix
sql
mysql -uroot -p
set global log_bin_trust_function_creators = 0;
quit;
5. 修改 Zabbix Server 配置
bash
vim /etc/zabbix/zabbix_server.conf
# 修改以下内容
DBPassword=zabbix
6. 修改 Nginx 配置
bash
vim /etc/nginx/conf.d/zabbix.conf
# 取消注释
listen 8080;
server_name;
7. 启动服务
bash
systemctl restart zabbix-server zabbix-agent nginx php-fpm
systemctl enable zabbix-server zabbix-agent nginx php-fpm
五、Zabbix Web 初始化
访问:http://192.168.10.107:8080/
-
默认账号:
Admin -
默认密码:
zabbix
💡 补充知识点:建议首次登录后修改密码,并配置邮件告警。
六、Zabbix Proxy 部署(完整代码)
1. 安装 Proxy 软件包
bash
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 zabbix-selinux-policy mysql
2. 导入 Proxy 数据
bash
# 在 Zabbix Server 节点执行
mysql -uroot -p
set global log_bin_trust_function_creators = 1;
quit;
# 在 Proxy 节点执行
cat /usr/share/zabbix-sql-scripts/mysql/proxy.sql | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix_proxy -h 192.168.10.107
# 在 Server 节点执行
mysql -uroot -p
set global log_bin_trust_function_creators = 0;
quit;
3. 配置 Zabbix Proxy
bash
vim /etc/zabbix/zabbix_proxy.conf
ini
Server=192.168.10.107
Hostname=Zabbix proxy
DBHost=192.168.10.107
DBPassword=zabbix
4. 启动 Proxy
bash
systemctl start zabbix-proxy
systemctl enable zabbix-proxy
5. 在 Web 页面添加 Proxy
路径:管理 → Proxy → 创建代理 → 选择"主动式"
七、Zabbix Agent 部署(完整代码)
1. 安装 Agent
bash
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
bash
vim /etc/zabbix/zabbix_agentd.conf
ini
Server=192.168.10.107
ServerActive=192.168.10.107
Hostname=server01
3. 启动 Agent
bash
systemctl start zabbix-agent
systemctl enable zabbix-agent
八、添加主机(Web 界面)
路径:数据采集 → 主机 → 创建主机
-
主机名称:与
Hostname一致 -
模板:选择
Linux by Zabbix agent -
群组:可新建或选择已有
-
接口:IP 填写被监控节点 IP
💡 补充知识点:如果是通过 Proxy 上报,需在"由代理程序监测"中选择创建的 Proxy。
九、扩展:解决字体乱码问题
1. 查找字体定义文件
bash
grep "ZBX_FONTPATH" /usr/share/zabbix/include/defines.inc.php
grep "ZBX_GRAPH_FONT_NAME" /usr/share/zabbix/include/defines.inc.php
2. 替换字体
bash
cd /usr/share/zabbix/assets/fonts
ln -snf msyh1.ttc graphfont.ttf
💡 补充知识点 :
msyh1.ttc是微软雅黑字体,需提前上传到服务器。软链接方式保留原文件,便于回滚。
十、补充知识点大全(不雷同)
1. Zabbix 优势 vs 其他监控系统
| 工具 | 优势 | 不足 |
|---|---|---|
| Zabbix | 功能全面,支持分布式 | 配置稍复杂 |
| Prometheus | 云原生友好,Pull模型 | 长期存储弱 |
| Nagios | 轻量、插件丰富 | 界面简陋 |
| Cacti | 图形强大 | 只适合网络流量 |
2. Zabbix 性能优化建议
-
使用主动模式 + Proxy 分担压力
-
数据库使用 SSD,定期清理历史数据
-
合理设置监控项间隔(不建议每1秒采集)
3. 常见故障排查思路
-
Agent 无法连接:检查防火墙、SELinux、
ServerActive配置 -
图形乱码:字体文件缺失
-
数据不显示:检查
Hostname是否一致
4. 安全建议
-
使用 Zabbix API 进行自动化管理
-
配置 SSL 加密 Web 访问
-
限制 Web 登录 IP 白名单
✅ 结语
Zabbix 是企业级监控的不二之选,掌握其部署与架构设计,是运维工程师的必备技能。本文从监控理论到实操部署,涵盖了 Zabbix Server、Proxy、Agent、Web 初始化、字体修复等全流程,并提供大量补充知识点,助你写出高质量博客文章。
📌 如果你觉得本文对你有帮助,欢迎收藏、转发、点赞!