3个稳定版本
1.1.0 | 2023年2月22日 |
---|---|
1.0.1 | 2021年8月11日 |
#1019 在 数据库接口
每月 22 次下载
115KB
377 行
Prometheus smartctl 温度导出器
这是一个使用Rust编写的导出器,用于导出由smartctl报告的磁盘温度。
这是什么?
此工具在Prometheus请求时,通过lsblk
命令列举您的磁盘,并对每个类型的磁盘块设备执行smartctl -a -j
命令。然后,它提取温度并以有效的Prometheus格式呈现,如下所示
# HELP smartctl_device_temperature device temperature as reported by smartctl
# TYPE smartctl_device_temperature gauge
smartctl_device_temperature{device="Samsung_SSD_840_EVO_250GB_S1DBNSBF380127V"} 39
smartctl_device_temperature{device="Samsung_SSD_870_QVO_2TB_S5SUNF0R111858P"} 37
smartctl_device_temperature{device="Samsung_SSD_870_QVO_2TB_S5SUNF0R111863B"} 38
smartctl_device_temperature{device="OCZ-VERTEX3_OCZ-90RJ51213OH12OYW"} 30
smartctl_device_temperature{device="CT120BX500SSD1_1915E17BC591"} 48
smartctl_device_temperature{device="Samsung_SSD_870_QVO_2TB_S5SUNF0R111124X"} 38
为什么
我需要修复我的ZFS阵列,并担心由于持续操作而使磁盘过热。不幸的是,虽然smartctl
公开了磁盘温度,但我无法以简单的方式将其导入Prometheus,所以我最终编写了一个专门的Rust进程来完成这项工作。这可能是过度设计,但因为是Rust,所以运行成本极低。
要求
您需要在lsblk
和smartctl
可执行文件中都有$PATH
。此外,由于smartctl
需要root权限,您需要以root身份(或使用“ prepend sudo”选项)运行工具。哦,您还需要Rust来编译此工具。您可以使用Quentin McGaw提供的docker镜像,因为它为您做了一切。
选项
选项 | 必填 | 接受值 | 默认值 | 多个 | 描述 |
---|---|---|---|---|---|
-a |
否 | - | 否 | 否 | 在smartctl 命令前添加sudo 。当不需要以root身份运行导出器时很有用。 |
-v |
否 | - | 否 | 否 | 启用详细日志记录。对于故障排除很有用。 |
-l |
否 | 任何有效IP | 0.0.0.0 |
否 | 监听的IP地址。默认监听所有设备。 |
-p |
否 | 任何有效TCP端口 | 9587 | 否 | 工具打开的TCP端口。必须空闲。 |
-e |
否 | 任何有效正则表达式 | - | 是 | 要从分析中排除的正则表达式。例如,z.* 排除了/dev/zXX磁盘(在我的情况下,这些是ZFS虚拟块设备)。对于避免有关不支持磁盘的警告很有用。 |
嗨,工具显示它不支持我的硬盘!我该怎么做?
smartctl
的输出很大程度上取决于硬盘型号。如果你的硬盘不受支持(如工具所示),你只需要执行以下命令(X 是你的硬盘)并打开一个 issue,其中包含生成的 json 文件:sudo systemctl - - /dev/sdX
。我将尽快更新工具以支持你的硬盘。
依赖项
~16–29MB
~512K SLoC