是否有任何工具可用于随时间存储 SMART 数据?

是否有任何工具可用于随时间存储 SMART 数据?

我想开始随着时间的推移存储 SMART 数据,并根据磁盘 ID/序列号查看任何趋势。例如,可以让我每天从磁盘获取一次智能信息并将其放入数据库中。 Linux 中是否已经有这样的工具,还是我必须自己开发一个工具?

答案1

已经有一些工具可以做到这一点,通常作为更通用的监控工具的一部分。我觉得有用的一个是穆宁,其中有一个智能插件跟踪可用属性:

显示 SMART 属性随时间变化的图表

Munin 在许多发行版中都有提供。

smartmontools本身包含一个可以定期记录属性的工具,smartd。您可能会发现这就是您所需要的。

答案2

“自己动手”很容易。每天通过 AWK 脚本运行smartctl -A drive-specifier(以 root 身份),并将输出输出到文件中。

gnuplot适合绘制该文件的图表。

对此稍加扩展,举个例子:-

  1. 放置一个条目来运行以下脚本/etc/cron.daily
#!/bin/sh

# SMART DISK PROCESSING
# =====================
tmpfile=$(mktemp -q)
today=$(date -u +%d-%m-%Y)

smartctl -A /dev/disk/by-id/ata-Samsung_SSD_870_QVO_1TB_S5SVNG0NB22319L > $tmpfile

# Output log as a single line - note "Unknown_Attribute" is "POR_Recovery_Count" [unexpected shutdown]
echo -n $today ', ' >> /var/log/disk-monitor.d/sdb-errors.csv
awk 'NR>=8 && NR<=21 {print $1,",",$2,",",$10,",";}' $tmpfile | tr -d '\n' | sed 's/Unknown_Attribute/POR_Recovery_Count/;s/\,$/\n/' >> /var/log/disk-monitor.d/sdb-errors.csv

exit 0

AWK "NR>=8 && NR<=21" 挑选出正确的行号, print 语句挑选出适当的列;删除tr换行符;sed修复了 SMART 属性问题并添加了一个换行符。

这样,每天都会以日期 [属性 ID、属性名称、属性值]*N 格式将一条记录写入 CSV 日志文件。

07-06-2021 , 5 , Reallocated_Sector_Ct , 0 ,9 , Power_On_Hours , 2900 , ...

  1. 我选择根据需要绘制选定的值[理想情况下为零的值]...我使用的脚本gnuplot script-name如下,
set title "SDA Errors which should be ZERO"
set xdata time
set timefmt "%d-%m-%Y"
set format x "%d/%m"
set datafile separator ","

set colorsequence default

set ytics 2 nomirror tc lt 2
set ylabel 'POR' tc lt 2
set yrange [0:30<*]  
set y2tics 1 nomirror tc lt 1
set y2label 'Errors' tc lt 1
set y2range [-1:10]

set key left top 

set grid ytics lt 0 lw 1 lc rgb "#bbbbbb"
set grid xtics lt 0 lw 1 lc rgb "#bbbbbb"
plot "/var/log/disk-monitor.d/sda-errors.csv" using 1:4 title "Reallocated Sector Count" with lines axes x1y2, '' using 1:13 title "Wear Levelling Count" with lines  axes x1y2, '' using 1:16 title "Used Rsvd Blk Cnt Total" with lines  axes x1y2, '' using 1:19 title "Program Fail Cnt Total" with lines  axes x1y2, '' using 1:22 title "Erase Fail Count Total" with lines  axes x1y2, '' using 1:25 title "Runtime Bad Block" with lines   axes x1y2, '' using 1:28 title "Reported Uncorrect" with lines  axes x1y2, '' using 1:34 title "Hardware ECC Recovered" with lines dt 3  axes x1y2, '' using 1:40 title "POR Recovery Count" with lines dt 1 linetype rgb "green" axes x1y1

pause -1 "Hit any key to continue"

我确信有更好的脚本可用!

答案3

如果您正在寻找更高级的东西,我选择的工具是电讯报+InfluxDB+格拉法纳

  • Telegraf 是一个监控代理,可以从数百来源,包括 SMART 数据
  • InfluxDB 是一个时间序列数据库,针对存储随时间测量的内容进行了优化(即正是这个!)
  • Grafana 连接到 Influx 以显示图表并设置警报

显然还有更多的设置和维护工作,但也有更多的功能和灵活性。例如,您可以让多个设备将其统计数据发送到一台 Influx 服务器。

安装完所有内容后,您可以设置仪表板:

Grafana 仪表板示例

相关内容