之前的文章我有提过到我自己组了一台黑群辉,开始用着还不错,我还给网卡刷了 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 环境来说,这是最经济高效的监控方案之一。

ChenYun
ChenYun
Software Developer · 热爱折腾 Linux、Docker 和后端架构