Самое неожиданное в данном устройстве – это способ работы с SNMP. Иногда начинают говорить о том, что оно поддерживает SNMP и даже дают ссылку на документацию. Еще больше запутывает дело, что можно зайти в Command View / System Options / Configure Event Notification и увидеть, что оттуда можно скачать MIB для устройства.
Так вот – это не тот MIB. «Not Penny’s boat!».
HP сделало на данном устройстве только SNMP notifications, в просторечии – SNMP трапы, которые оно отправляет само на SNMP-сервер. Внешние SNMP запросы оно не обрабатывает — snmpwalk по нему прогуляться не сможет, увы.
Некто Pall Sigurdsson ( palli@opensource.is ) написал скрипт check_eva.py (качать здесь), который каким-то образом собирает асболютно все необходимые нам данные о состоянии системы, опрашивая контроллер устройства.
Секрет фокуса
Если фокус объяснить, то вся магия пропадает. На самом деле скрипт работает через SSSU – это HP Storage System Scripting Utility.
Нам потребуется sssu_linux_x86. Найти ее можно на диске где у нас лежит сам софт управления EVA Command View или скачать с сайта HP (здесь или прямая ссылка — здесь ).
Это не самая новая версия утилиты (версия 6.0.2, 2007 год), но она работает. Более того, самая новая нам и не нужна.
Для работы плагина, на ОС, где развёрнут наш сервер мониторинга, потребуется сделать две вещи:
1.удостовериться, что у нас инсталлирован python
icinga# python Python 2.7.3 (default, Sep 11 2012, 11:58:26) [GCC 4.2.1 20070831 patched [FreeBSD]] on freebsd9 Type "help", "copyright", "credits" or "license" for more information. >>>
Если нет, то ставим его любимым способом для нашей ОС.
2. Инсталлировать утилиту SSSU (на самом деле скопировать в путь поиска и сделать симлинк в /usr/bin/sssu, где её хочет найти скрипт).
Если у нас Red Hat Enterprise Linux 2.1, Red Hat Enterprise Linux 3 (x86), Red Hat Enterprise Linux 4 (x86), SUSE Linux Enterprise Server 10 (x86), SUSE Linux Enterprise Server 9 (x86), или любая другая система, которую поддерживает Hewlett-Packard, то дальнейшие шаги нам не потребуются, можно сразу переходить к разделу «Подготовка скрипта к работе».
Но так как мы простых путей не ищем, а система мониторинга у нас стоит на другой ОС (FreeBSD 9.0), то заодно разберемся как запустить бинарник Linux на FreeBSD. Здесь тоже нет ничего сложного, способ документирован.
Обеспечение бинарной совместимости FreeBSD с Linux.
По умолчанию бинарная совместимость с Linux во FreeBSD отключена. Чтобы ее включить, из под root вводим команду:
# kldload linux
Чтобы она была активна при перезагрузке системы, тогда в /etc/rc.conf надо добавить:
linux_enable="YES"
Чтобы удостовериться, что KLD (kernel dynamic linker) загрузился, вводим:
# kldstat Id Refs Address Size Name 1 2 0xc0100000 16bdb8 kernel 7 1 0xc24db000 d000 linux.ko
linux.ko присутствует. После запуска утилиты, получаем ошибку:
icinga# ./sssu_linux_x86 ELF interpreter /lib/ld-linux.so.2 not found
Делаем по инструкции: cтавим эмулятор для библиотек linux:
# cd /usr/ports/emulators/linux_base-f10 # make install distclean
Но sssu опять ругается, скорее всего, библиотек эмулятора мало, нужно что-то еще. Вводим:
ldd sssu_linux_x86
ldd покажет зависимости от библиотек, а также наличие их в системе:
./sssu_linux_x86: librt.so.1 => /lib/librt.so.1 (0x281c8000) libpthread.so.0 => /lib/libpthread.so.0 (0x281d2000) libdl.so.2 => /lib/libdl.so.2 (0x281ec000) libstdc++.so.5 => /usr/lib/libstdc++.so.5 (0x281f1000) libm.so.6 => /lib/libm.so.6 (0x282a7000) libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x282d0000) libc.so.6 => /lib/libc.so.6 (0x282df000) /lib/ld-linux.so.2 (0x2819a000) libpam.so.0 => not found libaudit.so.0 => not found
Не найдены библиотеки libpam.so.0 и libaudit.so.0. Можно посмотреть в каких они rpm лежат, например, через этот сайт — rpm.pbone.net. Поиск показыват, что libpam есть в rpm от Fedora: pam-0.79-8.i386.rpm, а libaudit.so.0 в rpm от Mandriva: libaudit0-1.7.13-9.1.3.i586.rpm. Скачиваем их к себе и достаем из rpm, при помощи rpm2cpio:
rpm2cpio < pam-0.79-8.i386.rpm | cpio -ivd ./lib/libpam.so.0.79 rpm2cpio < libaudit0-1.7.13-9.1.3.i586.rpm | cpio –ivd
Потом копируем обе библиотеки в каталог, где лежат библиотеки совместимости с linux /compat/linux/lib, и сделаем симлинки, чтобы система знала какую подхватывать:
ln -s /compat/linux/lib/libpam.so.0.79 /compat/linux/lib/libpam.so.0 ln -s /compat/linux/lib/libaudit.so.0.0.0 /compat/linux/lib/libaudit.so.0
Запускаем, проверяем. Видим на мониторе:
SSSU for HP StorageWorks Command View EVA Version: 6.0.2 Build: 5 Manager:
Что нам и требовалось. Можете в неё зайти: Manager – указать IP или имя хоста EVA Command View, username, password – соответственно. Утилита работает.
sssu_linux_x86 надо положить в /usr/local/sbin и сделать на нее симлинк, чтобы скрипт знал где ее искать
Для FreeBSD всё.
Подготовка скрипта к работе.
Счастливые пользователи систем Linux, подложившие sssu_linux_x86 в путь поиска и сделавшие на нее симлинк, продолжают с этого места. Итак, у нас работает python и SSSU.
Запускаем скрипт его с ключом —help
icinga# ./check_eva.py --help check_eva version 1.0 This plugin checks HP EVA Array with the sssu command Usage: ./check_eva.py [OPTIONS] OPTIONS: [--host <host>] [--username <user>] [--password <password] [--path </path/to/sssu>] [--mode <mode>] [--test] [--debug] [--help] Valid modes are: check_systems, check_controllers, check_diskgroups, check_disks, check_diskshelfs, check_diskshelves Example: ./check_eva.py --host commandview.example.net --username eva --password myPassword --mode check_systems
С опциями у нас всё ясно:
--host <адрес или имя хоста > --username <Пользователь Command View> --password <его пароль> --path <путь до sssu, если она лежит не в пути поиска> --mode <режим> --test --debug --help
Режимы:
check_systems – общая информация о системе check_controllers – информация о контроллерах check_diskgroups – информация о дисковых группах check_disks – информация о дисках check_diskshelfs, check_diskshelves – информация о дисковых полках.
Проверяем:
icinga# ./check_eva.py --host ip.ad.dr.es --username user --password pass OK - 1 objects found | '/Eva_totalstoragespace'=7539.91 '/Eva_usedstoragespace'=4737.25 '/Eva_availablestoragespace'=2802.66 /Eva = good (initialized_ok) - licensestate = good - systemtype = HSV300 - firmwareversion = 09534000 - nscfwversion = CR18CBlep-09534000 - totalstoragespace = 7539.91 - usedstoragespace = 4737.25 - availablestoragespace = 2802.66
EVA отзывается.
Дальше детали варьируются от используемого конфигуратора, но эта последовательность шагов одинакова для nagios/icinga:
1.Создаем команду проверки.
Если не хотим светить пароли в конфигураторе, то в системном файле nagios/icinga под названием resource.cfg прописываем:
$USER7$ = user_name_for_EVA,
$USER8$= password_for_EVA
Номера – любые, какие у вас свободны.
Наша команда проверки имеет вид:
$USER1$/check_eva.py —host $HOSTADDRESS$ —username $USER7$ —password $USER8$ —mode $ARG1$
2.Потом для каждого режима запроса создаем сервисы, привязываем их к нашей команде проверки, у которых меняется лишь аргумент $ARG1$.
3.Назначаем сервисы на хосты напрямую или включаем их в темплейт, а темплейт назначаем на хосты (если стоек у нас много)
4.Сохраняем конфигурацию, дожидаемся, когда закончится опрос новых устройств:
Смотрим на картинку. Вся информация о нашей СХД как на ладони:
Серый цвет – это признак того, что на данной строке стоит курсор, там, на самом деле, тоже всё ОК.
Известные ограничения
1.Скрипт не будет работать с SSSU версии 10.2 и новее. Отлично работает с версиями 9.4 и древнее. Возможно, новые модели EVA не будут работать со старыми версиями SSSU — это не проверялось.
2.Автор давно не выходит на связь. Но исходный текст скрипта есть, так что всегда можно потратить немного времени и допилить под свои нужды. «Открытый софт != закрытый софт».
P.S. Очень бы хотелось, чтобы эксперты рассказали, можно ли добиться аналогичного результата в системе мониторинга zabbix и какая последовательность шагов нужна, если учесть, что в системе из коробки нет темплейтов под HP EVA, SSSU не входит в перечень поддерживаемых агентов, а по SNMP целевая система не отзывается.
Хинт: Проблему можно решить. Но другим, более длинным, способом.
ссылка на оригинал статьи http://habrahabr.ru/post/170903/
Добавить комментарий