之前的文章我有提过到我自己组了一台黑群辉,开始用着还不错,我还给网卡刷了 mac 地址,用着还不错。由于开始的时候资料并不是很多,所以研究了一下远程唤醒,这时候发现了一个问题,我的群辉在唤醒的时候偶尔会有无法启动的情况。
然后我一咬牙一跺脚,入手了一台 Dell R730 服务器,开始折腾各种监控方案。最终选择了 Zabbix + Docker 的方案,部署简单、功能强大。
为什么选择 Zabbix
Zabbix 是一个企业级的开源监控解决方案,具备以下优势:
- 支持自动发现网络设备和服务器
- 提供灵活的通知机制,支持邮件、短信、Webhook 等
- 丰富的可视化仪表盘和报表功能
- 支持 Agent 和 SNMP 两种监控方式
环境准备
在开始之前,确保你的服务器已安装 Docker 和 Docker Compose:
# 检查 Docker 版本
docker --version
Docker version 24.0.7, build afdd53b
# 检查 Docker Compose 版本
docker compose version
Docker Compose version v2.23.0
部署 Zabbix
使用 Docker Compose 一键部署 Zabbix Server、Web 界面和数据库:
version: '3.8'
services:
zabbix-db:
image: mysql:8.0
environment:
- MYSQL_DATABASE=zabbix
- MYSQL_USER=zabbix
- MYSQL_PASSWORD=zabbix_pwd
- MYSQL_ROOT_PASSWORD=root_pwd
volumes:
- zabbix-db:/var/lib/mysql
zabbix-server:
image: zabbix/zabbix-server-mysql:latest
environment:
- DB_SERVER_HOST=zabbix-db
- MYSQL_USER=zabbix
- MYSQL_PASSWORD=zabbix_pwd
depends_on:
- zabbix-db
ports:
- "10051:10051"
zabbix-web:
image: zabbix/zabbix-web-nginx-mysql:latest
environment:
- DB_SERVER_HOST=zabbix-db
- MYSQL_USER=zabbix
- MYSQL_PASSWORD=zabbix_pwd
- ZBX_SERVER_HOST=zabbix-server
- PHP_TZ=Asia/Shanghai
depends_on:
- zabbix-server
ports:
- "8080:8080"
volumes:
zabbix-db:
启动服务:
docker compose up -d
配置监控主机
在需要监控的服务器上安装 Zabbix Agent:
# 拉取 Agent 镜像
docker run --name zabbix-agent \
-e ZBX_SERVER_HOST=192.168.1.100 \
-p 10050:10050 \
-d zabbix/zabbix-agent:latest
然后在 Zabbix Web 界面中添加主机,配置模板即可开始监控。
建议使用 hostname 命令确保主机名与 Zabbix 配置中一致,否则 Agent 可能无法连接。
仪表盘与告警
Zabbix 自带丰富的仪表盘功能,可以根据需要自定义监控面板。同时支持设置告警规则,当指标超过阈值时自动发送通知。
告警规则示例
以下是一些常用的告警规则配置:
- CPU 使用率 > 80% 持续 5 分钟
- 内存使用率 > 90%
- 磁盘剩余空间 < 10%
- 服务不可达持续 1 分钟
总结
通过 Docker 部署 Zabbix 大大简化了安装流程,整个监控系统在几分钟内就可以跑起来。对于 homelab 环境来说,这是最经济高效的监控方案之一。