一、Vigil介绍
1.1 Vigil 简介
Vigil 是一个现代、轻量级、开源的服务器监控系统,专注于实时 S.M.A.R.T. 健康状态跟踪,帮助用户提前发现硬盘故障风险。
1.2 Vigil主要特点
- 轻量级代理:采用单个 Go 编译的二进制文件,无外部依赖,几秒内即可部署到任意服务器。
- Docker 服务器支持:中央服务端可通过 Docker 或 Docker Compose 快速容器化部署。
- 快速网页仪表板:基于现代 HTML5/JavaScript 构建,界面即时加载并实时刷新数据。
- 深度分析能力:提供原始 S.M.A.R.T. 属性、温度历史记录及详细的驱动器信息。
- 预测性健康检查:通过高级算法分析硬盘状态,区分正常老化与潜在故障风险。
- 持续监控机制:支持自定义报告间隔,并具备自动重连功能确保监控不中断。
- 内置认证系统:集成安全的用户登录与会话管理,保护监控数据访问。
- 驱动器别名功能:允许为硬盘设置自定义名称(如“Plex Media”或“备份驱动器”),便于识别。
- HBA 控制器兼容:自动识别连接在 SAS HBA(如 LSI SAS3224)后的 SATA 驱动器。
二、本次实践规划
2.1 本地环境规划
本次实践为个人测试环境,操作系统版本为 Ubuntu 24.04.2 LTS。
| hostname | IP地址 | 操作系统版本 | Docker版本 | 部署项目 | 备注 |
|---|---|---|---|---|---|
| jeven | 192.168.3.88 | Ubuntu 24.04.2 LTS | 28.5.0 | Vigil | —— |
2.2 本次实践介绍
1.本次实践部署环境为个人测试环境,生产环境请谨慎;
2.在Docker环境下部署Vigil服务器和硬盘监控系统工具。
三、本地环境检查
3.1 检查Docker服务状态
检查Docker服务是否正常运行,确保Docker正常运行。
root@jeven:~# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; preset: enabled)
Active: active (running) since Thu 2026-02-05 00:27:40 CST; 1s ago
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Main PID: 841698 (dockerd)
Tasks: 65
Memory: 73.5M (peak: 77.1M)
CPU: 975ms
CGroup: /system.slice/docker.service
3.2 检查Docker版本
检查Docker版本
root@jeven:~# docker -v
Docker version 28.5.0, build 887030f
3.3 检查docker compose 版本
检查Docker compose版本,确保2.0以上版本。
root@jeven:~# docker compose version
Docker Compose version v2.39.4
四、拉取Vigil镜像
下载Vigil镜像,执行以下命令:
docker pull ghcr.io/pineappledr/vigil:latest

五、创建Vigil服务端
5.1 创建部署目录
- 创建部署目录
mkdir -p /data/vigil/data && cd /data/vigil
- 在测试环境下,设置目录权限。
chmod -R 777 /data/vigil
5.2 创建Vigil服务端
可选:使用docker-cli方式部署,可参考以下命令:
docker run -d \
--name vigil-server \
--restart unless-stopped \
-p 9080:9080 \
-v /data/vigil/data:/data \
-e ADMIN_PASS=your-secure-password \
ghcr.io/pineappledr/vigil:latest
新建及编辑docker-compose.yaml文件,内容如下:
vim docker-compose.yaml
version: '3.8'
services:
vigil-server:
image: ghcr.io/pineappledr/vigil:latest
container_name: vigil-server
restart: unless-stopped
ports:
- "9080:9080"
volumes:
- /data/vigil/data:/data
environment:
- ADMIN_PASS=your-secure-password
创建Vigil服务端容器:
docker compose up -d

5.3 检查容器状态
检查Vigil服务段容器状态,当看到healthy时候,则容器运行正常。
root@jeven:/data/vigil# docker compose ps
WARN[0000] /data/vigil/docker-compose.yaml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
vigil-server ghcr.io/pineappledr/vigil:latest "./vigil-server" vigil-server About a minute ago Up About a minute (healthy) 0.0.0.0:9080->9080/tcp, [::]:9080->9080/tcp
5.4 检查容器日志
检查Vigil服务端容器日志,确保Vigil Server运行正常。
docker compose logs

六、安装Vigil Agent
6.1 安装Vigil Agent容器
我们在需要被监控的机器上创建Vigil Agent容器,进行采集监控数据。其中--server的IP地址替换为Vigil Server端的IP地址。
docker run -d \
--name vigil-agent \
--net=host \
--privileged \
--restart unless-stopped \
-v /dev:/dev \
ghcr.io/pineappledr/vigil-agent:latest \
--server http://192.168.3.88:9080 \
--interval 60

6.2 检查Vigil Agent容器状态
确保Vigil Agent容器正常启动,如下所示:
root@jeven:/data/vigil# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fdc15bf2218d ghcr.io/pineappledr/vigil-agent:latest "./vigil-agent --ser…" About a minute ago Up About a minute
七、访问Vigil服务面板
7.1 访问初始页
浏览器地址:
http://<个人的服务器IP>9080,访问Vigil初始页。如果无法访问,请确保宿主机的防火墙已关闭或已放行相关端口,对于云服务器还需配置相应的安全组规则。

7.2 登录Vigil面板
使用默认用户名 admin 和在部署文件中通过 ADMIN_PASS 设置的密码,即可登录 Vigil 监控面板。

7.3 查看监控效果
Vigil Agent 必须部署在物理主机上才能监控磁盘健康状态;若在虚拟机中运行,由于虚拟磁盘通常不支持 S.M.A.R.T. 功能,监控面板将显示 “No drives found”。

八、总结
Vigil 通过轻量级架构实现了对物理磁盘 S.M.A.R.T. 健康状态的实时监控,部署简洁且资源占用低。服务端与代理分离的设计,兼顾了集中管理和本地硬件访问的需求。实践验证了其在物理机环境下的有效性,而虚拟机因缺乏真实磁盘支持无法采集数据。该方案适用于家庭服务器、NAS 或小型数据中心等需提前预警硬盘故障的场景。