글 수 367
이번 포스팅에서는 hddtemp 패키지와 mrtg를 이용한 하드디스크 온도 모니터링 방법을 소개합니다.
- 전제조건 : mrtg가 셋팅되어 정상작동 하고 있을 것
순서가 반대로 되었지만 나중에 mrtg와 snmp에 대한 포스팅도 작성할 예정입니다.
● hddtemp 패키지
하드디스크의 온도를 알려주는 패키지입니다. 메인보드에서 반드시 S.M.A.R.T를 지원해야 한다는 전제조건이 있네요. 설치는 Fedora의 경우 yum 으로 간단하게 설치할 수 있습니다.
# yum list hddtemp
hddtemp.i386 0.3-0.15.beta15.fc9 installed
저의 경우엔 이미 설치를 하였기 때문에 위처럼 나오지만 설치가 안되신 분들은 아래 명령을 이용하여 설치할 수가 있습니다.
# yum install hddtemp
특별한 의존성 패키지도 없기 때문에 hddtemp만 설치될 것입니다. 명령은 "hddtemp"이고 아래와 같은 옵션으로 간단하게 온도를 체크할 수 있습니다. 저의 경우엔 SATA 하드디스크 3개가 장착되어 있기 때문에 디스크 디바이스가 "/dev/sda, /dev/sdb, /dev/sdc"이므로 디바이스 명을 인수로 주었습니다.
IDE방식은 /dev/hdx 형식으로 되어 있는 경우도 있으니 해당 머신의 디스크 디바이스를 확인해 주세요.
# hddtemp /dev/sda
/dev/sda: Hitachi HDP725032GLAT80: 35°C
# hddtemp /dev/sdb
/dev/sdb: WDC WD10EACS-00D6B0: 31°C
# hddtemp /dev/sdc
/dev/sdc: ST31000340AS: 31°C
제 리눅스 박스의 하드디스크는 디스크 장착베이에 팬이 달려있는 놈이라서 그런지 온도가 그렇게 높지 않네요!!
이제 mrtg에서 계산 하기 편하도록 하드디스크 모델명이나 단위는 빼고 숫자만 출력해보도록 하겠습니다.
# hddtemp -n /dev/sda
35
-n 옵션을 주니 간단하게 해결되네요.
아래는 mrtg의 환경설정 부분입니다. mrtg.cfg 파일을 수정하기 전에는 백업을 꼭 잊지마셔요;;
mrtg.cfg 파일은 yum을 이용하여 설치하였을 경우 디폴트로 /etc/mrtg/mrtg.cfg 에 존재합니다.
Target[hddtemp_sda]: `/usr/sbin/hddtemp -n /dev/sda`
WithPeak[hddtemp_sda]: my
MaxBytes[hddtemp_sda]: 100
Title[hddtemp_sda]: IDE HDD Temperature(/dev/sda)
Options[hddtemp_sda]: absolute,gauge,nopercent,noinfo
YLegend[hddtemp_sda]: Temperature
LegendI[hddtemp_sda]: Temperature:
LegendO[hddtemp_sda]:
Legend1[hddtemp_sda]: HDD Temperature in Degress Celcius
Legend2[hddtemp_sda]:
ShortLegend[hddtemp_sda]: C
PageTop[hddtemp_sda]: <H1>IDE HDD Temperature(/dev/sda)</H1>
위 내용을 추가해주시면 됩니다.
mrtg에 지식이 있으신 분은 자세한 설정을 바꾸셔도 되고 자신 없는 분들은 위 설정을 복사해서 쓰시면 될 겁니다. 하드디스크가 여러개이신 분들은 "hddtemp_sda" 부분을 수정하셔서 디스크의 갯수만큼 복사해주시면 됩니다.
설정이 끝났으면 인덱스 페이지를 새로 만들어 주어야죠 ?
# indexmaker /etc/mrtg/mrtg.cfg > /var/www/mrtg/index.html
인덱스 파일의 경로등은 적절하게....
단.. 문제점이 있습니다. mrtg를 실행시켜 보면 아래와 같은 에러메시지가 출력됩니다. 뭐 특별히 신경쓰지 않아도 된다고 적혀있고 실제로 모니터링도 잘 되지만 문제는 cron에 등록된 mrtg가 실행될때마다 에러가 발생하니 메일박스에 아래 메시지가 계속 전송된다는 거죠.
2008-09-27 20:15:01: WARNING: Problem with External get '/usr/sbin/hddtemp -n
/dev/sda': Expected a Number for 'out' but nothing'
2008-09-27 20:15:01: WARNING: Problem with External get '/usr/sbin/hddtemp -n
/dev/sdb': Expected a Number for 'out' but nothing'
2008-09-27 20:15:01: WARNING: Problem with External get '/usr/sbin/hddtemp -n
/dev/sdc': Expected a Number for 'out' but nothing'
2008-09-27 20:15:02: ERROR: Target[hddtemp_sda][_OUT_] ' $target->[2]{$mode} ' did
not eval into defined data
2008-09-27 20:15:02: ERROR: Target[hddtemp_sdb][_OUT_] ' $target->[3]{$mode} ' did
not eval into defined data
2008-09-27 20:15:02: ERROR: Target[hddtemp_sdc][_OUT_] ' $target->[4]{$mode} ' did
not eval into defined data
전 5분 간격으로 mrtg로 체크하게 해놓았는데.. 이 에러메시지가 5분마다 메일박스에 차곡차곡 쌓여있습니다. ;ㅁ;
이 문제만 어떻게 해결한다면 좋겠는데.. 현재로는 뾰족한 해결방법을 찾지 못했습니다.
"2&>1 > /dev/null" 로 리다이렉트를 해보아도 소용없고.. crontab의 전송메일 주소를 바꾸어 보려 했지만 근본적인 해결책이 아니라 일단 그만두었습니다.
이 문제는 해결되는대로 다시 포스팅을 하던가 업데이트를 하도록 하죠.
출처 : http://onedayorsomeday.tistory.com/38