【网络监控】Zabbix 7.4 容器化部署实战(Docker Compose 一站式)
·
1. 为什么选择容器化部署Zabbix?
每次在物理机或虚拟机上手动部署Zabbix,总会遇到各种依赖冲突、环境不一致的问题。记得有次为了编译一个snmp扩展,花了整整一下午解决库版本问题。而Docker Compose的标准化部署方式,能让你在10分钟内搭建起完整的Zabbix 7.4监控平台。
Zabbix 7.4作为当前最新LTS版本,新增了预测性监控和机器学习告警功能。通过容器化部署,你可以获得:
- 环境隔离 :MySQL、Web前端、Server组件各自独立
- 快速回滚 :版本升级失败?一条命令即可恢复
- 资源控制 :精确分配CPU/内存给每个组件
- 一键启停 :开发测试环境随时销毁重建
2. 部署前的准备工作
2.1 硬件资源规划
建议生产环境配置:
- 小型监控场景 (<100台设备):
- 2核CPU / 4GB内存 / 50GB存储
- 中型监控场景 (100-500台):
- 4核CPU / 8GB内存 / 100GB存储
实测发现Zabbix Server容器内存占用会随监控项增长而增加,建议预留20%缓冲空间
2.2 软件环境要求
确保宿主机已安装:
- Docker 20.10+
- Docker Compose 2.12+
- 开放端口:10051(Server)、8080(Web)、3306(MySQL)
验证环境:
docker --version && docker-compose --version
如果未安装,用以下命令快速安装:
# Ubuntu/Debian
sudo apt-get update && sudo apt-get install -y docker.io docker-compose
# CentOS/RHEL
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
sudo systemctl start docker
3. 编写Docker Compose文件
创建 zabbix-docker 目录,新建 docker-compose.yml 文件:
version: '3.7'
services:
zabbix-server:
image: zabbix/zabbix-server-mysql:7.4-latest
ports:
- "10051:10051"
environment:
DB_SERVER_HOST: zabbix-mysql
MYSQL_USER: zabbix
MYSQL_PASSWORD: zabbix_pwd
ZBX_STARTPOLLERS: 10
volumes:
- zbx_export:/var/lib/zabbix/export
depends_on:
- zabbix-mysql
restart: unless-stopped
zabbix-web:
image: zabbix/zabbix-web-nginx-mysql:7.4-latest
ports:
- "8080:8080"
environment:
DB_SERVER_HOST: zabbix-mysql
MYSQL_USER: zabbix
MYSQL_PASSWORD: zabbix_pwd
ZBX_SERVER_HOST: zabbix-server
PHP_TZ: Asia/Shanghai
depends_on:
- zabbix-server
restart: unless-stopped
zabbix-mysql:
image: mysql:8.0
command:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_bin
- --default-authentication-plugin=mysql_native_password
environment:
MYSQL_DATABASE: zabbix
MYSQL_USER: zabbix
MYSQL_PASSWORD: zabbix_pwd
MYSQL_ROOT_PASSWORD: root_pwd
volumes:
- zbx_mysql:/var/lib/mysql
restart: unless-stopped
zabbix-agent:
image: zabbix/zabbix-agent:7.4-latest
environment:
ZBX_HOSTNAME: zabbix-agent
ZBX_SERVER_HOST: zabbix-server
ports:
- "10050:10050"
restart: unless-stopped
volumes:
zbx_mysql:
zbx_export:
关键参数说明:
ZBX_STARTPOLLERS:根据监控主机数量调整(建议每50台设备增加5个poller)PHP_TZ:必须设置否则仪表盘时间显示异常- MySQL 8.0需要特别指定字符集和认证插件
4. 启动与初始化
4.1 一键启动服务
docker-compose up -d
观察日志确保各容器正常启动:
docker-compose logs -f zabbix-server
4.2 初始化Web配置
- 访问
http://服务器IP:8080 - 按向导完成配置:
- 数据库类型选MySQL
- 数据库地址填
zabbix-mysql - 用户名/密码:zabbix/zabbix_pwd
- 使用默认账号登录:
- 用户名:Admin
- 密码:zabbix
首次登录后建议立即修改密码!我在测试环境曾因未改密码导致被植入挖矿程序
5. 高级配置技巧
5.1 数据持久化验证
检查MySQL数据是否持久化:
docker-compose down && docker-compose up -d
# 重新登录后数据应仍然存在
5.2 性能调优参数
在 zabbix-server 服务段添加这些环境变量:
environment:
ZBX_CACHESIZE: 128M
ZBX_HISTORYCACHESIZE: 64M
ZBX_HISTORYINDEXCACHESIZE: 32M
5.3 自定义监控模板
导入社区模板:
- 下载模板XML文件(如 VMware监控模板 )
- 进入
配置 → 模板 → 导入 - 上传XML文件
6. 常见问题排查
6.1 Web界面无法访问
检查Nginx容器日志:
docker-compose logs zabbix-web
常见错误:
- 时区未设置 → 添加
PHP_TZ环境变量 - 数据库连接失败 → 检查
zabbix-mysql容器状态
6.2 监控数据不更新
在Server容器内测试Agent连通性:
docker exec -it zabbix-docker_zabbix-server_1 zabbix_get -s 127.0.0.1 -k system.uname
6.3 数据库性能瓶颈
优化MySQL配置:
docker exec -it zabbix-docker_zabbix-mysql_1 mysql -uroot -proot_pwd
执行SQL优化:
ALTER TABLE history_uint MODIFY itemid bigint unsigned NOT NULL;
CREATE INDEX history_uint_1 ON history_uint (itemid, clock);
这套方案已在生产环境稳定运行3个月,监控着200+服务器和网络设备。最大的优势是升级时只需要修改镜像版本号,然后执行 docker-compose pull && docker-compose up -d 就完成迁移。
更多推荐

所有评论(0)