리셋 되지 말자

[CentOS] smartd에서 mail, mailx 사용해 메일 보내기 - 2 본문

Linux Tips

[CentOS] smartd에서 mail, mailx 사용해 메일 보내기 - 2

kyeongjun-dev 2021. 7. 22. 13:29

smartmontools 설치

# yum -y install smartmontools

smartctl 명령어로 disk가 인식되는지 확인

# smartctl --scan
/dev/sda -d scsi # /dev/sda, SCSI device
/dev/sdb -d scsi # /dev/sdb, SCSI device
/dev/sdc -d scsi # /dev/sdc, SCSI device
/dev/sdd -d scsi # /dev/sdd, SCSI device
/dev/sde -d scsi # /dev/sde, SCSI device
/dev/sdf -d scsi # /dev/sdf, SCSI device
/dev/sdg -d scsi # /dev/sdg, SCSI device
/dev/sdh -d scsi # /dev/sdh, SCSI device
/dev/sdi -d scsi # /dev/sdi, SCSI device
/dev/sdj -d scsi # /dev/sdj, SCSI device
/dev/sdk -d scsi # /dev/sdk, SCSI device

여기부터가 중요

smartmontool을 daemon으로 시작하면, /etc/smartmontools/smartd.conf 설정 파일을 기반으로 실행된다.

- smartd.conf 파일 내용 (하단의 주석처리된 부분을 살펴보면 다양한 옵션 예제를 확인할 수 있다.)

DEVICESCAN -H -m root -M exec /usr/libexec/smartmontools/smartdnotify -n standby,10,q

저 줄만 주석처리가 안되어 있는걸 확인할 수 있다. 대충 해석해보면

1. DEVICESCAN을 지정하면 전체 디스크를 모니터링 한다. ( /dev/sda 식으로 특정 디스크 지정 가능)
2. -H 옵션으로 디스크의 Health 체크를 한다.
3. -m 옵션은 mail을 보낼 계정(?)을 지정한다.
4. -M 옵션은 다양한 옵션이 있는데, 뒤에 exec 가 오면 해당 파일을 실행한다는 것이다.

- smartnotify 파일 내용

# cat /usr/libexec/smartmontools/smartdnotify 
#! /bin/sh

# Send mail
echo "$SMARTD_MESSAGE" | mail -s "$SMARTD_FAILTYPE" "$SMARTD_ADDRESS"

# Notify desktop user
MESSAGE="SMART Disk monitor:"
case "$SMARTD_FAILTYPE" in
    "EmailTest"|"Health"|"Temperature"|"Usage")
        ;;
    *)
#       "CurrentPendingSector",       // 10
#       "OfflineUncorrectableSector", // 11
#       "FailedReadSmartErrorLog",    // 7
#       "ErrorCount",                 // 4
#       "FailedReadSmartData",        // 6
#       "FailedHealthCheck",          // 5
#       "FailedOpenDevice",           // 9
#       "SelfTest",                   // 3
#       "FailedReadSmartSelfTestLog", // 8
      exit 0
esac

# direct write to terminals, do not use 'wall', because we don't want its ugly header
for t in $(who | awk '{ print $2; }' | grep -e '^tty' -e '^pts/')
do
  echo "$MESSAGE
$SMARTD_MESSAGE" >/dev/$t 2>/dev/null ||:
done

상단에 Send mail을 보면 이전 게시물에서 mail 보내는 명령과 비슷한걸 볼 수 있다. ( -v 옵션 차이)

[root@server vagrant]# echo "vagrant-mail content" | mail -v -s "vagrant-maile subject" kimkyeongjun273@gmail.com

- smartnotify 파일 수정

#! /bin/sh

# Send mail
echo "$SMARTD_MESSAGE" | mail -v -s "$SMARTD_FAILTYPE" "$SMARTD_ADDRESS"

- smartd.conf 파일 수정

DEVICESCAN -M test -m kimkyeongjun273@gmail.com -M exec /usr/libexec/smartmontools/smartdnotify -n standby,10,q

앞에 -H 를 제거하고, -M test를 추가해서 test를 진행한다. -m 옵션 뒤에는 root가 아닌 메일을 보낼 계정을 지정한다.

- smartd 재시작 or 시작

# systemctl restart smartd

- 메일 수신 확인

디스크가 11개라서 11개의 메일이 도착한걸 확인할 수 있다.

Comments