Zabbix 企业级监控系统部署与配置实战 一、概述 Zabbix 是一款成熟的企业级开源监控解决方案,支持服务器、网络设备、应用程序的全方位监控。相比 Prometheus,Zabbix 在传统 IT 基础设施监控、自动发现、可视化报表方面具有独特优势。
本文档详细介绍 Zabbix 6.0 LTS 版本的部署、配置及最佳实践。
二、架构设计 2.1 核心组件
组件
说明
Zabbix Server
核心服务,处理监控数据、触发告警
Zabbix Agent
部署在被监控主机,采集本地数据
Zabbix Proxy
分布式监控,减轻 Server 压力
Zabbix Frontend
Web 界面,配置和展示
Database
存储配置和监控数据(MySQL/PostgreSQL)
2.2 推荐架构 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ┌─────────────────┐ │ Zabbix Server │ │ + Frontend │ └────────┬────────┘ │ ┌─────────────────┼─────────────────┐ │ │ │ ┌──────▼──────┐ ┌──────▼──────┐ ┌──────▼──────┐ │ Proxy 1 │ │ Proxy 2 │ │ Server │ │ (机房 A) │ │ (机房 B) │ │ (直连) │ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ │ │ │ ┌──────▼──────┐ ┌──────▼──────┐ ┌──────▼──────┐ │ Agents │ │ Agents │ │ Agents │ │ 50-100 台 │ │ 50-100 台 │ │ <50 台 │ └─────────────┘ └─────────────┘ └─────────────┘
三、环境准备 3.1 系统要求
操作系统 : CentOS 7+/Ubuntu 20.04+/Debian 10+
CPU : 4 核+(每 1000 个监控项)
内存 : 8GB+(每 1000 个监控项)
磁盘 : SSD 推荐,根据数据保留策略规划
3.2 数据库选择
场景
推荐数据库
说明
<5000 监控项
MySQL 8.0
部署简单,生态完善
5000-20000 监控项
PostgreSQL 13+
性能更优,并发更好
>20000 监控项
TimescaleDB
时序数据优化
四、部署步骤 4.1 安装 Zabbix Server(Ubuntu 22.04 示例) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 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 apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent apt install mysql-server mysql -e "CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;" mysql -e "CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'Zabbix@2026!';" mysql -e "GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';" mysql -e "FLUSH PRIVILEGES;" zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql -uzabbix -pZabbix@2026! zabbix sed -i 's/# DBPassword=/DBPassword=Zabbix@2026!/' /etc/zabbix/zabbix_server.conf systemctl restart zabbix-server zabbix-agent apache2 systemctl enable zabbix-server zabbix-agent apache2
4.2 安装 Zabbix Agent2(推荐) 1 2 3 4 5 6 7 8 9 10 11 12 13 apt install zabbix-agent2 cat > /etc/zabbix/zabbix_agent2.conf <<EOF Server=192.168.1.100 ServerActive=192.168.1.100 Hostname=$(hostname) Include=/etc/zabbix/zabbix_agent2.d/*.conf EOF systemctl restart zabbix-agent2 systemctl enable zabbix-agent2
4.3 配置防火墙 1 2 3 4 ufw allow 10050/tcp ufw allow 10051/tcp ufw allow 80/tcp
五、核心配置 5.1 添加主机
登录 Web 界面(默认 http://server-ip/zabbix)
进入 数据收集 → 主机 → 创建主机
填写配置:
主机名称:FQDN 或自定义
可见名称:易读名称
群组:按业务/环境分类
接口:Agent IP:10050
5.2 关联模板 Zabbix 提供丰富内置模板:
模板
监控内容
Linux by Zabbix agent
CPU、内存、磁盘、网络
Windows by Zabbix agent
系统性能、服务、事件日志
Network Generic Device
SNMP 网络设备
MySQL by Zabbix agent
数据库性能指标
Apache by Zabbix agent
Web 服务状态
5.3 自定义监控项 1 2 3 4 5 6 7 8 9 10 11 cat > /etc/zabbix/zabbix_agent2.d/custom.conf <<EOF UserParameter=custom.app.status,systemctl is-active myapp && echo 1 || echo 0 UserParameter=custom.disk.used[*],df -h $1 | awk 'NR==2{print $5}' | tr -d '%' EOF systemctl restart zabbix-agent2
5.4 自动发现规则 1 2 3 4 cat > /etc/zabbix/zabbix_agent2.d/discovery.conf <<EOF UserParameter=vfs.fs.discovery,lsblk -nd -o MOUNTPOINT,TYPE | grep -v "swap" | awk '{print "{\"{#FSNAME}\":\""$1"\"}"}' | paste -sd, | sed 's/^/[/;s/$/]/' EOF
六、告警配置 6.1 触发器表达式
场景
表达式
CPU 持续高负载
avg(/Host/system.cpu.util,5m)>80
内存不足
avail(/Host/vm.memory.size,available)<1G
磁盘空间告警
last(/Host/vfs.fs.size[/,pused])>85
服务宕机
last(/Host/system.service.info[myapp])=0
网络延迟高
avg(/Host/net.tcp.ping[,],5m)>100
6.2 告警动作配置
介质类型 : 邮件、钉钉、企业微信、Webhook
用户 : 创建接收告警的用户
动作 : 定义触发条件和发送内容
6.3 告警分级
级别
颜色
响应时间
示例
灾难
深红
立即
服务宕机、主库故障
严重
红色
15 分钟
CPU>95%、磁盘>95%
一般
橙色
1 小时
CPU>80%、内存>85%
警告
黄色
4 小时
磁盘>80%、连接数高
信息
蓝色
工作日
配置变更、备份完成
七、性能优化 7.1 Server 参数调优 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 StartPollers =50 StartTrappers =20 StartPingers =10 HistoryCacheSize =128 MTrendCacheSize =32 MConfigCacheSize =256 MTimeout =10 ValueCacheSize =512 M
7.2 数据库优化 1 2 3 4 5 6 7 8 ALTER TABLE history ENGINE= InnoDB;ALTER TABLE trends ENGINE= InnoDB;# 在界面配置数据保留策略 # 历史数据:7 -30 天 # 趋势数据:365 天
7.3 使用 Proxy 分担负载 1 2 3 4 5 6 7 8 9 10 11 12 13 14 apt install zabbix-proxy-mysql cat > /etc/zabbix/zabbix_proxy.conf <<EOF Server=192.168.1.100 Hostname=Zabbix-Proxy-01 DBHost=localhost DBName=zabbix_proxy DBUser=zabbix DBPassword=Zabbix@2026! StartPollers=20 CacheSize=128M EOF
八、高可用方案 8.1 双机热备架构 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ┌──────────────┐ │ 虚拟 IP │ │ (Keepalived)│ └──────┬───────┘ │ ┌────────────┴────────────┐ │ │ ┌───────▼───────┐ ┌───────▼───────┐ │ Zabbix Server │ │ Zabbix Server │ │ (Active) │ │ (Standby) │ └───────┬───────┘ └───────┬───────┘ │ │ └────────────┬────────────┘ │ ┌──────▼──────┐ │ 共享存储 │ │ (MySQL MGR) │ └─────────────┘
8.2 Keepalived 配置 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 vrrp_script chk_zabbix { script "/usr/bin/pgrep -x zabbix_server" interval 5 } vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass ZabbixHA } virtual_ipaddress { 192.168.1.200 } track_script { chk_zabbix } }
九、日常运维 9.1 健康检查 1 2 3 4 5 6 7 8 9 10 11 systemctl status zabbix-server mysql -e "SELECT table_schema, SUM(data_length+index_length)/1024/1024 AS 'Size(MB)' FROM information_schema.tables WHERE table_schema='zabbix' GROUP BY table_schema;"
9.2 备份策略 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #!/bin/bash BACKUP_DIR="/backup/zabbix" DATE=$(date +%Y%m%d_%H%M%S) mysqldump -uzabbix -pZabbix@2026! zabbix | gzip > ${BACKUP_DIR} /zabbix_db_${DATE} .sql.gz tar -czf ${BACKUP_DIR} /zabbix_config_${DATE} .tar.gz /etc/zabbix/ find ${BACKUP_DIR} -name "*.gz" -mtime +30 -delete echo "Zabbix backup completed: ${DATE} "
9.3 升级流程
备份数据库和配置
停止 Zabbix 服务
更新软件包
执行数据库升级脚本
启动服务并验证
1 2 3 4 systemctl stop zabbix-server apt update && apt install --only-upgrade zabbix-server-mysql zabbix-frontend-php zcat /usr/share/zabbix-sql-scripts/mysql/proxy.sql.gz | mysql -uzabbix -p zabbix systemctl start zabbix-server
十、常见问题排查 10.1 Agent 无法连接 1 2 3 4 5 6 7 8 9 10 11 telnet <agent-ip> 10050 systemctl status zabbix-agent2 tail -f /var/log/zabbix/zabbix_agent2.log grep -E "^Server=" /etc/zabbix/zabbix_agent2.conf
10.2 监控项不更新
检查主机是否启用
检查模板是否正确关联
查看触发器是否处于维护模式
检查 Server 日志:tail -f /var/log/zabbix/zabbix_server.log
10.3 数据库性能问题 1 2 3 4 5 6 7 8 9 SHOW PROCESSLIST;ANALYZE TABLE history; ANALYZE TABLE trends; OPTIMIZE TABLE history_uint;
十一、最佳实践总结
合理规划监控粒度 : 不要过度监控,每个主机 50-100 个监控项为宜
使用 Agent2 : 支持更多插件,性能更好
部署 Proxy : 超过 500 台主机建议使用 Proxy 架构
定期清理数据 : 设置合理的数据保留策略
告警分级 : 避免告警疲劳,只通知真正需要处理的问题
文档化 : 记录所有自定义监控项和触发器逻辑
测试告警 : 定期验证告警通道是否正常工作
监控 Zabbix 自身 : 确保监控系统本身健康
十二、参考资源
文档版本:1.0 最后更新:2026-03-11