Мониторинг HP SmartArray на VMWare ESXi 5.x в Zabbix

в 12:38, , рубрики: ESXi, VMware, zabbix, ит-инфраструктура, Серверное администрирование, системное администрирование

В нашем серверном хозяйстве, наряду с кластерами vSphere, имеется несколько standalone серверов ESXi, установленных в некоторых филиалах. Все эти сервера производства HP, и имеют на борту RAID-контроллеры HP SmartArray.

После пары «веселых» эпизодов с вылетом дисков на таких серверах, которые были обнаружены чисто случайно после захода на оные сервера vSphere Client’ом (и нам еще крупно повезло, что массивы остались целы), я задумался о прикручивании к Zabbix мониторинга RAID-контроллеров на таких вот выделенных хостах ESXi. Бэкапы бэкапами, репликация репликацией, все это хорошо и все это есть, но при отказе массива и падении хоста со всеми филиальными виртуалками, простой на какое-то время будет обеспечен в любом случае.

Как реализовать такой мониторинг?

Во все кастомизированные HP образы ESXi 5.x вместе с VIB входят консольные утилиты для работы с массивами. Для ESXi 5.0 и 5.1 это hpacucli, для 5.5 это hpssacli. Синтаксис команд у них совпадает, так что их различием в условиях данной задачи можно пренебречь.

Следующий вопрос – как получать информацию от этих утилит. ESXi – не обычная ОС, Zabbix Agent туда не поставишь. Проще всего – через SSH. Однако, тут встает вопрос безопасности: указывать пароли в явном виде в скрипте и использовать sshpass как-то не очень хочется. Следовательно, будем авторизоваться по RSA – так будет и безопаснее, и надежнее. Ну а сам парсинг вывода hpacucli/hpssacli у меня уже был сделан ранее в рамках реализации локального мониторинга RAID-массивов на Linux серверах (доработанный вариант из wiki.enchtex.info/howto/zabbix/zabbix_hp_smart_array_monitoring), так что осталось только еще раз доработать его напильником, чтобы вызывал hpacucli/hpssacli не локально, а удаленно, плюс проверял версию ESXi, дабы определять, какую из утилит надо дергать.

В итоге получилось следующее:
1. Скрипт по команде Zabbix’а бегает на сервера ESXi, авторизуясь на них по RSA, и дергает консольную утилиту.
2. Ее вывод пишется в локальный обновляемый кэш, дабы не перегружать сервера запросами.
3. Вывод парсится, определяются имеющиеся физические и логические диски, модель контроллера, его параметры. Все это отдается Zabbix’у в стандартном JSON контейнере для LLD.
4. Далее Zabbix’у по команде (externalcheck) отдается информация о состоянии всего этого добра, плюс информация inventory (модели дисков, серийники etc.)
5. Если что не так с контроллером/батареей/дисками – срабатывает триггер и Zabbix начинает грязно ругаться ;)

Это все была теория, теперь перейдем к практике.

Для начала качаем архив со скриптом и шаблоном. Скрипт помещаем на наш сервер (или прокси) Zabbix в папку /usr/lib/zabbix/externalscripts.

Далее настроим авторизацию по RSA для Zabbix на нашем ESXi (все команды выполняются на сервере Zabbix):

1. Создаем открытый и закрытый ключи для пользователя, от имени которого работает Zabbix:

    # mkdir -p /var/lib/zabbix/.ssh
    # chown -R zabbix:zabbix /var/lib/zabbix
    # sudo -u zabbix ssh-keygen -t dsa

Мы получим примерно такой вывод:

    Generating public/private dsa key pair.
    Enter file in which to save the key (/var/lib/zabbix/.ssh/id_dsa):
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved in /var/lib/zabbix/.ssh/id_dsa.
    Your public key has been saved in /var/lib/zabbix/.ssh/id_dsa.pub.

2. Теперь внесем наш открытый ключ на ESXi сервер от имени root’а – таким образом мы даем права Zabbix’у от своего имени ходить на ESXi по SSH с RSA автоизацией и рутовыми правами.

    # cat /var/lib/zabbix/.ssh/id_dsa.pub | ssh root@esxi_ip_addr 'cat >> /etc/ssh/keys-root/authorized_keys'

3. Проверяем:

    # sudo -u zabbix ssh root@esxi_ip_addr

Мы должны попасть на наш esxi без запроса пароля. Настраивать на самом ESXi ничего не требуется.

    # exit

4. Проверяем работу скрипта:

    # sudo -u zabbix /usr/lib/zabbix/externalscripts/hp-smartarray-esxi.sh esxi_ip_addr general model

В ответ мы должны получить модель нашего RAID-контроллера.

На этом настройка завершена. Осталось только в Zabbix привязать к ESXi соответствующий шаблон из архива.

Автор: Vengant

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js