使用 Docker Compose 部署完整 Zabbix 监控栈的详细步骤,包括必要的配置文件和命令,一次性给出:
- 创建项目目录和文件结构
首先,创建一个项目目录,并在其中创建必要的 docker-compose.yml 文件:
mkdir zabbix-stack
cd zabbix-stack
touch docker-compose.yml
此时你的目录结构应该如下:
zabbix-stack/
└── docker-compose.yml
- 配置 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 的时区。
- 启动监控栈
现在,在 zabbix-stack 目录下,执行以下命令启动整个 Zabbix 监控栈:
docker-compose up -d
这个命令会下载必要的 Docker 镜像并启动容器。-d 参数表示在后台运行。
- 访问和验证
Zabbix Web: 打开浏览器,访问 http://localhost:8080。你应该能看到 Zabbix 的登录页面。默认用户名是 Admin,密码是 zabbix (注意大小写)。
检查容器状态: 使用 docker ps 命令查看所有容器的状态,确保所有容器都处于 Up 状态。
查看日志: 如果遇到问题,可以使用 docker logs
命令查看容器的日志,例如:docker logs zabbix-server, docker logs zabbix-web 等。 -
配置 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 监控栈。你可以根据自己的需求,添加更多的监控项,配置告警规则,创建更多图形。