[[ Мониторинг HP Smart Array в Zabbix ]]

Zabbix

Мониторинг HP Smart Array в Zabbix

В моем варианте я рассчитываю на мониторинг только одного слота т.е. (опция slot=) Измените номер слота в скрипте при необходимости.

net-analyzer/zabbix-2.0.4
Smart Array P212
ACU CLI Version: 8.70-8.0
SoulAPI Version: 5.2.64.0

Установка программы hpacucli в Ubuntu Ubuntu

apt-get install hpacucli

Примеры вывода команд hpacucli

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

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

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

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

Листинг

Скрипт поддерживает обнаружение (discovery) логических и физических дисков.
Скрипт предусматривает кэш, что позволяет сократить количество реальных обращений к серверу.
Время действия кэша в секундах должно устанавливается чуть меньше чем минимальный период опроса элементов (CACHE_TTL + EXEC_TIMEOUT < T).
Т.к. hpacucli работает медленно, необходимо увеличить Timeout Zabbix Agent'a, и при необходимости увеличить EXEC_TIMEOUT в скрипте

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

chown root:zabbix /etc/zabbix/scripts/hpsmartarray.sh
chmod 700 /etc/zabbix/scripts/hpsmartarray.sh

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

/etc/sudoers

...

##### CUSTOM #####
zabbix ALL=(ALL) NOPASSWD: /usr/sbin/hpacucli ctrl slot=1 ld all show status
zabbix ALL=(ALL) NOPASSWD: /usr/sbin/hpacucli ctrl slot=1 pd all show status
zabbix ALL=(ALL) NOPASSWD: /usr/sbin/hpacucli ctrl slot=1 pd all show detail
Проверить работу скрипта для zabbix:

sudo -u zabbix /etc/zabbix/scripts/hpsmartarray.sh none ldiscovery
sudo -u zabbix /etc/zabbix/scripts/hpsmartarray.sh none pdiscovery
sudo -u zabbix /etc/zabbix/scripts/hpsmartarray.sh none "Physical_1I.1.1" status
sudo -u zabbix /etc/zabbix/scripts/hpsmartarray.sh none "Physical_1I.1.1" temp

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

Настройка Zabbix сервера

Вызов скрипта через zabbix-agent

Настройка

/etc/zabbix/zabbix_agentd.conf

...

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

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

/etc/init.d/zabbix-agentd restart

Проверка

zabbix_get -s HOST -k 'hpsmartarray[Physical_1I.1.1, temp]'

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

hpsmartarray[disk, key]

где disk - имя логического диска Logical_<X> или физического диска Physical_<X>
key - контролируемая метрика

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

Результат

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

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



Обсуждение

Anton, 2014/03/24 22:00, 2014/03/25 17:01

Здравствуйте, Во первых спасибо за сайт и особенно за информацию на нем очень много полезного - написанно просто и доступно и главное Работает!!! Хотел обратится с просьбой есть ли возможность опубликовать скрипт для windows 2008 - очень нужно - утилитку hpacucli под винду нашел а вот скрипта нет - ОЧЕНЬ НУЖЕН

тоже касается статей

Мониторинг параметров IOSTAT в Zabbix

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

НУ ОЧЕНЬ НЕОБХОДИМО версии под windows

Aleksey, 2014/03/25 17:04

к сожалению с этим я не смогу помочь

Denis, 2015/05/11 18:48

Zabbix version: 2.4.5

Не работают Discovery rules:

hpsmartarray[ldiscovery], hpsmartarray[ldiscovery]

Value should be a JSON object

zabbix_agentd -t 'hpsmartarray[ldiscovery]'

hpsmartarray[ldiscovery] [t|{"data":[{"{#LD}":"Logical_1"}]}]

# zabbix_agentd -t 'hpsmartarray[pdiscovery]'

hpsmartarray[pdiscovery] [t|{"data":[{"{#PD}":"Physical_1I.1.1"},{"{#PD}":"Physical_1I.1.2"},{"{#PD}":"Physical_1I.1.3"},{"{#PD}":"Physical_1I.1.4"}]}]

http://jsonlint.com/ - говорит, что JSON валидный.

Денис, 2015/05/11 18:52

# sudo -u zabbix /etc/zabbix/scripts/hpsmartarray.sh none ldiscovery

{"data":[{"{#LD}":"Logical_1"}]}

# sudo -u zabbix /etc/zabbix/scripts/hpsmartarray.sh none pdiscovery

{"data":[{"{#PD}":"Physical_1I.1.1"},{"{#PD}":"Physical_1I.1.2"},{"{#PD}":"Physical_1I.1.3"},{"{#PD}":"Physical_1I.1.4"}]}

В чем может быть ошибка?

Денис, 2015/05/12 11:37, 2015/05/12 14:51

Итак, решение проблемы:

Включаем режим отладки в zabbix_agentd.conf

mcedit /etc/zabbix/zabbix_agentd.conf
DebugLevel=4

Перезапускаем заббикс-агент:

/etc/init.d/zabbix-agentd restart

В логе /var/log/zabbix/zabbix_agentd.log находим причину ошибки:

29923:20150512:073731.948 Requested [hpsmartarray[ldiscovery]]
29923:20150512:073731.949 In zbx_popen() command:'/etc/zabbix/scripts/hpsmartarray.sh "none" "ldiscovery" ""'
29923:20150512:073731.949 End of zbx_popen():6
29948:20150512:073731.949 zbx_popen(): executing script
29923:20150512:073731.963 In zbx_waitpid()
29923:20150512:073731.963 zbx_waitpid() exited, status:0
29923:20150512:073731.963 End of zbx_waitpid():29948
29923:20150512:073731.963 EXECUTE_STR() command:'/etc/zabbix/scripts/hpsmartarray.sh "none" "ldiscovery" ""' len:44 cmd_result:'sudo: sorry, you mus'
29923:20150512:073731.963 Sending back [sudo: sorry, you must have a tty to run sudo]

Отключаем параметр requiretty в /etc/sudoers:

visudo

#Defaults    requiretty

Проблема решена:

Discovery rules на хосте теперь без ошибок.

Автоматически созданы элементы и тригеры шаблона MyTemplate_HP_Smart_Array_agent

Спасибо автору шаблона и скрипта.

Отключаем режим отладки в zabbix_agentd.conf

mcedit /etc/zabbix/zabbix_agentd.conf

Удаляем строку: DebugLevel=4

Перезапускаем заббикс-агент:

/etc/init.d/zabbix-agentd restart
stempher, 2015/10/05 11:16

Добрый день Спасибо за скрипт - пригодился. Только вот не задача… Создает кеш файл в одну строку, \n не срабатывает (видимо из-за обилия различных кавычек)… Подскажите как можно решить данный вопрос.

  echo "" >> ${CACHE_FILE}
  DATACACHE=`/usr/bin/esxcli -s $HOST -u $VM_USER -p $VM_PASS $HPUTIL cmd -q "ctrl slot=${SLOT} ld all show status" | awk '{print $1,$2,$NF}' | awk '/logicaldrive/ {printf("Logical_%s Status:%s \n", $2, $3)}';
      /usr/bin/esxcli -s $HOST -u $VM_USER -p $VM_PASS $HPUTIL cmd -q "ctrl slot=${SLOT} pd all show detail" | sed '/physicaldrive/ s/:/./g; s/\(physicaldrive\)/\1:/g' | awk -F':' '
      function ltrim(s) { sub(/^[ \t]+/, "", s); return s }
      function rtrim(s) { sub(/[ \t]+$/, "", s); return s }
      function trim(s)  { return rtrim(ltrim(s)); }
      /physicaldrive/       {fd_counter+=1; fd[fd_counter]=trim($2)}
      /Status/              {status[fd_counter]=trim($2)}
      /Serial Number/       {serial[fd_counter]=trim($2)}
      /Current Temperature/ {temperature[fd_counter]=trim($2)}
      /Model/               {model[fd_counter]=trim($2)}
      /Interface Type/      {interface[fd_counter]=trim($2)}
      END {
        for (i=1; i<=fd_counter; i+=1) {
          printf ( "Physical_%s Status:%s \n", fd[i], status[i]);
          printf ( "Physical_%s Serial:%s \n", fd[i], serial[i]);
          printf ( "Physical_%s Temperature:%s \n", fd[i], temperature[i]);
          printf ( "Physical_%s Model:%s \n", fd[i], model[i]);
          printf ( "Physical_%s Interface:%s \n", fd[i], interface[i]);
        }
      }'`
  echo ${DATACACHE} >> ${CACHE_FILE}
  chmod 640 ${CACHE_FILE}</blockquote>
Aleksey, 2015/10/05 13:16

Вижу кое-что добавили, но остальное плохо скопировали, найдите 2 отличия

  echo "${DATACACHE}" > ${CACHE_FILE}

кавычки для переменной возможно помогут

stempher, 2015/10/05 14:23

Да, спасибо, недосмотрел действительно. Изменил, да - собираю информацию не через ssh, а средством esxcli. Спасибо еще раз ;)

Aleksey, 2016/03/28 17:10
smartctl -d cciss,1 -A /dev/sda
alex, 2017/03/31 11:51

Добрый день !

А не подскажите если клиентская машина под Windows.

У меня получичается снять полный блок данны через ctrl slot=0 pd all show detail

но как мне сделать чтоб он сам искал диски, и мониторил каждый диск по отдельности

Храпцов Михаил, 2018/02/07 16:28, 2018/02/08 13:42

Добрый день. В моем случае скрипт выдавал "Status OK" даже на неисправном диске, т.к. вместо строки "Status: Predictive Failure" анализировал эту: "Drive Authentication Status: OK". Изменил паттерн:

"/Status/ {status[fd_counter]=trim($2)}"

на это

"/^[ \t]+Status/  {status[fd_counter]=trim($2)}"

красная лампочка зажглась.

Aleksey, 2018/02/08 13:50

Спасибо, учел ваши замечания. На P410i -"Authentication Status" нет, а на P220i есть

Сталкер, 2019/06/10 23:47

Стабильно вылезает вот такое: /etc/zabbix/scripts/hpsmartarray.sh: line 60: /tmp/zabbix.hpsmartarray.cache: Permission denied /etc/zabbix/scripts/hpsmartarray.sh: line 76: /usr/bin/sudo: Permission denied /etc/zabbix/scripts/hpsmartarray.sh: line 77: /usr/bin/sudo: Permission denied /etc/zabbix/scripts/hpsmartarray.sh: line 77: /tmp/zabbix.hpsmartarray.cache: Permission denied

Никак не могу понять каких прав ему не хватает. Права на этот файл дал /tmp/zabbix.hpsmartarray.cache (овнером поставил акк забикса) по прошествии времени опять права слетают.

Булат, 2019/11/29 17:20

Centos 7 (XENSERVER)

Для тех у кого не запускается так

sudo -u zabbix /etc/zabbix/scripts/hpsmartarray.sh none ldiscovery

sudo: unable to execute /etc/zabbix/scripts/hpsmartarray.sh: Permission denied

просто добавьте "sudo" после "zabbix"

sudo -u zabbix sudo /etc/zabbix/scripts/hpsmartarray.sh none ldiscovery

и добавьте запуск скрипта в /etc/sudoers - иначе пароль спрашивает

zabbix ALL=(ALL) NOPASSWD: /etc/zabbix/scripts/hpsmartarray.sh

МНЕ ПОМОГЛО ! 8-)

Anro, 2020/02/07 10:44

При выполнении zabbix_get -s HOST -k 'hpsmartarray[Physical_1I.1.1, temp]' ZBX_NOTSUPPORTED: Unsupported item key. Что можно сделать?

aleksey, 2021/09/02 11:44

Вместо temp напишите Temperature (обязательно с большой буквы)

В скрипте три параметра Status Serial Temperature

aleksey, 2021/09/02 11:30, 2021/09/02 14:18

Проверять нужно так

sudo -u zabbix /etc/zabbix/scripts/hpsmartarray.sh none ldiscovery
sudo -u zabbix /etc/zabbix/scripts/hpsmartarray.sh none pdiscovery
sudo -u zabbix /etc/zabbix/scripts/hpsmartarray.sh none "Physical_1I.1.1" Status
sudo -u zabbix /etc/zabbix/scripts/hpsmartarray.sh none "Physical_1I.1.1" Temperature
sudo -u zabbix /etc/zabbix/scripts/hpsmartarray.sh none "Physical_1I.1.1" Serial
Храпцов Михаил, 2022/01/14 11:58

Давно успешно пользуюсь скриптом, добром и теплом вспоминаю автора с благодарностью. Заметил несущественный недостаток: при проблемах с массивом заббикс получает неполные сведения, пример: OK ⇒ OK Interim Recovery Mode ⇒ Mode Recovering, 99.16% complete ⇒ complete Причиина очевидна: AWK с пробелом-разделителем выделяет только последнее слово, а надо бы все после ":", но как на ходу поменять разделитель, не нашел.

Буду очень признателен за помощь.

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