시간이 지남에 따라 SMART 데이터를 저장하는 도구가 있습니까?

시간이 지남에 따라 SMART 데이터를 저장하는 도구가 있습니까?

시간이 지남에 따라 SMART 데이터 저장을 시작하고 디스크 ID/일련 번호를 기반으로 추세를 확인하고 싶습니다. 예를 들어, 하루에 한 번씩 디스크에서 인텔리전스 정보를 가져와서 데이터베이스에 저장하겠습니다. Linux에 이러한 도구가 이미 있습니까? 아니면 직접 개발해야 합니까?

답변1

일반적으로 보다 일반적인 모니터링 도구의 일부로 이를 수행하는 도구가 이미 있습니다. 내가 유용하다고 생각하는 것 중 하나는무닌, 그것 중 하나스마트 플러그인추적에 사용 가능한 속성:

시간 경과에 따른 SMART 속성의 변화를 보여주는 그래프

Munin은 다양한 배포판으로 제공됩니다.

smartmontools자체적으로 속성을 정기적으로 기록할 수 있는 도구가 포함되어 있습니다.smartd. 이것이 당신에게 필요한 것임을 알 수 있습니다.

답변2

"직접 해보기"는 쉽습니다. AWK 스크립트를 통해 매일 실행하고 smartctl -A drive-specifier(루트로) 출력을 파일로 인쇄합니다.

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 문은 적절한 열을 선택하여 trSMART sed속성 문제를 수정하고 줄바꿈을 추가합니다.

이렇게 하면 날짜[속성 ID, 속성 이름, 속성 값]*N 형식으로 매일 CSV 로그 파일에 기록이 기록됩니다.

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

  1. 필요에 따라 선택한 값 [이상적으로는 0 값]을 플롯하기로 결정했습니다. 제가 사용한 스크립트 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

좀 더 발전된 것을 찾고 있다면 제가 선택한 도구는전신+인플럭스DB+그라파나.

  • Telegraf는 다음에서 사용 가능한 모니터링 에이전트입니다.수백SMART 데이터를 포함한 소스
  • InfluxDB는 시간에 따라 측정된 콘텐츠를 저장하는 데 최적화된 시계열 데이터베이스입니다(정확히 그렇습니다!).
  • Grafana는 Influx에 연결하여 차트를 표시하고 알림을 설정합니다.

확실히 더 많은 설정과 유지 관리가 필요하지만 기능과 유연성도 더 뛰어납니다. 예를 들어, 여러 장치가 통계를 Influx 서버로 보내도록 할 수 있습니다.

모든 것이 설치되면 대시보드를 설정할 수 있습니다.

Grafana 대시보드 예시

관련 정보