Восстановление данных в результате «физической смерти» носителя информации не самое приятное времяпрепровождение в жизни любого системного администратора. Следовательно, чем долгие часы исправлять ситуацию, а данных у нас очень много, лучше её предотвратить — организовав мониторинг.
У жестких и твердотельных накопителей есть встроенная технология, которая позволяет производить самостоятельную самодиагностику — S.M.A.R.T., к ней мы и будем работать.
S.M.A.R.T. — технология оценки состояния жёсткого диска встроенной аппаратурой самодиагностики, а также механизм предсказания времени выхода его из строя.
SMART не является панацеей от всех бед, но определенные сведения и некое планирование, посредством полученных данных, можно осуществить вовремя, тем самым чуть-чуть облегчить себе жизнь.
В качестве исходного сервера выступает Linux CentOS 6, работающий, в роли файлового хранилища.
Linux содержит группу пакетов под названием «Smartmontools», которые представляют собой набор утилит для проверки состояния дисков. Непосредственно конфигурация демона smartd для регулярного тестирования и мониторинга SMART, выходит за рамки данной статьи, интересующиеся могут самостоятельно найти примеры настройки в Интернете.
Нас же интересует графическое отображение ключевых параметров, аномальное изменение которых можно увидеть порой только визуально. И в этом нам поможет Cacti.
1) Для начала ставим пакет 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 скрипте, вместо того, чтобы рассматривать каждый параметр сам по себе.
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
2. Cacti Templates
В архиве основной шаблон, содержащий все параметры на одном графике. В отдельный график выведена температура.
Для работы необходимо переместить файл сопоставления disk_smart.xml в /resource/snmp_queries/
И импортировать cacti_host_template_smart_parameters.xml в кактус.
Если все правильно настроено, то при добавлении «Disk SMART Parameters» в Associated Data Queries устройства должен появиться статус опрошенных объектов.
Не забываем выбрать правильный шаблон при непосредственном создании графиков. По умолчанию графики строятся для SSD дисков (AGILITY3), что не совсем правильно.
3. Примеры графиков:
Статья подготовлена на основе материала SMART stats on Cacti (via SNMP)
Автор: spions