docker-compose.yaml 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. # =============================================================================
  2. # Zabbix 7.4.16 单机 Docker Compose —— 优化/低坑版
  3. # 用法(先备份原文件):
  4. # cd /opt/zabbix
  5. # cp docker-compose.yaml docker-compose.yaml.bak_$(date +%s)
  6. # docker compose -f docker-compose.new.yaml config -q # 先校验语法
  7. # docker compose -f docker-compose.new.yaml up -d # 重建生效
  8. # 说明:
  9. # - 镜像锁定精确版本,避免 `pull` 后被动升级。
  10. # - 密码/时区均可用 .env 覆盖,默认值与原文件一致,可直接替换。
  11. # - 缓存按 75k 项 / 186 台交换机的实测用量重估(见说明文档)。
  12. # =============================================================================
  13. services:
  14. zabbix-mysql:
  15. image: mysql:8.0.43
  16. container_name: zabbix-mysql
  17. command:
  18. - --character-set-server=utf8mb4
  19. - --collation-server=utf8mb4_bin
  20. - --innodb-buffer-pool-size=1G
  21. - --innodb-file-per-table=1
  22. - --log-bin-trust-function-creators=1
  23. environment:
  24. MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-CobcoIT132}
  25. MYSQL_DATABASE: ${MYSQL_DATABASE:-zabbix}
  26. MYSQL_USER: ${MYSQL_USER:-zabbix}
  27. MYSQL_PASSWORD: ${MYSQL_PASSWORD:-CobcoIT132}
  28. TZ: ${TZ:-UTC}
  29. volumes:
  30. - /opt/zabbix/zabbix-server/mysql_data:/var/lib/mysql
  31. networks:
  32. zabbix:
  33. ipv4_address: 192.168.87.22
  34. restart: unless-stopped
  35. stop_grace_period: 1m
  36. logging:
  37. driver: json-file
  38. options:
  39. max-size: "10m"
  40. max-file: "3"
  41. healthcheck:
  42. test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1"]
  43. interval: 10s
  44. timeout: 5s
  45. retries: 10
  46. start_period: 40s
  47. zabbix-server:
  48. image: zabbix/zabbix-server-mysql:ubuntu-7.4.16
  49. container_name: zabbix-server
  50. networks:
  51. zabbix:
  52. ipv4_address: 192.168.87.21
  53. ulimits:
  54. nproc: 65535
  55. nofile:
  56. soft: 20000
  57. hard: 40000
  58. # 仅保留实际需要的权限:NET_RAW 供 fping(ICMP 监控),SYS_NICE 供进程优先级。
  59. # 不再使用 privileged:true / cap_add:ALL(过度授权、有安全风险)。
  60. # 若完全不做 ICMP ping 监控,可删除整个 cap_add 段。
  61. cap_add:
  62. - NET_RAW
  63. - SYS_NICE
  64. sysctls:
  65. - net.ipv4.ip_local_port_range=1024 65000
  66. - net.ipv4.conf.all.accept_redirects=0
  67. - net.ipv4.conf.all.secure_redirects=0
  68. - net.ipv4.conf.all.send_redirects=0
  69. restart: unless-stopped
  70. stop_grace_period: 30s
  71. logging:
  72. driver: json-file
  73. options:
  74. max-size: "10m"
  75. max-file: "3"
  76. environment:
  77. DB_SERVER_HOST: zabbix-mysql
  78. MYSQL_DATABASE: ${MYSQL_DATABASE:-zabbix}
  79. MYSQL_USER: ${MYSQL_USER:-zabbix}
  80. MYSQL_PASSWORD: ${MYSQL_PASSWORD:-CobcoIT132}
  81. MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-CobcoIT132}
  82. TZ: ${TZ:-UTC}
  83. # ---- 缓存:按 75k 项、186 台交换机的实测用量重新定容 ----
  84. ZBX_CACHESIZE: 512M # 配置缓存 实测 12%(~123M),512M 留约 4 倍余量
  85. ZBX_VALUECACHESIZE: 128M # 值缓存 实测 1.1%(~12M)
  86. ZBX_TRENDCACHESIZE: 64M # 趋势缓存 实测 0.39%(~4M),原 1G 严重超配
  87. ZBX_HISTORYCACHESIZE: 64M # 历史缓存 实测≈0
  88. ZBX_HISTORYINDEXCACHESIZE: 16M # 历史索引 实测 0.24%(~77K)
  89. ZBX_TRENDFUNCTIONCACHESIZE: 16M # 趋势函数缓存,默认 4M 已足
  90. # ---- 进程数:186 台交换机以 1 次 walk/台 轮询,30 个 SNMP poller 实测 busy≈3% ----
  91. ZBX_STARTSNMPPOLLERS: 30
  92. ZBX_STARTLLDWORKERS: 10 # 大批 LLD 发现更快
  93. ZBX_STARTPREPROCESSORS: 5
  94. ports:
  95. - '10051:10051'
  96. volumes:
  97. - /opt/zabbix/zabbix-server/data:/data
  98. - /opt/zabbix/zabbix-server/data/alertscripts:/usr/lib/zabbix/alertscripts
  99. depends_on:
  100. zabbix-mysql:
  101. condition: service_healthy
  102. zabbix-web-nginx-mysql:
  103. image: zabbix/zabbix-web-nginx-mysql:ubuntu-7.4.16
  104. container_name: zabbix-webservice
  105. networks:
  106. zabbix:
  107. ipv4_address: 192.168.87.20
  108. restart: unless-stopped
  109. logging:
  110. driver: json-file
  111. options:
  112. max-size: "10m"
  113. max-file: "3"
  114. environment:
  115. DB_SERVER_HOST: zabbix-mysql
  116. MYSQL_DATABASE: ${MYSQL_DATABASE:-zabbix}
  117. MYSQL_USER: ${MYSQL_USER:-zabbix}
  118. MYSQL_PASSWORD: ${MYSQL_PASSWORD:-CobcoIT132}
  119. MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-CobcoIT132}
  120. ZBX_SERVER_HOST: zabbix-server
  121. TZ: ${TZ:-UTC}
  122. PHP_TZ: ${TZ:-UTC}
  123. volumes:
  124. - /opt/zabbix/zabbix-server/web:/data
  125. - /opt/zabbix/zabbix-server/fonts/simkai.ttf:/usr/share/zabbix/assets/fonts/DejaVuSans.ttf
  126. depends_on:
  127. zabbix-mysql:
  128. condition: service_healthy
  129. zabbix-server:
  130. condition: service_started
  131. networks:
  132. zabbix:
  133. ipam:
  134. config:
  135. - subnet: 192.168.87.0/24