#temperature #prometheus #prometheus-exporter #exporter #block-device #smartctl

app prometheus_smartctl_temperature_exporter

Prometheus smartctl 温度导出器

3个稳定版本

1.1.0 2023年2月22日
1.0.1 2021年8月11日

#1019数据库接口

每月 22 次下载

MIT 协议

115KB
377

Prometheus smartctl 温度导出器

这是一个使用Rust编写的导出器,用于导出由smartctl报告的磁盘温度。

legal stability-stable

Crate cratedown cratelastdown

release tag

Rust build commitssince

Docker build

dockeri.co

这是什么?

此工具在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,所以运行成本极低。

要求

您需要在lsblksmartctl可执行文件中都有$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