Главная Статьи FreeBSD, MRTG и график температуры жестких дисков.
 
   
Главная
Новости
Статьи
FAQ
Конкурсы
Форум
Ссылки

Получать новости
на E-mail:











 
FreeBSD, MRTG и график температуры жестких дисков.
Автор: Rimlyanin   
25.04.2013 09:10

Как известно, повышенная температура жестких дисков или её резкое изменение могут привести к преждевременному выходу их из строя, так что будет совершенно не лишним её мониторить. Тем более, если сервер стоит за много сотен километров, в помещении, куда люди заходят очень редко, а значит некому обратить внимание на то, что вентиляторы охлаждения в сервере не выполняют свои функции по тем или иным причинам.

И так, у нас имеется сервер на FreeBSD

root@bubu[Sun 8:04]/>uname -a
FreeBSD bubu.bubu 8.2-RELEASE FreeBSD 8.2-RELEASE #0: Wed Apr 20 14:20:30 EEST 2011 Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript :/usr/obj/usr/src/sys/BUBU2 amd64

В нем установлено пара HDD:

root@bubu[Sun 8:05]/>atacontrol list
ATA channel 2:
Master: no device present
Slave: no device present
ATA channel 3:
Master: ad6 SATA revision 2.x
Slave: no device present
ATA channel 4:
Master: ad8 SATA revision 2.x
Slave: no device present
ATA channel 5:
Master: no device present
Slave: no device present
ATA channel 6:
Master: no device present
Slave: no device present

MRTG уже установлена и используется для контроля температуры процессора. Нам остается лишь каким либо образом узнавать у наших HDD их текущую температуру, и отдавать эти данные в MRTG для отрисовывания графиков.

И тут на помощь нам приходит технология S.M.A.R.T. (self-monitoring, analysis and reporting technology — технология диагностики жесткого диска с помощью встроенных программ самодиагностики), ведь один из SMART-атрибутов как раз и содержит необходимую нам информацию о текущей температуре винчестера. Осталось найти возможность получать эти атрибуты.

Решение было найдено в портах - пакет smartmontools, который, согласно описания «содержит две утилиты (smartctl и smartd) для контроля и мониторинга дисковой системы использующей технологию S.M.A.R.T. встроенную в современные ATA (IDE) и SCSI диски…», как раз, что нам и требовалось .

Приступаем к установке:

cd /usr/ports/sysutils/smartmontools && make install clean

И после сообщения об удачной установке

smartmontools has been installed

видим также небольшую подсказку об использовании

To check the status of drives, use the following:

/usr/local/sbin/smartctl -a /dev/ad0 for first ATA drive
/usr/local/sbin/smartctl -a /dev/da0 for first SCSI drive

To include drive health information in your daily status reports,
add a line like the following to /etc/periodic.conf:
daily_status_smart_devices="/dev/ad0 /dev/da0"
substituting the appropriate device names for your SMART-capable disks.

To enable drive monitoring, you can use /usr/local/sbin/smartd.
A sample configuration file has been installed as
/usr/local/etc/smartd.conf.sample
Copy this file to /usr/local/etc/smartd.conf and edit appropriately

To have smartd start at boot
echo 'smartd_enable="YES"' >> /etc/rc.conf

Первым делом включаем (на всякий случай, даже если он был ранее включен) смарт для имеющихся HDD:

/usr/local/sbin/smartctl -s on /dev/ad6 /usr/local/sbin/smartctl -s on /dev/ad8

и посмотрим температуру

root@bubu[Sun 8:06]/>smartctl -a /dev/ad6 | grep Temperature_Celsius
194 Temperature_Celsius 0x0002 222 222 000 Old_age Always - 27 (Min/Max 11/41)

Итак, температуру мы узнать можем, значит пора приступать к тому, что бы научить MRTG получать эти данные. И для этого мы напишем небольшой скриптик, в который будем передавать в параметрах запуска какой из HDD нам в данный момент интересен, а на выходе будем получать его текущую температуру, модель и емкость. Мой скрипт выглядит так:

root@bubu[Sun 8:06]/>cat /usr/local/etc/mrtg/script/hdd_temp
#!/bin/sh
# Этому скрипту в качестве первого параметра передаётся имя устройства,
# данные о котором необходимо получить
# Если имя устройства передано
if [ ! -z ${1} ]; then
ADDR=${1}
/usr/local/sbin/smartctl -a -s on /dev/$ADDR | grep 194| grep Temp | awk -F " " '{print $10}'
echo 0
#echo HDD
/usr/local/sbin/smartctl -a -s on /dev/$ADDR | grep Device | grep Model
/usr/local/sbin/smartctl -a -s on /dev/$ADDR | grep Capacity:
fi

И сохранен, как видите, в папке /usr/local/etc/mrtg/script под именем hdd-temp (не забудьте сделать его исполняемым), после чего остается лишь прописать в конфиге самой MRTG его вызов:

root@bubu[Sun 8:06]/>cat /usr/local/etc/mrtg/mrtg.cfg | grep ad6
Title[ad6]: HDD ad6 Temperature (Celsius)
PageTop[ad6]: HDD ad6 Temperature (Celsius)
Target[ad6]: `/usr/local/etc/mrtg/script/hdd_temp ad6`
ShortLegend[ad6]: degree (C)
MaxBytes[ad6]: 2000
Options[ad6]: nopercent,gauge,unknaszero,avgpeak,growright,pngdate,nobanner
LegendO[ad6]:
LegendI[ad6]: ad60 Temperature (Celsius)
YLegend[ad6]: ad60 Temperature (Celsius)
XSize[ad6]: 600
YSize[ad6]: 125

Аналогично прописан и второй жесткий диск:

root@bubu[Sun 8:06]/>cat /usr/local/etc/mrtg/mrtg.cfg | grep ad8
Title[ad8]: HDD ad8 Temperature (Celsius)
PageTop[ad8]:
HDD ad8 Temperature (Celsius)
Target[ad8]: `/usr/local/etc/mrtg/script/hdd_temp ad8`
ShortLegend[ad8]: degree (C)
MaxBytes[ad8]: 2000
Options[ad8]: nopercent,gauge,unknaszero,avgpeak,growright,pngdate,nobanner
LegendO[ad8]:
LegendI[ad8]: ad80 Temperature (Celsius)
YLegend[ad8]: ad80 Temperature (Celsius)
XSize[ad8]: 600
YSize[ad8]: 125

 

Именно так я получил графики для статьи «О температуре в машинных залах в двух разных датацентрах.»

 

 
 




Последние комментарии

   
 

© 2010-2024 www.modding.kh.ua Копирование авторских текстов и фотографий возможно только с письменного разрешения администрации сайта.

bigmir)net TOP 100 Яндекс.Метрика

 
 
 
Харьковский моддинг сайт https://modding.kh.ua/