Zabbix 6.0 LTS 从零部署、日常运维与排错全指南
标签:#Zabbix #监控运维 #告警 #自动化运维 简介:Zabbix 是业界最主流开源监控平台,支持主机、网络设备、数据库、中间件、自定义脚本、SNMP、IPMI 等采集,自带告警、图形、自动发现、分布式 Proxy。本文基于长期生产实践,覆盖完整安装部署、日常运维规范、高频故障排错,适合内网服务器、IDC、企业网络落地。
版本说明:本文选用 Zabbix 6.0 LTS(长期支持版),稳定、BUG 少,适合生产环境;操作系统:Ubuntu 22.04 + MySQL8.0 + Nginx + PHP。
一、Zabbix 基础概念
-
Zabbix Server:核心服务,负责拉取数据、计算触发器、生成告警、写入数据库,端口 10051
-
Zabbix Agent:被监控端采集程序,分被动模式 / 主动模式 ,端口10050
-
被动:Server 连 Agent 10050 拉取数据,适合服务器可直连场景
-
主动:Agent 主动连 Server 10051 上报数据,适合 NAT、跨网、大量节点,减轻 server 压力
-
Zabbix Proxy:分布式代理,跨机房、跨网段场景分担采集压力
-
Web UI:PHP 前端,配置管理、看图、告警查看
-
Database:MySQL / PostgreSQL,存储所有配置、历史指标、事件告警(Zabbix 性能瓶颈大多在数据库)
二、安装部署(Ubuntu 22.04 + MySQL8.0 + Nginx)
2.1 前置准备
服务器建议配置(参考)
- 小规模(<100 台):4C 8G,SSD 优先
- 中规模(100~500 台):8C 16G,独立 SSD 给 MySQL
必须关闭 swap 或者调低 swapiness,数据库对 swap 非常敏感
2.2 添加官方源
wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.0-4+ubuntu22.04_all.deb
dpkg -i zabbix-release_6.0-4+ubuntu22.04_all.deb
apt update
2.3 安装组件
apt install -y zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-sql-scripts zabbix-agent
2.4 初始化 MySQL 数据库
登录 mysql
CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER zabbix@localhost IDENTIFIED BY 'Zabbix@Passw0rd';
GRANT ALL PRIVILEGES ON zabbix.* TO zabbix@localhost;
SET GLOBAL log_bin_trust_function_creators = 1;
FLUSH PRIVILEGES;
导入初始 schema
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql -uzabbix -p zabbix
2.5 修改 zabbix-server 配置
vim /etc/zabbix/zabbix_server.conf
关键参数:
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=Zabbix@Passw0rd
# 调优参数,根据机器配置修改
StartPollers=10
StartPollersUnreachable=5
StartTrappers=5
StartPingers=5
StartDiscoverers=2
CacheSize=512M
HistoryCacheSize=256M
TrendCacheSize=128M
ValueCacheSize=256M
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=100
2.6 Nginx + PHP 前端配置
官方包自带 nginx 配置:/etc/nginx/conf.d/zabbix.conf 修改监听、域名,PHP 时区必须改成 Asia/Shanghai
vim /etc/php/8.1/fpm/php.ini
date.timezone = Asia/Shanghai
memory_limit = 256M
post_max_size = 32M
max_execution_time = 300
2.7 启动服务并开机自启
systemctl restart zabbix-server zabbix-agent nginx php8.1-fpm
systemctl enable zabbix-server zabbix-agent nginx php8.1-fpm
2.8 Web 初始化向导
浏览器访问 http://服务器IP:8080(默认端口 8080,可自行修改 nginx)
- 检查 PHP 依赖全部 OK
- 填写数据库信息(zabbix 库、账号密码)
- Zabbix server 地址默认
localhost,端口 10051 - 设置管理员账号密码,完成安装
默认管理员账号:
Admin密码:zabbix,上线第一件事修改密码
2.9 客户端 Agent 安装(被监控 Linux 主机)
apt install zabbix-agent
vim /etc/zabbix/zabbix_agentd.conf
Server=ZABBIX_SERVER_IP # 被动模式,允许server来拉取
ServerActive=ZABBIX_SERVER_IP # 主动模式,agent上报
Hostname=web01 # 主机名,必须和Web界面主机名称完全一致
放行防火墙:10050/tcp
systemctl restart zabbix-agent
systemctl enable zabbix-agent
三、日常运维规范(生产必看)
3.1 常用运维命令
# 查看服务状态
systemctl status zabbix-server
systemctl status zabbix-agent
# 实时日志(排错第一优先)
tail -f /var/log/zabbix/zabbix_server.log
tail -f /var/log/zabbix/zabbix_agentd.log
# 测试agent本地采集(在被监控机执行)
zabbix_get -s 127.0.0.1 -p 10050 -k system.cpu.load[percpu,avg1]
3.2 数据库备份策略(重中之重)
Zabbix 所有配置、历史数据都在 MySQL,定时全量备份 示例脚本:
mysqldump -uzabbix -p zabbix --single-transaction --quick --lock-tables=false > /data/backup/zabbix_$(date +%F).sql
- 小规模:每日全量备份,保留 7 天
- 大规模:全量 + binlog 增量,或者使用 xtrabackup
- 升级前、大变更前必须先备份数据库
3.3 历史数据清理与 Housekeeping
Zabbix 最容易踩坑:history、history_str、trends 表持续膨胀,数据库越来越慢。 Web 界面:【管理】→【维护】
- 历史数据:默认 90 天,业务不需要可以缩短到 7~30 天
- 趋势数据:可以保留 365 天(聚合数据,体积小)
高级优化方案:MySQL 分区表 / 迁移 PostgreSQL+TimescaleDB 时序压缩,替代原生 housekeeping(delete 删除极慢)
3.4 告警治理(降噪)
很多 Zabbix 上线后告警轰炸,核心原则:
- 触发器必须设置合理阈值、故障持续时间(不要瞬时告警)
- 配置告警收敛、告警升级、故障确认
- 无用触发器直接关闭,区分【P0 紧急、P1 重要、P2 提示】
- 告警渠道:钉钉 / 企业微信 / 邮件,不要所有告警都发手机
3.5 权限与安全加固
- 修改 Admin 默认密码,新建普通运维账号,最小权限
- Web 前端不要直接暴露公网,Nginx 增加 IP 白名单、Basic Auth、HTTPS
- zabbix 数据库账号只允许本地 / 指定 IP 访问,禁止远程通配符
- Agent 不要开启不安全参数,禁止自定义命令高危权限
- 定期升级 Zabbix 补丁,修复安全漏洞
3.6 版本升级注意事项
Zabbix 跨版本升级只能顺序升级,LTS 版本优先:
- 步骤:停止 zabbix-server → 数据库全量备份 → 更新包 → 启动服务,自动升级表结构
- 升级期间不要操作 Web,等待数据库迁移完成,日志无报错再使用
四、高频排错指南(按故障场景分类)
排错通用顺序:先看日志 → 网络连通性 → 端口 → 配置一致性 → 权限 → 数据库
故障 1:Web 页面提示:Zabbix server is not running
现象:页面顶部红色提示,但是 systemctl 看服务是 running 排查:
- 检查
zabbix_server.conf日志,大概率数据库连接失败、密码错误、数据库没起来 - 检查 10051 端口是否监听:
ss -tlnp | grep 10051 - 检查 web 配置文件
/etc/zabbix/web/zabbix.conf.php里的 server 地址是否正确 - MySQL 8.0 权限、密码加密方式问题,旧密码插件不兼容
故障 2:主机状态灰色,监控无数据(最常见)
分被动模式和主动模式分开排查: ✅ 被动模式(server 连 agent 10050)
- Server 上测试连通:
telnet 主机IP 10050或者nc -zv IP 10050 - 被监控机防火墙 / 安全组放行 10050
- agent 配置里
Server=填写的 IP,是否包含 zabbix server 地址 - 使用
zabbix_get在 server 上测试 key,看是否返回数据
✅ 主动模式(agent 上报 10051)
- agent 日志:
tail -f /var/log/zabbix/zabbix_agentd.log,看是否连接 server 10051 成功 - agent 配置
ServerActive=正确,防火墙放行 agent 出站到 10051 - Hostname 严格匹配:agent 内 Hostname 和 Web 页面主机名称一字不差(大小写敏感)
- 主机模板是否添加、监控项类型是不是【Zabbix agent 主动】
故障 3:图形中文乱码,方框□□□
原因:缺少中文字体 解决:
# Ubuntu
apt install fonts-wqy-microhei
# 复制字体到zabbix字体目录,修改默认字体
cp /usr/share/fonts/truetype/wqy/wqy-microhei.ttc /usr/share/zabbix/assets/fonts/
修改 /usr/share/zabbix/include/defines.inc.php 里字体名称,也可以直接上传 Windows 微软雅黑字体到 fonts 目录
故障 4:数据库慢、页面卡顿、加载超时
- 优先看 history 大表,维护周期太长,数据堆积
- MySQL 优化:调整 innodb_buffer_pool_size(物理内存 50%~70%),关闭不需要的查询日志
- 检查 housekeeping 进程卡死,大量 delete 阻塞
- 大规模集群:上 Proxy 分流采集压力、数据库分区、迁移 TimescaleDB
故障 5:SNMP 设备采集不到数据(交换机、防火墙)
- 连通性:UDP 161 端口,很多防火墙默认拦截 UDP
- SNMP v2c:community 团体字一致;v3:账号、认证加密算法、密码严格一致
- OID 是否正确,部分厂商私有 OID 不兼容通用模板
- 调大
StartSNMPPollers并发采集进程
故障 6:触发器不触发,明明指标已经超过阈值
- 监控项本身没有正常采集,无最新数据
- 触发器表达式写错、单位不匹配(字节 vs 兆)
- 触发器设置了【持续多久】,没有达到时间条件不会告警
- 主机 / 监控项被禁用、模板没有关联成功
故障 7:zabbix-server 启动失败,直接 crash
- 查看日志第一行报错:
- 数据库密码错误、库不存在:DB connect failed
- 配置文件语法错误:读取配置失败
- 共享内存信号量问题:
cannot create semaphore set,修改 systemd RemoveIPC 参数 - 磁盘满了:/var/log 或者数据库分区 100%,直接无法启动
故障 8:告警收不到(钉钉 / 企业微信脚本不推送)
- 脚本权限:zabbix 用户是否有执行权限,脚本路径在配置里正确填写
- zabbix 用户是否可以外网连通 webhook 地址(代理、白名单)
- 脚本内日志输出,在动作里看【通知日志】,查看返回码
- 动作条件、用户媒介、告警时间段配置错误
故障 9:时间不同步,监控时序错乱
Zabbix 极度依赖时间同步,所有 Server、Proxy、Agent 必须统一 NTP 时间
apt install chrony
systemctl enable --now chronyd
时间差超过 30s 很容易出现数据丢包、图形错位、主动模式异常
五、进阶扩展方向
- Zabbix Proxy 分布式部署,跨机房、跨专线隔离采集
- 自动发现 + 自动注册,批量上线主机
- 自定义模板、自定义脚本、监控硬件、日志监控(logrt)
- Grafana 对接 Zabbix 数据源,做大屏展示
- 结合 Ansible 批量推送 Agent、自动添加主机
- 监控 Zabbix 自身:监控 zabbix 进程、队列、数据库慢查询,防止监控平台失明
六、总结
Zabbix 功能强大,但瓶颈往往在数据库、时间同步、网络策略、告警治理。小规模直接单机部署;超过 200 台设备建议引入 Proxy 分担采集压力;长期保存指标一定要提前规划时序存储方案,不要等数据库爆掉再处理。
上线三件套:定时数据库备份、NTP 时间同步、先收敛告警,这三点做好,Zabbix 稳定性提升一大截。