Cacti: Мониторинг SMART

disco-duro

Восстановление данных в результате «физической смерти» носителя информации не самое приятное времяпрепровождение в жизни любого системного администратора. Следовательно, чем долгие часы исправлять ситуацию, а данных у нас очень много, лучше её предотвратить — организовав мониторинг.

У жестких и твердотельных накопителей есть встроенная технология, которая позволяет производить самостоятельную самодиагностику — S.M.A.R.T., к ней мы и будем работать.

S.M.A.R.T. — технология оценки состояния жёсткого диска встроенной аппаратурой самодиагностики, а также механизм предсказания времени выхода его из строя.

SMART не является панацеей от всех бед, но определенные сведения и некое планирование, посредством полученных данных, можно осуществить вовремя, тем самым чуть-чуть облегчить себе жизнь.

В качестве исходного сервера выступает Linux CentOS 6, работающий, в роли файлового хранилища.

Linux содержит группу пакетов под названием «Smartmontools», которые представляют собой набор утилит для проверки состояния дисков. Непосредственно конфигурация демона smartd для регулярного тестирования и мониторинга SMART, выходит за рамки данной статьи, интересующиеся могут самостоятельно найти примеры настройки в Интернете.

Нас же интересует графическое отображение ключевых параметров, аномальное изменение которых можно увидеть порой только визуально. И в этом нам поможет Cacti.

Для начала ставим пакет smartmontools:

#
yum provides "smartctl*"
#
1:smartmontools-5.43-1.el6.x86_64 : Tools for monitoring SMART capable hard disks
#
yum install smartmontools

После установки, можно проверить параметры дисков:

smartctl -a DEVICE

Как правило, вместо «DEVICE» будет что-то вроде /dev/sda (первый диск), /dev/sdb (второй).
Иногда необходимо принудительно включить SMART на диске:

smartctl -s on DEVICE

В настоящее время технология SMART недоступна для USB дисков, несмотря на то, что диск внутри бокса может отдать необходимую информацию.

Получение SMART требует определенных привилегии, у демона SNMPd они как правило отсутствуют, поэтому основная работа по сбору промежуточных данных будет происходить через CRON скрипт:

cat /etc/snmp/smart-cronjob
# where to keep the files
STORE=/tmp/snmp
 
# update smart parameters
for devfull in /dev/sd?; do
    dev=`basename $devfull`
    /usr/sbin/smartctl -n idle -a $devfull >$STORE/smart-$dev.TMP
    mv $STORE/smart-$dev.TMP $STORE/smart-$dev
done

Не забываем создать дирректорию /tmp/snmp и поместить запуск в CRON

cat /etc/crontab |grep smart
*/5 * * * * root /etc/snmp/smart-cronjob

Этот код ищет устройства «/dev/sd?» (/dev/sda, /dev/sdb и т.д.) и пытается записать их SMART данные в файл.

#ll /dev/sd?
brw-rw---- 1 root disk 8,  0 Oct 25 14:42 /dev/sda
brw-rw---- 1 root disk 8, 16 Oct 25 14:42 /dev/sdb
brw-rw---- 1 root disk 8, 32 Oct 25 14:42 /dev/sdc
brw-rw---- 1 root disk 8, 48 Oct 25 14:42 /dev/sdd
brw-rw---- 1 root disk 8, 64 Oct 25 14:42 /dev/sde
brw-rw---- 1 root disk 8, 80 Oct 25 14:42 /dev/sdf

Все SMART параметры имеют порядковый номер. Соответствующая нумерация будет использоваться в PERL скрипте, вместо того, чтобы рассматривать каждый параметр сам по себе.

cacti Мониторинг SMART

Perl скрипт для извлечения параметров SMART для SNMP (smart-generic)

Выставляем скрипту права на выполнение:

CHMOD + х /etc/snmp/smart-generic

Этот скрипт принимает номер SMART параметра и выводит разницу между текущим значением и трешхолдом (порогом) для этого параметра.

Стоит отметить, что в зависимости от производителя, модели или версии прошивки, трешхолды могут быть разными. Поэтому само значение не представляет собой большого интереса, а вот необычные колебания или тенденции к снижению, стоит принимать во внимание. Для температуры, как правило, необходимо получить мгновенное значение.

Добавляем snmpd.conf строки (или другие, если вы хотите контролировать «свои» показатели. Общее представление о параметрах можно получить в Википедии):

extend smartdevices /etc/snmp/smart-generic devices
extend smartdescriptions /etc/snmp/smart-generic description
extend smart1 /etc/snmp/smart-generic 1
extend smart3 /etc/snmp/smart-generic 3
extend smart4 /etc/snmp/smart-generic 4
extend smart5 /etc/snmp/smart-generic 5
extend smart7 /etc/snmp/smart-generic 7
extend smart9 /etc/snmp/smart-generic 9
extend smart10 /etc/snmp/smart-generic 10
extend smart12 /etc/snmp/smart-generic 12
extend smart170 /etc/snmp/smart-generic 170
extend smart171 /etc/snmp/smart-generic 171
extend smart172 /etc/snmp/smart-generic 172
extend smart177 /etc/snmp/smart-generic 177
extend smart178 /etc/snmp/smart-generic 178
extend smart179 /etc/snmp/smart-generic 179
extend smart180 /etc/snmp/smart-generic 180
extend smart181 /etc/snmp/smart-generic 181
extend smart182 /etc/snmp/smart-generic 182
extend smart183 /etc/snmp/smart-generic 183
extend smart184 /etc/snmp/smart-generic 184
extend smart187 /etc/snmp/smart-generic 187
extend smart189 /etc/snmp/smart-generic 189
extend smartR190 /etc/snmp/smart-generic R190
extend smartR194 /etc/snmp/smart-generic R194
extend smart195 /etc/snmp/smart-generic 195
extend smart196 /etc/snmp/smart-generic 196
extend smart199 /etc/snmp/smart-generic 199
extend smart203 /etc/snmp/smart-generic 203
extend smart226 /etc/snmp/smart-generic 226
extend smart230 /etc/snmp/smart-generic 230
extend smart231 /etc/snmp/smart-generic 231
extend smart232 /etc/snmp/smart-generic 232
extend smart233 /etc/snmp/smart-generic 233
extend smart235 /etc/snmp/smart-generic 235
extend smart241 /etc/snmp/smart-generic 241

Рестартуем демона и проверяем выдачу (необходимо подставить свои «SNMP_Community» и «host_name»):

$ snmpwalk -v2c -c SNMP_Community host_name NET-SNMP-EXTEND-MIB::nsExtendOutLine
NET-SNMP-EXTEND-MIB::nsExtendOutLine."smart1".1 = STRING: 101
NET-SNMP-EXTEND-MIB::nsExtendOutLine."smart1".2 = STRING: 101
...
NET-SNMP-EXTEND-MIB::nsExtendOutLine."smartdevices".1 = STRING: sda
NET-SNMP-EXTEND-MIB::nsExtendOutLine."smartdevices".2 = STRING: sdb
NET-SNMP-EXTEND-MIB::nsExtendOutLine."smartdescriptions".1 = STRING: WDC WD2003FYYS-... [01.01D01] 2 TB
NET-SNMP-EXTEND-MIB::nsExtendOutLine."smartdescriptions".2 = STRING: WDC WD2003FYYS-... [01.01D01] 2 TB

Cacti Templates

В архиве основной шаблон, содержащий все параметры на одном графике. В отдельный график выведена температура.
Для работы необходимо переместить файл сопоставления disk_smart.xml в /resource/snmp_queries/
И импортировать cacti_host_template_smart_parameters.xml в кактус.

импортировать  cacti_host_template_smart_parameters.xml в cacti

импортировать  cacti_host_template_smart_parameters.xml в cacti

Если все правильно настроено, то при добавлении «Disk SMART Parameters» в Associated Data Queries устройства должен появиться статус опрошенных объектов.
Disk SMART Parameters» в Associated Data

 

Не забываем выбрать правильный шаблон при непосредственном создании графиков. По умолчанию графики строятся для SSD дисков (AGILITY3), что не совсем правильно.
создании графиков smart

 

Примеры графиков:

Примеры графиков smart

Примеры графиков smart

Статья подготовлена на основе материала SMART stats on Cacti (via SNMP)

Вы можете оставить комментарий ниже.