资讯动态

Zabbix 7.4 Alpine 版 Docker Compose 部署

发布时间:2026/10/8 9:03:18 来源:尧图企业网站定制
compose.yamlservices: # --------------------------------------------------------------------------- # 1. 数据库服务 (MariaDB) # --------------------------------------------------------------------------- zabbix-db: image: mariadb:11.8 container_name: zabbix-db restart: always command: - --character-set-serverutf8mb4 - --collation-serverutf8mb4_bin - --default-authentication-pluginmysql_native_password - --innodb-buffer-pool-size1G - --innodb-log-file-size256M - --max-connections500 environment: MYSQL_DATABASE: ${MYSQL_DATABASE:-zabbix} MYSQL_USER: ${MYSQL_USER:-zabbix} MYSQL_PASSWORD: ${MYSQL_PASSWORD:-zabbix_secret_password} MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-root_secret_password} volumes: - db-data:/var/lib/mysql networks: - zabbix-net healthcheck: test: [CMD, healthcheck.sh, --connect, --innodb_initialized] interval: 10s timeout: 5s retries: 5 # --------------------------------------------------------------------------- # 2. Zabbix Server 服务 (MySQL/MariaDB 后端) # --------------------------------------------------------------------------- zabbix-server: image: zabbix/zabbix-server-mysql:alpine-7.4-latest container_name: zabbix-server restart: always ports: - 10051:10051 environment: DB_SERVER_HOST: zabbix-db MYSQL_DATABASE: ${MYSQL_DATABASE:-zabbix} MYSQL_USER: ${MYSQL_USER:-zabbix} MYSQL_PASSWORD: ${MYSQL_PASSWORD:-zabbix_secret_password} MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-root_secret_password} ZBX_JAVAGATEWAY_ENABLE: false ZBX_CACHESIZE: 128M ZBX_HISTORYCACHESIZE: 128M ZBX_HISTORYINDEXCACHESIZE: 64M ZBX_TRENDCACHESIZE: 64M ZBX_VALUECACHE_SIZE: 256M TZ: Asia/Shanghai volumes: - /etc/localtime:/etc/localtime:ro - zabbix-alertscripts:/usr/lib/zabbix/alertscripts - zabbix-externalscripts:/usr/lib/zabbix/externalscripts networks: - zabbix-net depends_on: zabbix-db: condition: service_healthy # --------------------------------------------------------------------------- # 3. Zabbix Web 前端 (Nginx PHP-FPM) # --------------------------------------------------------------------------- zabbix-web-nginx: image: zabbix/zabbix-web-nginx-mysql:alpine-7.4-latest container_name: zabbix-web-nginx restart: always ports: - 8080:8080 - 8443:8443 environment: DB_SERVER_HOST: zabbix-db MYSQL_DATABASE: ${MYSQL_DATABASE:-zabbix} MYSQL_USER: ${MYSQL_USER:-zabbix} MYSQL_PASSWORD: ${MYSQL_PASSWORD:-zabbix_secret_password} ZBX_SERVER_HOST: zabbix-server PHP_TZ: Asia/Shanghai volumes: - /etc/localtime:/etc/localtime:ro networks: - zabbix-net depends_on: zabbix-db: condition: service_healthy zabbix-server: condition: service_started # --------------------------------------------------------------------------- # 4. Zabbix Agent 2 (监控宿主机自身) # --------------------------------------------------------------------------- zabbix-agent2: image: zabbix/zabbix-agent2:alpine-7.4-latest container_name: zabbix-agent2 restart: always ports: - 10050:10050 privileged: true pid: host environment: ZBX_SERVER_HOST: zabbix-server,127.0.0.1 ZBX_HOSTNAME: Zabbix server volumes: - /etc/localtime:/etc/localtime:ro - /var/run/docker.sock:/var/run/docker.sock:ro - /:/host:ro networks: - zabbix-net depends_on: - zabbix-server # ----------------------------------------------------------------------------- # 持久化 Data Volume # ----------------------------------------------------------------------------- volumes: db-data: driver: local zabbix-alertscripts: driver: local zabbix-externalscripts: driver: local # ----------------------------------------------------------------------------- # 网络配置 # ----------------------------------------------------------------------------- networks: zabbix-net: driver: bridge生产部署要点说明环境凭据安全强烈建议在compose.yaml同级目录下新建一个.env文件将密码替换为自定义安全字符串代码段MYSQL_DATABASEzabbix MYSQL_USERzabbix MYSQL_PASSWORDYourStrongDBPassword123! MYSQL_ROOT_PASSWORDYourStrongRootPassword123!性能与缓存优化在zabbix-db中添加了参数--innodb-buffer-pool-size1G在zabbix-server中放大了ZBX_VALUECACHE_SIZE等缓存配置避免中大型监控场景下的缓存瓶颈。健康检查依赖(Healthcheck)使用depends_on: condition: service_healthy确保 MariaDB 完全初始化并准备好接收连接后Zabbix Server 才会启动建表避免首次启动时 Server 因数据库未就绪而频繁崩溃重启。宿主机监控Agent 2 挂载了/var/run/docker.sock和根目录/host:ro并开启pid: host可直接通过官方模板采集宿主机的 CPU、内存、磁盘以及 Docker 容器状态。前端 Web 页面配置登录 Zabbix Web 界面(默认端口8080初始账号密码Admin/zabbix)。点击左侧菜单Data collection-Hosts。找到默认生成的Zabbix server主机(如果禁用状态则启用它)。点击进入配置Host name必须与compose.yaml中环境变量ZBX_HOSTNAME: Zabbix server完全一致(区分大小写)。Interfaces(接口配置)选择Agent类型。DNS name填zabbix-agent2(Docker 服务名/容器名)。Connect to选择DNS。Port10050。保存后等待 1~2 分钟页面上该主机的BX标识变为绿色即代表连接成功。监控外部物理机 / 其他服务器上的 Agent 2如果你是在其他独立服务器上安装了 Zabbix Agent 2需要将其连接回 Docker 运行的 Zabbix Server。1. 外部服务器的zabbix_agent2.conf配置修改 Agent 2 的配置文件(通常位于/etc/zabbix/zabbix_agent2.conf)Ini, TOML# 被动模式允许来自 Zabbix Server 宿主机公网/内网 IP 的轮询请求 Server192.168.1.100 # 主动模式Agent 2 主动向 Zabbix Server 汇报数据 ServerActive192.168.1.100:10051 # 本机标识必须与 Web 界面添加 Host 时的 Host name 完全一致 HostnameWeb-Server-01(注意将192.168.1.100替换为你运行 Zabbix Docker 的宿主机实际 IP)修改后重启外部 Agent 2 服务Bashsystemctl restart zabbix-agent22. 前端 Web 页面添加该主机路径Data collection-Hosts- 点击右上角Create host。Host name填写Web-Server-01(对应 Agent 配置文件中的Hostname)。Templates添加官方模板Linux by Zabbix agent ZBX或System Performance by Zabbix agent。Interfaces- AddAgentIP address填写外部服务器的实际 IP。Connect to选择IP。Port10050。点击Add添加。

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

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

免费获取报价 →
↑