Docker Compose 部署 Zabbix 监控栈

使用 Docker Compose 部署完整 Zabbix 监控栈的详细步骤,包括必要的配置文件和命令,一次性给出:

  1. 创建项目目录和文件结构

首先,创建一个项目目录,并在其中创建必要的 docker-compose.yml 文件:

mkdir zabbix-stack
cd zabbix-stack
touch docker-compose.yml

此时你的目录结构应该如下:

zabbix-stack/
└── docker-compose.yml
  1. 配置 docker-compose.yml

将以下配置粘贴到 docker-compose.yml 文件中。这个文件定义了整个 Zabbix 监控栈的服务,包括 zabbix-server, zabbix-web-nginx-mysql, zabbix-agent。同样使用 MySQL 作为 Zabbix Server 的数据库。

version: "3.8"

services:
  mysql-server:
    image: mysql:8.0
    container_name: zabbix-mysql-server
    restart: always
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: YOUR_MYSQL_ROOT_PASSWORD # 请替换为你的 MySQL root 密码
      MYSQL_DATABASE: zabbix
      MYSQL_USER: zabbix
      MYSQL_PASSWORD: YOUR_ZABBIX_MYSQL_PASSWORD # 请替换为你的 Zabbix MySQL 密码
    volumes:
      - zabbix_db_data:/var/lib/mysql
    networks:
      - zabbix_net

  zabbix-server:
    image: zabbix/zabbix-server-mysql:latest
    container_name: zabbix-server
    ports:
      - "10051:10051"
    environment:
      ZBX_DB_SERVER: mysql-server
      ZBX_DB_PORT: 3306
      ZBX_DB_USER: zabbix
      ZBX_DB_PASSWORD: YOUR_ZABBIX_MYSQL_PASSWORD # 请替换为你的 Zabbix MySQL 密码
      ZBX_STARTPOLLERS: 50  # 根据实际情况调整
      ZBX_STARTTRAPPERS: 50 # 根据实际情况调整
      ZBX_STARTDISCOVERERS: 50 # 根据实际情况调整
      ZBX_STARTPROCESSES: 100 # 根据实际情况调整
      ZBX_TIMEOUT: 15
      ZBX_STARTPINGERS: 50
    restart: always
    depends_on:
      - mysql-server
    networks:
      - zabbix_net

  zabbix-web:
    image: zabbix/zabbix-web-nginx-mysql:latest
    container_name: zabbix-web
    ports:
      - "8080:8080"
    environment:
      ZBX_SERVER_HOST: zabbix-server
      ZBX_DB_SERVER: mysql-server
      ZBX_DB_PORT: 3306
      ZBX_DB_USER: zabbix
      ZBX_DB_PASSWORD: YOUR_ZABBIX_MYSQL_PASSWORD  # 请替换为你的 Zabbix MySQL 密码
      PHP_TZ: "Asia/Shanghai" #设置时区
    restart: always
    depends_on:
      - zabbix-server
    networks:
      - zabbix_net

  zabbix-agent:
    image: zabbix/zabbix-agent:latest
    container_name: zabbix-agent
    restart: always
    ports:
      - "10050:10050"
    environment:
      ZBX_SERVER_HOST: zabbix-server
      ZBX_HOSTNAME: zabbix-agent-docker # agent 主机名
    networks:
      - zabbix_net

volumes:
  zabbix_db_data:

networks:
  zabbix_net:

注意:

请务必将 YOUR_MYSQL_ROOT_PASSWORD 和 YOUR_ZABBIX_MYSQL_PASSWORD 替换为你实际的 MySQL root 密码和 Zabbix MySQL 密码。

ZBX_STARTPOLLERS, ZBX_STARTTRAPPERS, ZBX_STARTDISCOVERERS,ZBX_STARTPROCESSES, ZBX_STARTPINGERS 可以根据实际情况调整,当监控的机器数量很多的时候,可以适当调大。

Zabbix 镜像默认会创建数据库和表,无需手动创建。

PHP_TZ: "Asia/Shanghai" 用来设置 zabbix web 的时区。
  1. 启动监控栈

现在,在 zabbix-stack 目录下,执行以下命令启动整个 Zabbix 监控栈:

docker-compose up -d

这个命令会下载必要的 Docker 镜像并启动容器。-d 参数表示在后台运行。

  1. 访问和验证

    Zabbix Web: 打开浏览器,访问 http://localhost:8080。你应该能看到 Zabbix 的登录页面。默认用户名是 Admin,密码是 zabbix (注意大小写)。

    检查容器状态: 使用 docker ps 命令查看所有容器的状态,确保所有容器都处于 Up 状态。

    查看日志: 如果遇到问题,可以使用 docker logs 命令查看容器的日志,例如:docker logs zabbix-server, docker logs zabbix-web 等。

  2. 配置 Zabbix (简单步骤)

    登录 Zabbix Web: 使用默认用户名和密码 (Admin/zabbix) 登录 Zabbix Web 界面。

    添加主机:

    点击 “Configuration” -> “Hosts”。
    
    点击 “Create host”。
    
    填写主机信息:
    
        Host name: 例如 zabbix-agent-docker (这里需要和 zabbix agent 容器中设置的环境变量 ZBX_HOSTNAME 一致)。
    
        Visible name: 易读的主机名,例如 Zabbix Agent Container。
    
        Groups: 选择一个或多个主机组。
    
        Interfaces: 点击 "Add" 选择 "Agent",并输入 172.17.0.1 (这是 Docker 网桥的 IP,确保容器之间可以通信)。端口为 10050。
    
    点击 "Add"。
    

    添加监控项:

    选择刚刚创建的主机,点击“Items”。
    
    点击 “Create item” 来添加监控项,例如:
    
        Name: 例如 CPU Usage
    
        Type: 选择 "Zabbix agent"。
    
        Key: 例如 system.cpu.load[,avg1]
    
        Type of information: 选择Numeric (float)
    
        Units: 选择 %。
    
    点击 "Add"。
    
    添加其他监控项,例如:内存使用率、磁盘空间使用率等。Zabbix agent 提供了很多监控项, 可以根据实际情况添加。
    

    添加触发器:

    选择刚刚创建的主机,点击 "Triggers"。
    
    点击 "Create trigger"。
    
    填写触发器信息,例如:
    
        Name: 例如 CPU Usage High
    
        Expression: 例如 {zabbix-agent-docker:system.cpu.load[,avg1].avg(5m)}>80 (表示平均CPU 5分钟负载超过80%触发)
    
    点击 "Add"。
    

    添加图形:

    选择刚刚创建的主机,点击 "Graphs"。
    
    点击 "Create Graph"。
    
    填写图形信息,选择需要显示的监控项
    
    点击 "Add"。
    

完整步骤总结

    创建项目目录和文件结构。

    配置 docker-compose.yml (包含 Zabbix server, web, agent 和 mysql)。

    运行 docker-compose up -d。

    验证 Zabbix Web 界面是否可以访问。

    在 Zabbix Web 界面中添加主机和监控项。

至此,你已经成功部署了一个 Zabbix 监控栈。你可以根据自己的需求,添加更多的监控项,配置告警规则,创建更多图形。