[[ Мониторинг параметров S.M.A.R.T. в Zabbix ]]

Zabbix

Мониторинг параметров S.M.A.R.T. в Zabbix

sys-apps/smartmontools-6.1
net-analyzer/zabbix-2.0.4-r1

Установка smartmontools

emerge sys-apps/smartmontools -av

Установка скрипта

Создание папки для скриптов:

mkdir /etc/zabbix/scripts/
chown root:zabbix -R /etc/zabbix/scripts/
chmod 750 /etc/zabbix/scripts/

Создадим сам скрипт:

Листинг

Скрипт поддерживает обнаружение (discovery) дисков.
Скрипт предусматривает кэш, что позволяет сократить количество реальных обращений.
Время действия кэша в секундах должно устанавливается чуть меньше чем период опроса элементов.

Установка прав

chown root:zabbix /etc/zabbix/scripts/smart-stats.sh
chmod 550 /etc/zabbix/scripts/smart-stats.sh

Настройка прав пользователю zabbix в sudo

/etc/sudoers

...

##### CUSTOM #####
zabbix ALL=(ALL) NOPASSWD: /usr/sbin/smartctl

Проверить работу скрипта для zabbix:

sudo -u zabbix /etc/zabbix/scripts/smart-stats.sh none sda Temperature_Celsius

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

Если для проверки скрипт запускался с правами root, то он будет владельцем кэш файла - удалите кэш файл после проверок.

Настройка Zabbix Agent

Настройка

/etc/zabbix/zabbix_agentd.conf

...

UserParameter=smart[*],/etc/zabbix/scripts/smart-stats.sh none "$1" "$2"

Перезапустить

/etc/init.d/zabbix-agentd restart

Проверка

zabbix_get -s HOST -k 'smart[sda,Temperature_Celsius]'

Настройка Zabbix Server

Для контролируемых данных в Zabbix нужно создать соответствующее элементы с типом «Zabbix агент» и ключом типа:

smart[dev,key]

где dev - имя устройства, key - контролируемая метрика.

Готовый Шаблон для мониторинга SMART (agent) с уже настроенными элементами и графиками.

Результат

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

Изображения не найдены

Обсуждение

Ruslan, 2014/01/28 11:21, 2014/01/31 14:13

В скрипте ошибка. По итогам DICOVERY получается строка:

{ "data":[{ "{#HDNAME}":"sda"}, { "{#HDNAME}":"sdb"},]}

Последняя запятая явно лишняя.

Aleksey, 2014/01/28 11:51

JSON это допускает. Возможно у вас не работало по другой причине или просто таймаута опроса не дождались. Какая версия Zabbix?

Ruslan, 2014/01/29 08:55

Версия 2.2. таймаут поставил маленький для тестирования шаблона. В разделе НАСТРОЙКА-УЗЛЫ СЕТИ-мой сервер-ПРАВИЛА ОБНАРУЖЕНИЯ данный шаблон пометился красным значком с ошибкой и надписью "Value should be a JSON object". Именно после удаления последней запятой все заработало.

Спасибо за проделанную работу - Ваши статьи помогают быстро разобраться.

Aleksey, 2014/01/29 10:31

Спасибо за замечание в адрес версии 2.2
Писалось под 2.0
Надо будет заняться правкой FIXME

Aleksey, 2014/01/31 14:14

:!: Скрипт исправлен

Vitaliy, 2014/09/15 05:49, 2014/09/15 11:52

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

smartctl --all /dev/sda -s on
djvnsk, 2014/10/01 20:29

Хороший ман, единственно установка smartmontools sudo aptitude install smartmontools -y nano /etc/default/smartmontools

start_smartd=yes

/etc/init.d/smartmontools restart

и вместо /etc/init.d/zabbix-agentd restart должно быть /etc/init.d/zabbix-agent restart

Case, 2015/10/06 13:40

Спасибо! Успешно завелось. Только из скрипта пришлось убрать первый аргумент (RESERVED="$1").

Aleksey, 2016/05/25 17:42

Это наследство от версии 1.8

Вячеслав, 2015/10/30 19:51

Как настроить работу в режиме активного агента?

Aleksey, 2015/11/01 21:37

Надо переделать скрипт

Евгений, 2016/05/25 17:23, 2016/05/25 17:33

Подскажите, что и где изменить для корректной работы в Zabbix 2.4.8-1 На клиенте скрипт отрабатывает корректно

# sudo -u zabbix /etc/zabbix/scripts/smart-stats.sh none sda Temperature_Celsius
39

Вот с Zabbix-сервера при попытке опросить

# zabbix_get -s <myzabbixclient> -k 'smart[sda,Temperature_Celsius]'
{ "data":[{"{#HDNAME}":"sda"}, {"{#HDNAME}":"sdb"}]}

Соответственно в Latest Data имею http://clip2net.com/s/3yt8yrv

Заранее благодарен.

Aleksey, 2016/05/25 17:40

UserParameter= ???

Евгений, 2016/05/25 20:37

Да, действительно в этом была причина. Некорректно добавил строку с UserParameter= Исправил.Отрабатывает корректно. Благодарю за помощь. И отдельное спасибо за качественно и доходчиво написанные статьи на Вашем сайте.

Ilya, 2016/07/05 09:49

Есть zabbix 3.0 и есть raid5 на 4 scsi винтах, при попытке выполнить скрипт на клиенте

# ./test-smart-raid.sh
{ "date":[{"{#HDNAME}":"sg0"}, {"{#HDNAME}":"sg1"}, {"{#HDNAME}":"sg2"}, {"{#HDNAME}":"sg3"}, {"{#HDNAME}":"sg4"}, {"{#HDNAME}":"sg5"}]}

вывод smartctl

 # smartctl -a /dev/sg0
smartctl 5.43 2012-06-30 r3573 [x86_64-linux-2.6.32-642.1.1.el6.x86_64] (local build)
Copyright (C) 2002-12 by Bruce Allen, http://smartmontools.sourceforge.net

Vendor:               IBM-ESXS
Product:              CBRCA146C3ETS0 N
Revision:             C370
User Capacity:        146 814 976 000 bytes [146 GB]
Logical block size:   512 bytes
Logical Unit id:      0x5000cca00a4500fc
Serial number:                PCW6YENE
Device type:          disk
Transport protocol:   SAS
Local Time is:        Tue Jul  5 11:38:29 2016 GMT-5
Device supports SMART and is Enabled
Temperature Warning Enabled
SMART Health Status: OK

Current Drive Temperature:     41 C
Drive Trip Temperature:        65 C
Manufactured in week 48 of year 2009
Specified cycle count over device lifetime:  50000
Accumulated start-stop cycles:  42
Elements in grown defect list: 0
Vendor (Seagate) cache information
  Blocks sent to initiator = 25593508303732736

Error counter log:
           Errors Corrected by           Total   Correction     Gigabytes    Total
               ECC          rereads/    errors   algorithm      processed    uncorrected
           fast | delayed   rewrites  corrected  invocations   [10^9 bytes]  errors
read:          0   299685         0    299685   22869696      45877,533           0
write:         0  1485603         0   1485603     988179      49556,618           0
verify:        0     1137         0      1137        376       3558,372           0

Подскажите пожалуйста, как переделать скрипт, под данные винты, что бы получать в CAHCE_FILE

Serial number:                PCW6YENE
Current Drive Temperature:     41 C
SMART Health Status: OK
Эти данные получается выдрать:
# smartctl -a /dev/sg0 | egrep '^(SMART Health Status|Current Drive Temperature|Serial number)' | cut -d':' -f2 | tr -d ' ' 
PCW6YENE
OK
41C
 

При выполнении из терминала

# DEVICES=`ls /dev | sed -e '/^\(sg[0-9]\)$/!d'`
# CACHE_FILE="/tmp/zabbix.smart.${DEVICES}.cache"
# DATACACHE=`${SMARTCTL} -a /dev/${DISK} | egrep '^(SMART Health Status|Current Drive Temperature|Serial number)' | cut -d':' -f2 | tr -d ' '`
# echo "${DATACACHE}" > "${CACHE_FILE}"

создается файл с именем zabbix.smart.sg0.sg1.sg2.sg3.sg4.sg5.cache

Заранее благодарен.

p.s: Шаблон импортировался без каких либо проблем.

Aleksey, 2016/07/07 12:21, 2016/07/07 12:22

1) нужно поправить команду sed на для выбора устройств sg из /dev

{ "date":[{"{#HDNAME}":"sg0"}, {"{#HDNAME}":"sg1"}, {"{#HDNAME}":"sg2"}, {"{#HDNAME}":"sg3"}, {"{#HDNAME}":"sg4"}, {"{#HDNAME}":"sg5"}]}

судя по всему вы уже это сделали

2) Что бы больше ничего не править попробуй привести вывод smartctrl в формат как у обычных дисков - поиграться с опциями, указать вендора контроллера

3) Если формат не изменить, то править надо команду выбора метрики под ваш формат,

cat "${CACHE_FILE}" | grep -i "${METRIC}" | awk '{print $10}' | head -n1

такова общая задумка, но можете делать как хотите

Ваш комментарий. Вики-синтаксис разрешён:
196 +3 =
 
howto/zabbix/zabbix_smart_monitoring.txt · Последнее изменение: 2022/08/31 14:53 — 127.0.0.1
Gentoo Linux Gentoo Linux Driven by DokuWiki