smartd S.M.A.R.T 监控的 WebUI
[!NOTE] Scrutiny 仍在开发中,尚有一些不完善之处。
[!NOTE] Scrutiny 仍在开发中,尚有一些不完善之处。
如果您运行的服务器带有多个硬盘,您可能已经熟悉 S.M.A.R.T 和 smartd 守护进程。如果不熟悉,以下是对这个出色开源项目的描述:
smartd 是一个守护进程,用于监控许多 ATA、IDE 和 SCSI-3 硬盘中内置的自我监控、分析和报告技术(S.M.A.R.T)系统。S.M.A.R.T 的目的是监控硬盘的可靠性、预测硬盘故障,并执行不同类型的硬盘自检。
这些 S.M.A.R.T 硬盘自检可以帮助您在硬盘导致永久性数据丢失之前检测并更换故障硬盘。然而,smartd 存在一些问题:
Scrutiny 是一个硬盘健康仪表盘与监控解决方案,将制造商提供的 S.M.A.R.T 指标与实际故障率相结合。
Scrutiny 是一个简单但专注的应用程序,具有以下几个核心功能:
Scrutiny 运行后,你可以在浏览器中打开 http://localhost:8080 查看仪表板。
http://localhost:8080如果你使用的是 omnibus 镜像,收集器应该已经运行,仪表板会填充 Scrutiny 检测到的所有驱动器信息。收集器配置为每天运行一次,但你可以通过运行以下命令手动触发。
对于使用 Docker Hub/Spoke 部署或手动安装的用户:初始状态下仪表板为空。首次运行收集器后,你将看到所有硬盘及其当前 SMART 状态的列表。
docker exec scrutiny /opt/scrutiny/bin/scrutiny-collector-metrics run
Scrutiny 使用 smartctl --scan 检测设备/驱动器。
smartctl 支持的 RAID 控制器均会被 Scrutiny 自动支持。smartctl,但其他控制器不支持。--scan 无法正确检测设备类型,会返回https://github.com/AnalogJ/scrutiny/issues/45%E3%80%82Scrutiny 支持通过配置文件覆盖检测到的设备类型:参见 https://github.com/AnalogJ/scrutiny/blob/master/example.collector.yaml--device 将 RAID 虚拟磁盘传递到容器中(见下文)/dev/* 或 /dev/bus/* 目录下。smartctl --scan,并将所有列出的设备传递给容器。有关帮助,请参见 docs/TROUBLESHOOTING_DEVICE_COLLECTOR.md
[!IMPORTANT] 使用
latest-标签存在风险,因为它可能在未经警告的情况下更新您的镜像。最佳实践是固定特定版本。Scrutiny 使用语义化版本标签发布版本,因此您可以使用诸如v0.8.2-omnibus、v0.8-web、v0-collector等标签。有关所有镜像标签的列表,请参见 https://github.com/AnalogJ/scrutiny/pkgs/container/scrutiny/versions?filters%5Bversion_type%5D=tagged
如果使用 Docker,只需运行以下命令即可快速开始:
有关 docker-compose 文件,请参见 https://github.com/AnalogJ/scrutiny/blob/master/docker/example.omnibus.docker-compose.yml
docker run -p 8080:8080 -p 8086:8086 --restart unless-stopped \
-v `pwd`/scrutiny:/opt/scrutiny/config \
-v `pwd`/influxdb2:/opt/scrutiny/influxdb \
-v /run/udev:/run/udev:ro \
--cap-add SYS_RAWIO \
--device=/dev/sda \
--device=/dev/sdb \
--name scrutiny \
ghcr.io/analogj/scrutiny:latest-omnibus
/run/udev 是必要的,以提供 Scrutiny 收集器访问您的设备元数据--cap-add SYS_RAWIO 是必要的,以允许 smartctl 有权限查询设备的 SMART 数据[!NOTE] 如果您有 NVMe 驱动器,还必须添加
--cap-add SYS_ADMIN。参见 issue https://github.com/AnalogJ/scrutiny/issues/26#issuecomment-696817130
--device 条目是必需的,以确保硬盘设备可在容器内访问。ghcr.io/analogj/scrutiny:latest-omnibus 是一个全能镜像,包含 Web 应用服务器(前端和 API)以及 SMART 指标收集器(见下文)除了全能镜像(在 latest 标签下可用)外,您还可以以中心/分支模式部署,这需要另外 3 个 Docker 镜像:
ghcr.io/analogj/scrutiny:latest-collector - 包含 Scrutiny 数据收集器、smartctl 二进制文件和类 cron 调度器。您可以在每台服务器上运行一个收集器。ghcr.io/analogj/scrutiny:latest-web - 包含 Web UI 和 API。只需一个容器。influxdb:2.8 - InfluxDB 镜像,供 Web 容器用于持久化 SMART 数据。只需一个容器。参见 docs/TROUBLESHOOTING_INFLUXDB.md有关 docker-compose 文件,请参见 https://github.com/AnalogJ/scrutiny/blob/master/docker/example.hubspoke.docker-compose.yml
docker run -p 8086:8086 --restart unless-stopped \
-v `pwd`/influxdb2:/var/lib/influxdb2 \
--name scrutiny-influxdb \
influxdb:2.8
docker run -p 8080:8080 --restart unless-stopped \
-v `pwd`/scrutiny:/opt/scrutiny/config \
--name scrutiny-web \
ghcr.io/analogj/scrutiny:latest-web
docker run --restart unless-stopped \
-v /run/udev:/run/udev:ro \
--cap-add SYS_RAWIO \
--device=/dev/sda \
--device=/dev/sdb \
-e COLLECTOR_API_ENDPOINT=http://SCRUTINY_WEB_IPADDRESS:8080 \
--name scrutiny-collector \
ghcr.io/analogj/scrutiny:latest-collector
有关说明,请参见 docs/INSTALL_ROOTLESS_PODMAN.md
有关示例,请查看 example.scrutiny.yml 中的 notify.urls 部分。
有关更多信息和故障排除,请参阅 TROUBLESHOOTING_NOTIFICATIONS.md 文件。
您可以通过向通知健康检查 API 发送空负载来测试通知配置是否正确。
curl -X POST http://localhost:8080/api/health/notify
Scrutiny 提供了多种方法来将日志级别更改为调试模式并生成日志文件。
您可以使用环境变量为 Web 服务器启用调试日志和/或日志文件:
DEBUG=true
SCRUTINY_LOG_FILE=/tmp/web.log
您可以在配置文件中配置日志级别和日志文件:
log:
file: '/tmp/web.log'
level: DEBUG
如果您不使用 docker,可在启动时向 Web 服务器传递 CLI 参数:
scrutiny start --debug --log-file /tmp/web.log
您可以使用环境变量为收集器启用调试日志和/或日志文件:
DEBUG=true
COLLECTOR_LOG_FILE=/tmp/collector.log
如果您不使用 docker,可在启动时向收集器传递 CLI 参数:
scrutiny-collector-metrics run --debug --log-file /tmp/collector.log
| 架构名称 | 二进制文件 | Docker |
|---|---|---|
| linux-amd64 | :white_check_mark: | :white_check_mark: |
| linux-arm-5 | :white_check_mark: | |
| linux-arm-6 | :white_check_mark: | |
| linux-arm-7 | :white_check_mark: | 仅 web/collector。参见 https://github.com/AnalogJ/scrutiny/issues/236 |
| linux-arm64 | :white_check_mark: | :white_check_mark: |
| freebsd-amd64 | :white_check_mark: | |
| macos-amd64 | :white_check_mark: | :white_check_mark: |
| macos-arm64 | :white_check_mark: | :white_check_mark: |
| windows-amd64 | :white_check_mark: | 开发中,参见 https://github.com/AnalogJ/scrutiny/issues/15 |
| windows-arm64 | :white_check_mark: |
有关如何开发和贡献至 Scrutiny 代码库的说明,请参阅 CONTRIBUTING.md。
发挥您的能力,然后提交拉取请求。我们欢迎拉取请求!
如果您发现文档有不足之处,请帮助我们更新此 README.md。如果您没有时间参与 Scrutiny 的开发,但发现了我们应该了解的问题,请提交 issue。
我们使用 SemVer 进行版本控制。有关可用版本,请参阅此仓库的标签。
Scrutiny 的实现离不开我的 https://github.com/***/AnalogJ/ 的帮助。
他们阅读了一篇简单的 https://github.com/***/AnalogJ/%EF%BC%8C%E5%B9%B6%E5%86%B3%E5%AE%9A%E4%BF%A1%E4%BB%BB%E5%B9%B6%E8%B5%84%E5%8A%A9%E4%B8%80%E4%BD%8D%E7%B4%A0%E6%9C%AA%E8%B0%8B%E9%9D%A2%E7%9A%84%E5%BC%80%E5%8F%91%E8%80%85%E3%80%82%E8%BF%99%E6%98%AF%E4%B8%80%E6%AC%A1%E4%BB%A4%E4%BA%BA%E5%85%B4%E5%A5%8B%E4%B8%94%E6%97%A0%E6%AF%94%E8%B0%A6%E5%8D%91%E7%9A%84%E7%BB%8F%E5%8E%86%E3%80%82
如果您认为 Scrutiny 有价值,请考虑 https://github.com/***/AnalogJ/
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
不支持 push
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务