docker-compose 部署Zabbix全家桶

docker-compose.yml 文件,包含 PostgreSQL 17、Zabbix Server、Zabbix Web 和 Zabbix Agent 四个服务

version: '3.8'

services:
  postgres:
    image: postgres:17-alpine
    container_name: zabbix-postgres
    restart: unless-stopped
    environment:
      POSTGRES_USER: zabbix
      POSTGRES_PASSWORD: zabbix
      POSTGRES_DB: zabbix
    volumes:
      - postgres-data:/var/lib/postgresql/data
    networks:
      - zabbix-net
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U zabbix"]
      interval: 10s
      timeout: 5s
      retries: 5

  zabbix-server:
    image: zabbix/zabbix-server-pgsql:alpine-7.4-latest
    container_name: zabbix-server
    restart: unless-stopped
    depends_on:
      postgres:
        condition: service_healthy
    environment:
      DB_SERVER_HOST: postgres
      POSTGRES_USER: zabbix
      POSTGRES_PASSWORD: zabbix
      POSTGRES_DB: zabbix
      ZBX_HISTORYSTORAGEURL: ""   # 可选,若使用 TimescaleDB 可配置
      ZBX_CACHESIZE: "256M"
    ports:
      - "10051:10051"   # 用于接收 agent 主动检查数据
    volumes:
      - zabbix-server-export:/var/lib/zabbix/export   # 导出文件
    networks:
      - zabbix-net

  zabbix-web:
    image: zabbix/zabbix-web-nginx-pgsql:alpine-7.4-latest
    container_name: zabbix-web
    restart: unless-stopped
    depends_on:
      - postgres
      - zabbix-server
    environment:
      ZBX_SERVER_HOST: zabbix-server
      DB_SERVER_HOST: postgres
      POSTGRES_USER: zabbix
      POSTGRES_PASSWORD: zabbix
      POSTGRES_DB: zabbix
      PHP_TZ: "Asia/Shanghai"   # 设置时区
    ports:
      - "8080:8080"   # 将 Web 服务映射到主机 8080 端口
    volumes:
      - zabbix-web-fonts:/usr/share/zabbix/assets/fonts   # 字体(可解决中文乱码)
    networks:
      - zabbix-net

  zabbix-agent:
    image: zabbix/zabbix-agent:alpine-7.4-latest
    container_name: zabbix-agent
    restart: unless-stopped
    depends_on:
      - zabbix-server
    environment:
      ZBX_SERVER_HOST: zabbix-server
      ZBX_ACTIVE_ALLOW: "true"   # 允许主动检查
      ZBX_PASSIVE_ALLOW: "true"  # 允许被动检查
    ports:
      - "10050:10050"   # 暴露 agent 端口(被动模式)
    networks:
      - zabbix-net

volumes:
  postgres-data:
  zabbix-server-export:
  zabbix-web-fonts:

networks:
  zabbix-net:
    driver: bridge

使用说明

  1. 启动服务
    在包含该 docker-compose.yml 的目录下执行:

    bash
    docker-compose up -d
  2. 访问 Zabbix Web
    浏览器打开 http://localhost:8080,默认管理员账户:

    • 用户名:Admin

    • 密码:zabbix

  3. 自定义配置

    • 数据库密码:建议修改环境变量中的 POSTGRES_PASSWORD(同时需同步修改 zabbix-server 和 zabbix-web 中的对应变量)。

    • 时区:根据需要调整 PHP_TZ 值(如 Europe/London)。

    • 端口:若主机端口冲突,可修改 ports 映射(如 "80:8080" 将 Web 改为主机 80 端口)。

  4. 数据持久化

PostgreSQL 数据保存在 volume postgres-data 中。 

  • Zabbix 导出文件和 Web 字体也使用了独立 volume,便于备份和迁移。

 

问题:

Get value from agent failed: Cannot establish TCP connection to [[127.0.0.1]:10050]: [111] Connection refused

修改主机接口配置

在 Zabbix Web 界面中:

  • 进入 “配置 → 主机”,点击您的 Agent 主机。

  • 在 “Agent 代理程序接口” 区域:

    • 将 “连接到” 选项由 “IP” 改为 “DNS”(下拉菜单选择)。

    • 在 “DNS名称” 字段中填写 zabbix-agent

    • “IP地址” 字段可以留空(或填写 0.0.0.0,但留空更干净)。

  • 保存配置。

 

posted @ 2026-08-01 00:48  木子欢儿  阅读(18)  评论(0)    收藏  举报