Zabbix 7.0 监控环境搭建实战笔记(docker-compose安装方式)
·
一、环境架构概览
- 宿主机环境:Windows (Oracle VirtualBox)
- 网络模式:Host-Only(主机-VM-VM连通) + NET(出网)(HOST确保 101 与 102 在同一网段且互通)
- 服务器规划:
- Zabbix Server (101):运行 Zabbix Server, Web UI, MySQL/PostgreSQL。
- Zabbix Agent (102):仅运行 Zabbix Agent,作为被监控目标。
- 操作系统:Ubuntu 26.04 (Resolute)
- 环境:docker容器两台主机需要提前自己装好
二、服务端部署 (Server 101)
核心步骤
-
准备目录与文件
创建docker-compose.yml,包含zabbix-server,web,mysql、agent四个服务。然后复制以下文本进去sudo mkdir /opt/zabbix && cd /opt/zabbix && sudo nano docker-compose.yml -
services: zabbix-db: image: mysql:8.0 container_name: zabbix-db #服务名 restart: always environment: MYSQL_ROOT_PASSWORD: ZabbixRootP@ss2026 #数据库root密码 根据自己喜欢修改 MYSQL_DATABASE: zabbix MYSQL_USER: zabbix MYSQL_PASSWORD: ZabbixP@ss2026 command: - --character-set-server=utf8mb3 - --collation-server=utf8mb3_bin - --default-authentication-plugin=caching_sha2_password - --log_bin_trust_function_creators=1 - --innodb-strict-mode=OFF volumes: - ./data/mysql:/var/lib/mysql healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] interval: 10s timeout: 5s retries: 5 zabbix-server: image: zabbix/zabbix-server-mysql:alpine-7.0-latest container_name: zabbix-server restart: always depends_on: zabbix-db: condition: service_healthy environment: DB_SERVER_HOST: zabbix-db MYSQL_DATABASE: zabbix MYSQL_USER: zabbix MYSQL_PASSWORD: ZabbixP@ss2026 ports: - "10051:10051" volumes: - ./data/zabbix:/var/lib/zabbix zabbix-web: image: zabbix/zabbix-web-nginx-mysql:alpine-7.0-latest container_name: zabbix-web restart: always depends_on: - zabbix-server - zabbix-db environment: DB_SERVER_HOST: zabbix-db MYSQL_DATABASE: zabbix MYSQL_USER: zabbix MYSQL_PASSWORD: ZabbixP@ss2026 ZBX_SERVER_HOST: zabbix-server PHP_TZ: Asia/Shanghai ports: - "8080:8080" zabbix-agent: image: zabbix/zabbix-agent:alpine-7.0-latest container_name: zabbix-agent restart: always depends_on: - zabbix-server environment: ZBX_SERVER_HOST: zabbix-server ZBX_SERVER_ACTIVE: zabbix-server ZBX_HOSTNAME: ZabbixServer ports: - "10050:10050" volumes: - /proc:/host/proc:ro -
启动服务(在yml同一目录中运行以下命令)
docker compose up -d -
初始化检查
- 查看日志确认数据库初始化成功:
docker compose logs -f zabbix-server - 关键报错处理:若出现
users table is empty,说明数据库未正确初始化。需彻底删除数据卷 (rm -rf data) 后重新启动。sudo docker compose down -v #停止容器并删除 sudo rm -rf ./data/ #如果有的话删 #重新走第三步
- 查看日志确认数据库初始化成功:
-
访问控制台
- 默认端口:
80或8080(取决于 yml 映射)。 -
Server 端 (101) 操作
sudo ufw allow 10050/tcp # agent端口 sudo ufw allow 8080/tcp # 前端页面端口 sudo ufw allow 10051/tcp #(可选)配置主动模式需要开放 sudo ufw status - 开放前端访问端口(浏览器访问):IP101:8080
- 默认账号:
Admin/zabbix。
- 默认端口:
三、客户端部署 (Agent 102)
配置文件 (docker-compose.yml)
services:
zabbix-agent:
image: zabbix/zabbix-agent:alpine-7.0-latest
container_name: zabbix-agent-102
restart: always
environment:
# 指向 101 服务器的 IP 按自己实际情况修改
ZBX_SERVER_HOST: "192.168.56.101"
ZBX_SERVER_ACTIVE: "192.168.56.102"
# 必须与控制台添加的主机名称完全一致
ZBX_HOSTNAME: "Server-102"
ports:
- "10050:10050"
volumes:
# 关键:挂载系统目录以获取真实负载数据
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /dev:/host/dev:ro
关键点解析
- 不要加
depends_on:Agent 端没有 Server 容器,加了会报错无法启动。 - Volume 挂载:必须挂载
/proc和/sys,否则监控到的 CPU/内存是容器内部的假数据。
四、网络与防火墙配置 (重点)
由于使用了 Ubuntu 且开启了 UFW,必须手动放行端口。
1. Agent 端 (102) 操作
- 开放被动监控端口(Server 主动来抓取数据):
sudo ufw allow 10050/tcp
五、Web 控制台配置流程
- 进入菜单:数据采集 (Data collection) -> 主机 (Hosts)。
- 创建主机:
- 主机名称:必须与 Docker 环境变量
ZBX_HOSTNAME一致(例如Server-102)。 - 接口:填入 102 的 IP 地址,端口
10050。 - 模板:搜索并链接
Linux by Zabbix agent。
- 主机名称:必须与 Docker 环境变量
- 验证状态:
- 等待几分钟,观察“可用性”列。
- 绿色 ZBX:连接成功。
- 红色 ZBX:点击图标查看报错(通常是 Connection refused 或 Timeout)。
六、常见故障排查清单
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| Server 启动失败 | 数据库表为空 | 删除数据卷重新 up -d |
| Agent 无法启动 | 依赖错误 | 删除 depends_on: zabbix-server |
| 监控数据为 0 | 权限不足 | 检查 /proc 等目录是否挂载且为只读 (:ro) |
| ZBX 图标变红 | 防火墙拦截 | 102 服务器执行 ufw allow 10050 |
| ZBX 图标变红 | 主机名不匹配 | 检查 Web 端主机名与 Agent 环境变量是否完全一致 |
| 找不到主机 | 网络不通 | 检查 VirtualBox 网络适配器设置及 IP 配置 |
初学这个随便搭建的,以备后续查阅。供大家参考参考
更多推荐

所有评论(0)