시간이 지남에 따라 SMART 데이터 저장을 시작하고 디스크 ID/일련 번호를 기반으로 추세를 확인하고 싶습니다. 예를 들어, 하루에 한 번씩 디스크에서 인텔리전스 정보를 가져와서 데이터베이스에 저장하겠습니다. Linux에 이러한 도구가 이미 있습니까? 아니면 직접 개발해야 합니까?
답변1
답변2
"직접 해보기"는 쉽습니다. AWK 스크립트를 통해 매일 실행하고 smartctl -A drive-specifier
(루트로) 출력을 파일로 인쇄합니다.
gnuplot
이 문서를 차트로 작성하는 데 적합합니다.
이에 대해 조금 확장하면 다음과 같은 예가 있습니다.
- 다음 스크립트를 실행하려면 항목을 배치하세요.
/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
SMART sed
속성 문제를 수정하고 줄바꿈을 추가합니다.
이렇게 하면 날짜[속성 ID, 속성 이름, 속성 값]*N 형식으로 매일 CSV 로그 파일에 기록이 기록됩니다.
07-06-2021 , 5 , Reallocated_Sector_Ct , 0 ,9 , Power_On_Hours , 2900 , ...
- 필요에 따라 선택한 값 [이상적으로는 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 서버로 보내도록 할 수 있습니다.
모든 것이 설치되면 대시보드를 설정할 수 있습니다.