< meta name="referrer" content="origin">
Home » Zabbix » Настройка мониторинга SMART жесткого диска в zabbix

Настройка мониторинга SMART жесткого диска в zabbix

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

Введение

Когда мне понадобилось настроить мониторинг жестких дисков, в частности, SMART параметров в Zabbix, я сразу же нашел готовое решение на share.zabbix.com. Рекомендую туда заглядывать периодически в поисках интересных приемов для мониторинга.

В данном случае практически не пришлось ничего менять или допиливать. И скрипты, и шаблон готов к использованию в оригинальном исполнении. Расскажу подробно, как я на основе этой информации настраиваю мониторинг smart у себя.

Я буду работать на сервере CentOS 7, но в данном случае, как обычно с заббиксом, это не имеет принципиального значения. Все скрипты и шаблоны подойдут для практически любого дистрибутива linux. Если у вас еще нет своего сервера для мониторинга, то рекомендую свои материалы на эту тему:

  1. Установка CentOS 7.
  2. Настройка CentOS 7.
  3. Установка и настройка zabbix сервера.

Настраивать будем по этапам:

  1. Сначала настроим агент и все необходимые скрипты.
  2. Импортируем шаблон на сервер и применим к нужному хосту.
  3. Проверим полученные данные.

Приступим к настройке zabbix для наблюдения за смартом дисков.

У нас будет одна сложность, которая немного запутывает процесс настройки. Для версий 3.2 и ниже будут одни параметры и шаблон, а для 3.4 другие. Так как у меня есть обе версии серверов, мне придется рассмотреть настройку на обоих версиях.

Подготовка zabbix agent

Мониторинг значений SMART жесткого диска будет выполняться с помощью smartmontools. Установить их можно следующей командой для CentOS:

# yum install smartmontools

Либо аналогично в Debian/Ubuntu

# apt install smartmontools

Далее нам понадобится скрипт на perl для автообнаружения дисков и вывода информации о них в JSON формате, который понимает заббикс. Создадим такой скрипт.

# mcedit /etc/zabbix/scripts/smartctl-disks-discovery.pl
#!/usr/bin/perl

#must be run as root

$first = 1;

print "{\n";
print "\t\"data\":[\n\n";

for (`ls -l /dev/disk/by-id/ | cut -d"/" -f3 | sort -n | uniq -w 3`)
{
#DISK LOOP
$smart_avail=0;
$smart_enabled=0;
$smart_enable_tried=0;

#next when total 0 at output
        if ($_ eq "total 0\n")
                {
                        next;
                }

    print "\t,\n" if not $first;
    $first = 0;

$disk =$_;
chomp($disk);

#SMART STATUS LOOP
foreach(`smartctl -i /dev/$disk | grep SMART`)
{

$line=$_;

        # if SMART available -> continue
        if ($line = /Available/){
                $smart_avail=1;
                next;
                        }

        #if SMART is disabled then try to enable it (also offline tests etc)
        if ($line = /Disabled/ & $smart_enable_tried == 0){

                foreach(`smartctl -i /dev/$disk -s on -o on -S on | grep SMART`) {

                        if (/SMART Enabled/){
                                $smart_enabled=1;
                                next;
                        }
                }
        $smart_enable_tried=1;
        }

        if ($line = /Enabled/){
        $smart_enabled=1;
        }


}

    print "\t{\n";
    print "\t\t\"{#DISKNAME}\":\"$disk\",\n";
    print "\t\t\"{#SMART_ENABLED}\":\"$smart_enabled\"\n";
    print "\t}\n";

}

print "\n\t]\n";
print "}\n";

Сохраняем скрипт и делаем исполняемым.

# chmod u+x smartctl-disks-discovery.pl

Выполняем скрипт и проверяем вывод. Должно быть примерно так с двумя дисками.

{
	"data":[

	{
		"{#DISKNAME}":"sda",
		"{#SMART_ENABLED}":"1"
	}
	,
	{
		"{#DISKNAME}":"sdb",
		"{#SMART_ENABLED}":"1"
	}

	]
}

В данном случае у меня 2 физических диска — sda и sdb. Их мы и будем мониторить.

Настроим разрешение для пользователя zabbix на запуск этого скрипта, а заодно и smartctl, который нам понадобится дальше. Для этого запускаем утилиту для редактирования /etc/sudoers.

# visudo

Добавляем в самый конец еще одну строку:

zabbix ALL= (ALL) NOPASSWD: /usr/sbin/smartctl,/etc/zabbix/scripts/smartctl-disks-discovery.pl

Сохраняем, выходим 🙂 Это если вы умеете работать с vi. Если нет, то загуглите, как работать с этим редактором. Именно он запускается командой visudo.

Проверим, что пользователь zabbix нормально исполняет скрипт.

# sudo -u zabbix /etc/zabbix/scripts/smartctl-disks-discovery.pl

Вывод должен быть такой же, как от root. Если вам не хочется разбираться с этими разрешениями, либо что-то не получается, можете просто запустить zabbix-agent от пользователя root и проверить работу в таком режиме. Сделать это не трудно, данный параметр закомментирован в конфигурации агента. Вам достаточно просто снять комментарий и перезапустить агент.

После настройки скрипта автообнаружения, добавим необходимые UserParameters для мониторинга SMART. Для этого создадим отдельный конфигурационный файл. Для версии 3.2 и ниже он будет выглядеть вот так.

# mcedit /etc/zabbix/zabbix_agentd.d/smart.conf
UserParameter=uHDD[*],sudo smartctl -A /dev/$1| grep -i "$2"| tail -1| cut -c 88-|cut -f1 -d' '
UserParameter=uHDD.model.[*],sudo smartctl -i /dev/$1 |grep -i "Device Model"| cut -f2 -d: |tr -d " "
UserParameter=uHDD.sn.[*],sudo smartctl -i /dev/$1 |grep -i "Serial Number"| cut -f2 -d: |tr -d " "
UserParameter=uHDD.health.[*],sudo smartctl -H /dev/$1 |grep -i "test"| cut -f2 -d: |tr -d " "
UserParameter=uHDD.errorlog.[*],sudo smartctl -l error /dev/$1 |grep -i "ATA Error Count"| cut -f2 -d: |tr -d " "
UserParameter=uHDD.discovery,sudo /etc/zabbix/scripts/smartctl-disks-discovery.pl

Версия настроек для агента 3.4

UserParameter=uHDD.A[*],sudo smartctl -A $1
UserParameter=uHDD.i[*],sudo smartctl -i $1
UserParameter=uHDD.health[*],sudo smartctl -H $1 || true
UserParameter=uHDD.discovery,sudo /etc/zabbix/scripts/smartctl-disks-discovery.pl

Сохраняем файл и перезапускаем zabbix-agent.

# systemctl restart zabbix-agent

Проверяем, как наш агент будет отдавать данные. Ключ uHDD.discovery будет одинаковый для обоих версий агента.

# zabbix_agentd -t uHDD.discovery

Вы должны увидеть полный JSON вывод с информацией о ваших диска. Теперь посмотрим, как передаются информация о smart. Запросим температуру дисков для версии 3.2.

# zabbix_agentd -t uHDD[sda,Temperature_Celsius]

uHDD[sda,Temperature_Celsius] [t|35]

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

Настройка мониторинга SMART параметров диска

На сервере нам никаких особенных настроек делать не придется. Достаточно будет загрузить готовый шаблон и применить его к интересующему нас хосту для мониторинга за диском.

Шаблон можно взять у меня — zabbix-smart-template.xml. Я уже точно не помню, изменял ли я что-нибудь в нем, по сравнению с оригинальным или нет. Но даже если и изменял, то незначительно, скорее всего только интервалы обновления итемов. Это шаблон я экспортировал со своего сервера версии 3.2. Оригинальные шаблоны вы можете взять у авторов по ссылке в начале поста.

Для сервера zabbix версии 3.4 используйте обновленный шаблон автора.

Интервал обновления правил автообнаружения в шаблоне 30 минут, поэтому придется подождать примерно пол часа, прежде чем какие-то новые данные по мониторингу смарта появятся на сервере. Во время отладки можете изменить этот параметр вручную в шаблоне.

Правило автообнаружения дисков

Интервал автообнаружения

Тут же, в прототипах элементов данных, можете посмотреть остальные айтемы, их параметры и интервалы обновления. Возможно, что-то вам будет не нужно и вы отключите.

Мониторинг smart дисков

Может быть вам будет полезно чаще, чем раз в 10 минут мониторить температуру жесткого диска. В соседнем разделе посмотрите прототипы триггеров. Некоторые из них вычисляемые и начнут работать только после того, как накопится определенное количество данных. До этого они будут показывать ошибки, имейте это ввиду.

Важное замечание. Заметил уже во время написания статьи, что у меня триггер на температуру жесткого диска выставлен на значение, превышающее 52 градуса. Это достаточно много, но мне так было надо. Рекомендую снизить этот параметр до 50 или 45 градусов.

Триггер на мониторинг температуры диска

После того, как правило автообнаружения сработает и будут получены первые данные, можно их проверять в «Последние данные». Это будут значения температуры.

Мониторинг температуры жесткого диска

Заключение

Не понравилась статья и хочешь научить меня администрировать? Пожалуйста, я люблю учиться. Комментарии в твоем распоряжении. Расскажи, как сделать правильно!

Мониторинг smart значений жесткого диска достаточно полезная штука, но не стоит ей слепо доверять. У меня были ситуации, когда диски с Bad Sector Count работали годами. Тут важно смотреть на динамику и на статус сервера. Если он критичный, то при малейших признаках неисправности, я бы менял диск. Если это обычая файлопомойка с рейдом, то если диск не деградирует со временем, можно его не трогать.

Еще важный нюанс — подобный мониторинг жестких дисков возможен только если вы не используете raid контроллер. Если же он у вас есть, то чаще всего вы не сможете увидеть параметры smart дисков. Нужно будет использовать утилиты производителя raid контроллера и настраивать мониторинг через них.


Помогла статья? Есть возможность отблагодарить автора

Добавить комментарий

Ваш e-mail не будет опубликован.