资讯动态

别再手动折腾了!用Docker Compose一键部署Zabbix 6.0监控全家桶(附MySQL 8.0配置)

发布时间:2026/9/12 1:35:01 来源:尧图企业网站定制
从零到一Docker Compose全栈部署Zabbix 6.0监控系统实战指南1. 为什么选择Docker Compose部署Zabbix在传统运维环境中部署一套完整的Zabbix监控系统往往意味着需要手动配置多个组件MySQL数据库、Zabbix Server、Zabbix Web界面以及Java网关等。每个组件都需要独立的安装、配置和网络连接这个过程不仅耗时耗力还容易出错。Docker Compose的出现彻底改变了这一局面。通过一个简单的YAML文件我们可以定义所有服务及其依赖关系实现一键部署。这种方式带来了几个显著优势环境一致性消除在我机器上能运行的问题快速部署从零到完整环境只需几分钟资源隔离每个服务运行在独立容器中版本控制docker-compose.yml文件可纳入版本管理易于扩展横向扩展只需修改副本数量特别对于Zabbix 6.0这样的新版本它要求MySQL 8.0的支持使用Docker Compose可以轻松解决版本依赖问题避免与传统环境中可能存在的MySQL 5.7等旧版本冲突。2. 环境准备与Docker Compose安装2.1 系统要求在开始之前请确保您的系统满足以下最低要求组件最低要求推荐配置CPU2核4核内存4GB8GB存储20GB50GB操作系统Linux内核3.10Ubuntu 20.04/CentOS 82.2 Docker引擎安装对于尚未安装Docker的Linux系统可执行以下命令# 卸载旧版本如有 sudo apt-get remove docker docker-engine docker.io containerd runc # 安装依赖 sudo apt-get update sudo apt-get install -y \ apt-transport-https \ ca-certificates \ curl \ gnupg \ lsb-release # 添加Docker官方GPG密钥 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg # 设置稳定版仓库 echo \ deb [archamd64 signed-by/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable | sudo tee /etc/apt/sources.list.d/docker.list /dev/null # 安装Docker引擎 sudo apt-get update sudo apt-get install -y docker-ce docker-ce-cli containerd.io # 启动Docker并设置开机自启 sudo systemctl enable --now docker2.3 Docker Compose安装Docker Compose V2已成为官方推荐版本安装方法如下# 下载最新稳定版 sudo curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose # 赋予执行权限 sudo chmod x /usr/local/bin/docker-compose # 验证安装 docker-compose --version3. 编写docker-compose.yml文件下面是一个完整的docker-compose.yml文件示例包含了Zabbix 6.0所需的全部组件version: 3.8 services: mysql-server: image: mysql:8.0 container_name: zabbix-mysql restart: unless-stopped environment: MYSQL_DATABASE: zabbix MYSQL_USER: zabbix MYSQL_PASSWORD: zabbix MYSQL_ROOT_PASSWORD: rootpassword command: - --character-set-serverutf8mb4 - --collation-serverutf8mb4_bin - --default-authentication-pluginmysql_native_password volumes: - mysql_data:/var/lib/mysql networks: - zabbix-net zabbix-java-gateway: image: zabbix/zabbix-java-gateway:alpine-6.0-latest container_name: zabbix-java-gateway restart: unless-stopped networks: - zabbix-net zabbix-server: image: zabbix/zabbix-server-mysql:alpine-6.0-latest container_name: zabbix-server restart: unless-stopped environment: DB_SERVER_HOST: mysql-server MYSQL_DATABASE: zabbix MYSQL_USER: zabbix MYSQL_PASSWORD: zabbix MYSQL_ROOT_PASSWORD: rootpassword ZBX_JAVAGATEWAY: zabbix-java-gateway volumes: - zabbix_export:/var/lib/zabbix/export - zabbix_snmptraps:/var/lib/zabbix/snmptraps ports: - 10051:10051 depends_on: - mysql-server - zabbix-java-gateway networks: - zabbix-net zabbix-web: image: zabbix/zabbix-web-nginx-mysql:alpine-6.0-latest container_name: zabbix-web restart: unless-stopped environment: ZBX_SERVER_HOST: zabbix-server DB_SERVER_HOST: mysql-server MYSQL_DATABASE: zabbix MYSQL_USER: zabbix MYSQL_PASSWORD: zabbix MYSQL_ROOT_PASSWORD: rootpassword ports: - 8080:8080 depends_on: - mysql-server - zabbix-server networks: - zabbix-net volumes: mysql_data: zabbix_export: zabbix_snmptraps: networks: zabbix-net: driver: bridge注意在生产环境中请务必修改默认的数据库密码(zabbix/rootpassword)为更复杂的强密码。4. 关键配置解析与优化建议4.1 MySQL 8.0特定配置Zabbix 6.0对MySQL 8.0有特定要求我们在docker-compose.yml中已经做了相应配置command: - --character-set-serverutf8mb4 - --collation-serverutf8mb4_bin - --default-authentication-pluginmysql_native_password这三个参数确保了使用utf8mb4字符集支持完整Unicode设置正确的排序规则使用Zabbix兼容的认证插件4.2 数据持久化策略我们定义了三个数据卷确保关键数据不会丢失mysql_data存储MySQL数据库文件zabbix_export存储Zabbix导出的配置和数据zabbix_snmptraps存储SNMP trap数据4.3 网络配置创建了专用的zabbix-net网络具有以下优势容器间通过服务名直接通信与主机网络隔离提高安全性可自定义子网和IP范围4.4 性能优化参数对于生产环境建议在zabbix-server服务中添加以下环境变量environment: ZBX_STARTPOLLERS: 20 ZBX_STARTPOLLERSUNREACHABLE: 5 ZBX_STARTTRAPPERS: 15 ZBX_STARTPINGERS: 5 ZBX_CACHESIZE: 128M ZBX_HISTORYCACHESIZE: 256M ZBX_HISTORYINDEXCACHESIZE: 128M ZBX_TRENDCACHESIZE: 128M ZBX_VALUECACHESIZE: 128M这些参数应根据实际监控主机数量和硬件资源进行调整。5. 部署与验证5.1 启动Zabbix堆栈在包含docker-compose.yml的目录中执行docker-compose up -d这个命令会创建指定的网络和卷按依赖顺序启动所有服务以守护进程模式运行容器5.2 检查服务状态使用以下命令验证各容器状态docker-compose ps预期输出应显示所有服务状态为Up。如果有异常可查看特定容器的日志docker-compose logs zabbix-server5.3 访问Zabbix Web界面服务启动后可能需要几分钟初始化通过以下URL访问http://服务器IP:8080初始登录凭据用户名Admin密码zabbix安全提示首次登录后请立即更改Admin密码并创建具有适当权限的新用户。5.4 常见问题排查MySQL连接问题 如果Zabbix Server无法连接MySQL检查MySQL容器是否正常运行网络配置是否正确环境变量中的密码是否匹配性能问题 如果界面响应缓慢考虑增加ZBX_*缓存参数升级服务器硬件优化MySQL配置数据持久化验证 重启堆栈后确认监控数据仍然存在docker-compose down docker-compose up -d6. 生产环境进阶配置6.1 启用HTTPS为Zabbix Web启用HTTPS准备SSL证书如Letsencrypt修改docker-compose.yml中web服务的配置zabbix-web: volumes: - /path/to/certs:/etc/ssl/nginx environment: ZBX_SSL_ENABLED: true ZBX_SSL_CERT: /etc/ssl/nginx/fullchain.pem ZBX_SSL_KEY: /etc/ssl/nginx/privkey.pem ports: - 443:84436.2 配置邮件报警在Zabbix Web界面配置电子邮件报警进入Administration → Media Types配置SMTP服务器信息为用户分配报警媒介6.3 监控Docker主机在主机上安装Zabbix Agent 2以监控Dockerdocker run --name zabbix-agent2 \ -e ZBX_HOSTNAMEDocker Host \ -e ZBX_SERVER_HOSTzabbix-server \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /:/rootfs \ --network zabbix-net \ -p 10050:10050 \ -d zabbix/zabbix-agent2:alpine-6.0-latest6.4 备份与恢复策略备份# 备份数据库 docker-compose exec mysql-server mysqldump -u root -prootpassword zabbix zabbix_backup.sql # 备份配置文件 tar czvf zabbix_config_backup.tar.gz $(docker volume inspect -f {{.Mountpoint}} zabbix_export)恢复# 恢复数据库 cat zabbix_backup.sql | docker-compose exec -T mysql-server mysql -u root -prootpassword zabbix # 恢复配置文件 tar xzvf zabbix_config_backup.tar.gz -C $(docker volume inspect -f {{.Mountpoint}} zabbix_export)7. 版本升级与维护7.1 升级Zabbix版本停止现有服务docker-compose down修改docker-compose.yml中的镜像标签如alpine-6.2-latest重新启动docker-compose up -d7.2 日常维护命令查看资源使用docker stats清理无用数据docker system prune -f更新所有镜像docker-compose pull docker-compose up -d扩展Zabbix Server实例docker-compose up -d --scale zabbix-server3

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价