主机 10.160.10.213 · Zabbix 7.4.2 · MySQL 8.0.43 · 审计时间 2026-11-04
/opt/zabbix/docker-compose.yaml 的问题| # | 位置 | 问题 | 影响 | 建议 |
|---|---|---|---|---|
| 1 | 顶部 version: '3' |
Compose v2 已废弃该字段,会打印 warning | 无功能影响,但提示噪音 | 删除 |
| 2 | 所有 image 未锁版本(zabbix/zabbix-server-mysql、mysql:8.0-oraclelinux9) |
实际是 latest/浮动 tag |
一旦 docker compose pull 会被动升级(7.4.x→更高),可能不兼容 |
锁定 ubuntu-7.4.2 / mysql:8.0.43 |
| 3 | zabbix-server 使用 privileged: true + cap_add: ALL |
容器获得近乎宿主机全部能力 | 严重过度授权;容器内进程若被利用可影响宿主机 | 改为 cap_add: [NET_RAW, SYS_NICE](仅 ICMP/优先级需要) |
| 4 | 使用 links:(web 服务) |
旧式链接,v2 已不推荐 | 无功能影响,但与自定义网络重复 | 删除,改用同一 networks + depends_on |
| 5 | depends_on 仅列名字 |
不等待 MySQL 真正就绪 | MySQL 启动慢时 server/web 可能反复重连 | 用 condition: service_healthy(已配 healthcheck) |
| 6 | 密码明文硬编码在 compose 且 root/普通用户同密码 | 弱口令 CobcoIT132,泄露面大 |
安全风险 | 用 .env + ${VAR:-默认} 覆盖;建议改强密码 |
| 7 | 未设置时区(TZ/PHP_TZ) |
容器默认 UTC | Web 显示/报表时间可能不符预期 | 显式 TZ(默认保留 UTC,可改 Asia/Shanghai) |
| 8 | --default-authentication-plugin=mysql_native_password |
MySQL 8.0.34+ 起该参数已弃用(8.4 移除) | 仅 warning,暂无影响 | 保持现状即可(换 8.4 前需处理) |
| 9 | 无 stop_grace_period |
停容器时默认 10s 强杀 | MySQL/Zabbix 可能非正常关闭 | mysql 设 1m、server 设 30s |
| 10 | healthcheck 无 start_period |
MySQL 首次初始化较久 | 可能被误判 unhealthy | 增加 start_period: 40s |
说明:
privileged/cap_add:ALL的收紧会改变运行参数;若线上有依赖特殊能力的功能(少见),重建后请观察。除此之外其余修改均为等价或增强,可直接替换。
实测(迁移后:187 主机 / 75700 项 / 写入 445 values/s)各缓存真实占用:
| 缓存 | 环境变量 | 原配置 | 实测占用 | 结论 |
|---|---|---|---|---|
| 配置缓存 | ZBX_CACHESIZE |
1024M | 12.06% ≈ 123M | 512M(≈4x 余量) |
| 值缓存 | ZBX_VALUECACHESIZE |
1024M | 1.15% ≈ 12M | 128M |
| 趋势缓存 | ZBX_TRENDCACHESIZE |
1G | 0.39% ≈ 4M | 64M(原值超配约 250 倍) |
| 历史缓存 | ZBX_HISTORYCACHESIZE |
128M | ≈0.00008% | 64M |
| 历史索引 | ZBX_HISTORYINDEXCACHESIZE |
32M | 0.24% ≈ 77K | 16M |
| 趋势函数缓存 | ZBX_TRENDFUNCTIONCACHESIZE |
64M | ≈0 | 16M |
⚠️ 注意:不要在全量 LLD 迁移/大批发现进行中把配置缓存调小——应在迁移稳定后再切换 compose。本次迁移已完成,可安全切换。
ZBX_STARTSNMPPOLLERS: 30 保留合理:186 台交换机改为“每台 1 次 walk”,实测 SNMP poller 繁忙度仅 2.85%、unreachable 0%,30 个充裕(若追求精简可降到 15)。/ 191G 用 73G(39%),MySQL 数据在 /opt/zabbix/zabbix-server/mysql_data,建议定期关注 history 增长(可配 housekeeping)。