디스크 SMART정보를 웹으로 scrutiny

 

안녕하세요. 달소입니다.

이전에 소개해드린 scrutiny 인데요 기억하시나요?? ㅎㅎ

최근에 시놀로지 디스크정보를 보여주는 프로젝트들이 활발한듯하여 한번 더 공유해봅니다.

 

잘 구축하면 아래와같은 UI를 보실 수 있으실겁니다 ㅎㅎ

 

++Proxmox구축예제는 아래글을 참고하시면 됩니다.(Proxmox + docker-compose)

 디스크 SMART정보를 웹으로 scrutiny - Proxmox에 구축하...[서버 구축(Self-Hosted)] 달소 2024.06.19  안녕하세요 달소입니다.   이번에는 앞서 소개해드린 디스크 SMART정보를 보여주는 scrutiny... 

 

 

소개

 

두 개 이상의 하드 드라이브가 있는 서버를 실행하는 경우 SMART와 smartd데몬에 이미 익숙할 것입니다. 그렇지 않다면 다음과 같이 설명되는 놀라운 오픈 소스 프로젝트입니다.

smartd는 많은 ATA, IDE 및 SCSI-3 하드 드라이브에 내장된 SMART(자체 모니터링, 분석 및 보고 기술) 시스템을 모니터링하는 데몬입니다. SMART의 목적은 하드 드라이브의 신뢰성을 모니터링하고 드라이브 오류를 예측하며 다양한 유형의 드라이브 자체 테스트를 수행하는 것입니다.

이러한 SMART 하드 드라이브 자체 테스트는 영구적인 데이터 손실이 발생하기 전에 결함이 있는 하드 드라이브를 감지하고 교체하는 데 도움이 됩니다. 그러나 다음과 같은 몇 가지 문제가 있습니다 smartd.

  • 100개 이상의 SMART 속성이 있지만 smartd중요 측정항목과 정보 측정항목을 구분하지 않습니다.
  • smartdSMART 속성 내역을 기록하지 않으므로 시간이 지남에 따라 속성이 천천히 저하되는지 확인하기 어려울 수 있습니다.
  • SMART 속성 임계값은 제조업체에서 설정합니다. 어떤 경우에는 이러한 임계값이 설정되지 않거나 너무 높아서 장애가 발생할 드라이브를 감지하는 대신 장애가 발생한 드라이브를 확인하는 데만 사용할 수 있습니다.
  • smartd명령줄 전용 도구입니다. 헤드리스 서버의 경우 웹 UI가 더 가치가 있습니다.

Scrutiny는 제조업체가 제공한 SMART 지표와 실제 고장률을 통합한 하드 드라이브 상태 대시보드 및 모니터링 솔루션입니다.

 

특징

 

Scrutiny는 몇 가지 핵심 기능을 갖춘 간단하지만 집중된 애플리케이션입니다.

  • 웹 UI 대시보드 - 중요한 측정항목에 중점을 둡니다.
  • smartd통합(바퀴를 다시 발명하지 않음)
  • 연결된 모든 하드 드라이브 자동 감지
  • 과거 추세에 대한 SMART 지표 추적
  • 실제 실패율을 사용한 맞춤형 임계값
  • 온도 추적
  • 일체형 Docker 이미지로 제공(단, 수동으로 설치 가능)
  • 웹후크를 통해 구성 가능한 경고/알림
  • (향후) 하드 드라이브 성능 테스트 및 추적

RAID/가상 드라이브

smartctl --scan정밀 조사는 장치/드라이브를 감지하는 데 사용됩니다 .

  • 지원되는 모든 RAID 컨트롤러는 smartctlScrutiny에서 자동으로 지원됩니다.
    • 일부 RAID 컨트롤러는 기본 SMART 데이터를 smartctl다른 컨트롤러로 전달하는 것을 지원하지만 그렇지 않습니다.
    • 경우에 따라 --scan장치 유형을 올바르게 감지하지 못하고 불완전한 SMART 데이터를 반환합니다 . Scrutiny는 구성 파일을 통해 감지된 장치 유형 재정의를 지원합니다. example.collector.yaml을 참조하세요.
  • Docker를 사용하는 경우 다음을 사용하여 RAID 가상 디스크를 컨테이너로 전달 해야 합니다 --device (아래 참조).
    • 이 장치는 /dev/*또는 에 있을 수 있습니다 /dev/bus/*.
    • 확실하지 않은 경우 smartctl --scan호스트에서 실행하고 나열된 모든 장치를 컨테이너에 전달하세요.

도움말은 docs/TROUBLESHOOTING_DEVICE_COLLECTOR.md를 참조하세요 .

 

도커

도커도 지원합니다!

Docker를 사용하는 경우 시작하는 것은 다음 명령을 실행하는 것만큼 간단합니다.

docker-compose 파일은 docker/example.omnibus.docker-compose.yml을 참조하세요 .
  • /run/udevScrutiny 수집기에 장치 메타데이터에 대한 액세스 권한을 제공하는 데 필요합니다.
  • --cap-add SYS_RAWIO smartctl장치의 SMART 데이터를 쿼리할 수 있는 권한을 허용하는 데 필요합니다.
    •  노트: NVMe 드라이브 가 있는 경우 드라이브 --cap-add SYS_ADMIN도 추가해야 합니다. 문제 #26 참조 
  • --device컨테이너 내에서 하드 디스크 장치에 액세스할 수 있도록 하려면 항목이 필요합니다.
  • ghcr.io/analogj/scrutiny:master-omnibus웹앱 서버(프런트엔드 및 API)와 SMART 메트릭 수집기가 모두 포함된 옴니버스 이미지입니다. (아래 참조)

허브/스포크 모드배포

Omnibus 이미지(태그 아래 사용 가능) 외에도 latest허브/스포크 모드로 배포할 수 있으며, 여기에는 3개의 다른 Docker 이미지가 필요합니다.

  • ghcr.io/analogj/scrutiny:master-collector- Scrutiny 데이터 수집기, smartctl바이너리 및 cron 유사 스케줄러가 포함되어 있습니다. 각 서버에서 하나의 수집기를 실행할 수 있습니다.
  • ghcr.io/analogj/scrutiny:master-web- 웹 UI 및 API가 포함되어 있습니다. 컨테이너 하나만 필요함
  • influxdb:2.2- SMART 데이터를 유지하기 위해 웹 컨테이너에서 사용되는 InfluxDB 이미지. 컨테이너는 하나만 필요합니다. docs/TROUBLESHOOTING_INFLUXDB.md를 참조하세요.
docker-compose 파일은 docker/example.hubspoke.docker-compose.yml을 참조하세요 .

 

docker run --rm -p 8086:8086 \
  -v `pwd`/influxdb2:/var/lib/influxdb2 \
  --name scrutiny-influxdb \
  influxdb:2.2

docker run --rm -p 8080:8080 \
  -v `pwd`/scrutiny:/opt/scrutiny/config \
  --name scrutiny-web \
  ghcr.io/analogj/scrutiny:master-web

docker run --rm \
  -v /run/udev:/run/udev:ro \
  --cap-add SYS_RAWIO \
  --device=/dev/sda \
  --device=/dev/sdb \
  -e COLLECTOR_API_ENDPOINT=http://SCRUTINY_WEB_IPADDRESS:8080 \
  --name scrutiny-collector \
  ghcr.io/analogj/scrutiny:master-collector

 

알림

Scrutiny supports sending SMART device failure notifications via the following services:

  • Custom Script (data provided via environmental variables)
  • Email
  • Webhooks
  • Discord
  • Gotify
  • Hangouts
  • IFTTT
  • Join
  • Mattermost
  • ntfy
  • Pushbullet
  • Pushover
  • Slack
  • Teams
  • Telegram
  • Tulip

 

 

더 자세한 내용은 아래 깃허브를 참고해주세요.

 GitHub - AnalogJ/scrutiny: Hard Drive S.M.A.R.T Monitoring, Historical Trends & Real World Failure Thresholdsgithub.comHard Drive S.M.A.R.T Monitoring, Historical Trends & Real World Failure Thresholds - AnalogJ/scrutiny