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
# 1. 安装 Zabbix 仓库
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. 安装 Zabbix Server + Frontend + Agent
apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent

# 3. 安装并配置 MySQL
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;"

# 4. 导入初始数据
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql -uzabbix -pZabbix@2026! zabbix

# 5. 配置 Server 连接数据库
sed -i 's/# DBPassword=/DBPassword=Zabbix@2026!/' /etc/zabbix/zabbix_server.conf

# 6. 启动服务
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
# Agent2 支持更多插件和更好的性能
apt install zabbix-agent2

# 配置 Agent
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
# Zabbix Server 端口
ufw allow 10050/tcp # Agent
ufw allow 10051/tcp # Server
ufw allow 80/tcp # Frontend

五、核心配置

5.1 添加主机

  1. 登录 Web 界面(默认 http://server-ip/zabbix)
  2. 进入 数据收集 → 主机 → 创建主机
  3. 填写配置:
    • 主机名称: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
# 1. 创建自定义脚本
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

# 2. 重启 Agent
systemctl restart zabbix-agent2

# 3. 在 Web 界面添加监控项
# 键值:custom.app.status 或 custom.disk.used[/]

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 告警动作配置

  1. 介质类型: 邮件、钉钉、企业微信、Webhook
  2. 用户: 创建接收告警的用户
  3. 动作: 定义触发条件和发送内容

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
# /etc/zabbix/zabbix_server.conf

# 最大并发进程
StartPollers=50
StartTrappers=20
StartPingers=10

# 历史数据缓存
HistoryCacheSize=128M
TrendCacheSize=32M

# 配置缓存
ConfigCacheSize=256M

# 超时设置(防止慢查询阻塞)
Timeout=10

# 启用房屋值缓存(大幅提升性能)
ValueCacheSize=512M

7.2 数据库优化

1
2
3
4
5
6
7
8
-- MySQL 优化
ALTER TABLE history ENGINE=InnoDB;
ALTER TABLE trends ENGINE=InnoDB;

-- 定期清理(Zabbix 内置)
# 在界面配置数据保留策略
# 历史数据:7-30
# 趋势数据:365

7.3 使用 Proxy 分担负载

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 安装 Proxy
apt install zabbix-proxy-mysql

# 配置 Proxy
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
# /etc/keepalived/keepalived.conf
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

# 查看队列(积压的监控项)
# Web 界面:监控 → 队列

# 检查数据库大小
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;"

# 查看每秒处理值数
# Web 界面:报表 → Zabbix 服务器性能

9.2 备份策略

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/bin/bash
# /opt/scripts/zabbix_backup.sh

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/

# 删除 30 天前的备份
find ${BACKUP_DIR} -name "*.gz" -mtime +30 -delete

echo "Zabbix backup completed: ${DATE}"

9.3 升级流程

  1. 备份数据库和配置
  2. 停止 Zabbix 服务
  3. 更新软件包
  4. 执行数据库升级脚本
  5. 启动服务并验证
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

# 检查 Agent 状态
systemctl status zabbix-agent2

# 查看 Agent 日志
tail -f /var/log/zabbix/zabbix_agent2.log

# 检查 Server 配置(Agent 端)
grep -E "^Server=" /etc/zabbix/zabbix_agent2.conf

10.2 监控项不更新

  1. 检查主机是否启用
  2. 检查模板是否正确关联
  3. 查看触发器是否处于维护模式
  4. 检查 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;

十一、最佳实践总结

  1. 合理规划监控粒度: 不要过度监控,每个主机 50-100 个监控项为宜
  2. 使用 Agent2: 支持更多插件,性能更好
  3. 部署 Proxy: 超过 500 台主机建议使用 Proxy 架构
  4. 定期清理数据: 设置合理的数据保留策略
  5. 告警分级: 避免告警疲劳,只通知真正需要处理的问题
  6. 文档化: 记录所有自定义监控项和触发器逻辑
  7. 测试告警: 定期验证告警通道是否正常工作
  8. 监控 Zabbix 自身: 确保监控系统本身健康

十二、参考资源


文档版本:1.0
最后更新:2026-03-11