Мониторинг состояния серверов HP Proliant в nagios/icinga

от автора

Плагинов для систем мониторинга существует огромное количество. Можно посмотреть и найти нужное в каталогах exchange.nagios и monitoringexchange. При поисках нужного плагина проверять лучше в обоих репозиториях — несмотря на кажущуюся идентичность, их содержимое различается.

Другое дело, что качество и функционал плагинов, даже сходных между собой, сильно разнятся — есть быстро слепленные на коленке хаки, работающие в строго определенных условиях и решающих узкую задачу. После написания автор плагина не стал выбрасывать его в /dev/null, а решил поведать о нём миру. Другие плагины представляют собой добротно сделанные продукты, работающие с целыми семействами устройств и предоставляющих обширную информацию о целевых системах.

Вот о последних и хотелось бы поговорить, тем более, что за время работы с nagios/icinga обнаружилось, что русскоязычной информации по плагинам для систем мониторинга крайне мало.

Данная статья посвящена мониторингу серверов HP Proliant, и автор искренне надеется, что она поможет в работе тем, кто имеет оборудование HP, и хотел бы более полно отслеживать его параметры.

Управление серверами HP Proliant в разных видах исполнения (iLO).

Большинство серверов Proliant управляются через iLO – integrated Lights-Out. Базовая версия iLO позволяет через http-интерфейс удаленно управлять сервером: включить/выключить питание от сети, включить/выключить синий сигнальный индикатор UID, по которому сервер можно найти в стойке, а также посмотреть логи ILO/Integrated Managament (IML), а также текущие параметры внутренних компонентов – температуры процессоров, обороты вентиляторов и прочая полезная для здоровья системы информация. Есть iLO Advanced License – это продвинутая версия, на которую необходимо купить лицензию (активационный ключ). Она недорогая, что-то около $50 и позволяет перенаправлять терминал/клавиатуру/мышь на удалённый браузер, после чего становится возможным контролировать загрузку BIOS, а также заходить в уже загрузившуюся систему.

В настоящий момент существует iLO четырех версий. Просто iLO, иногда именуемое iLO1, ставившееся на сервера Proliant поколений G1 и G4, iLO2 (G5-G6)и iLO3 ставившееся на G7. С поколения G8, которое теперь называется gen8, на сервера ставится iLO4. Если интересно, что делается внутри iLO4, то на хабре есть хорошая статья по этому поводу Проливая свет на HP ProLiant iLO Management Engine.

У всех iLO свой независимый сетевой интерфейс подключения. Он активен, даже если сервер находится в состоянии power down, главное, чтобы Proliant был физически включен в розетку. На iLO назначается свой адрес, сам интерфейс обычно включают в отдельный коммутатор управления с отдельным VLAN и своей подсетью.

На блейдовых вариантах серверов Proliant также установлены управляющие интерфейсы iLO; у каждого лезвия – свой собственный. Отдельный интерфейс управления (Onboard Administrator) есть и у блейдовой стойки c3000/c7000. Помимо информации о общем состоянии блоков питания, датчиков температуры в стойке, из интерфейса Onboard Administrator есть доступ к каждому iLO лезвия. На самих лезвиях ставились, минимум, iLO2 даже на поколениях G1. Последние поколения лезвий (gen8) также оснащены iLO4.

Версии Integrity iLO (Integrity iLO-iLO3) также ставятся на серверах Integrity и блейдах Superdome 2 — такие сервера встречаются не часто, так что рассматривать их не будем.

В некоторые системы, ныне уже устаревшие, но еще работающие (DL760 G2 — кто ж такого 8-процессорного коня выбросит?), которые изначально не были оснащены iLO можно установить карту RILOE II (полноразмерный PCI) с отдельным физическим LAN интерфейсом RJ45. RILOE II – (Remote Insight Lights-Out Edition II) достаточно забавная штука – у неё есть KVM-интерфейс (keyboard/vga/mouse) – для управления со стойки, RJ45 для подключения к сети и удаленного управления, а также… адаптер для внешнего питания.

Существует также усеченная версия iLO — LO100i, она ставилась на поколения G6 и G7 некоторых моделей начального уровня, например DL160,DL180,DL320, а также недорогих серий ML. В поколениях gen8 серверов даже начальной линейки, LO100i уже не будет (по крайней мере так было сказано на конференции HP). LO100i работает по одному из двух сетевых интерфейсов Proliant, причем может делать это как в выделенном (dedicated) так и в разделяемом (shared) режиме. В выделенном режиме один из сетевых интерфейсов сервера полностью занят под LO100i, в разделяемом – общая полоса делится между данными и управлением. Управление занимает небольшую полосу и практически не влияет на данные. У LO100i также есть свой отдельный сетевой адрес, который независим от основного адреса сервера. В некоторых моделях начального уровня (например ML110/ML150 G2), управляющий интерфейс отсутствует, но при необходимости, его можно организовать посредством установки специальной карты управления RMP (Remote Management Processor). Карта не слотовая – крепится на разъемы материнской платы (piggyback), и поставить ее на другие модели Proliant нельзя.

В реальной жизни с LO100i не всё хорошо складывается. Он прекрасно работает, если два сетевых интерфейса Proliant у нас либо работают независимо, либо сконфигурированы в Network Fault Tolerance (NFT) или Transmit Load Balancing (TLB) with hot spare. При попытке объединения линков в LACP (а это самый эффективный режим использования нескольких сетевых интерфейсов), LO100i становится недоступен, хотя сами данные по интерфейсам ходят на ура. Причем, недоступен ни с внешней сети – с рабочей станции находящейся в том же VLAN на том же коммутаторе, ни с системной консоли. Поскольку документация утверждает обратное, по данному поводу заведен кейс в HP, причем еще в конце ноября прошлого года. На настоящий момент проблема потихоньку доэскалировалась до L1 (разработчики), но каких-то определенных рекомендаций HP (или хотя бы информации о понимании причин) так и не выдал, хотя если судить по трекеру инженеры что-то делают. Проблема, конечно, есть, но на задачу мониторинга она влияет лишь косвенно, хотя и не даёт возможности оперативно управлять сервером.

На сайте exchange.nagios.org есть достаточно большое количество плагинов, которые работают непосредственно с ilo делая запросы через http посредством XML. Но они хорошо работают только с iLO2 и более новыми версиями. iLO1 через XML очень неразговорчив и сообщает мало полезной информации, а ведь сервера с iLO1 до сих пор живы и здоровы, и понимать, что происходит у них внутри — надо.

Плагин check_ilo2_health.pl

Для проверки iLO наиболее эффективным показался check_ilo2_health.pl. Качать здесь. На exchange.nagios.org лежит более старая версия, которая не понимает iLO4.

Инсталляция скрипта не требует большого труда. Скрипт копируется в каталог, где лежат прочие скрипты nagios/icinga, затем в конфигураторе прописывается команда проверки и назначается на хосты.

$USER1$/check_ilo2_health.pl -H $HOSTADDRESS$ -d 1 -u $ARG1$ -p $ARG2$ 

, где $ARG1$, $ARG2$ — пользователь/пароль iLO интерфейса

Для работы скрипта потребуется инсталляция пакетов Perl (ставятся через CPAN): Nagios::Plugin, IO::Socket::SSL and XML::Simple.

Опции:
-e — плагин игнорирует сообщения “syntax error” в выводе XML. Может быть полезно для старых фирмварей.
-n — без индикаторов температуры
-d — температурные данные совместимы с PerfParse
-v — выводить полностью XML сообщение (для отладки)
-3 — поддержка iLO3 и iLO4
-a — проверка отказоустойчивости вентиляторов (если поддерживается оборудованием)
-b — проверка отсеков HDD (если поддерживается оборудованием)
-o — проверка отказоустойчивости блоков питания (если поддерживается оборудованием)

Помимо возвращаемой информации, скрипт нужен для проверки физической доступности iLO извне. Обычного ping тут может оказаться недостаточно.

HP Server Insight Manager

Было бы ошибкой думать, что компания HP ничего не может предложить администратору. HP Server Insight Manager (HP SIM) – решение, ориентированное на управление и мониторинг платформы Proliant и что важно – для продуктов HP его использование бесплатно (качаем здесь). Поддержка – за деньги. Дополнения для мониторинга некоторых сторонних систем тоже платные. Для его полноценной работы на управляемых серверах необходима установка драйверов.

Возникает хороший вопрос: Можно ли добавить информационность HP SIM к возможностям icinga/nagios для сбора информации в одном приложении мониторинга? И ведь что удивительно: нашелся человек, который сумел решить эту задачу.

Плагин check_hpasm

Плагин check_hpasm создан в компании ConSol labs. Его автор Герхард Лауссер (Gerhard Lausser). Плагин предназначен для сбора информации со следующих систем Proliant:

• Linux, где установлен HP System Health Application and Insight Management Agent (HPASM)
• Windows 2003/2008/2008 R2/2012 – с установленными драйверами HP SIM.
• Блейдовые стойки HP (c7000/c3000) с Onboard Administrator.

Во всех трех случаях должен быть поднят и настроен SNMP.

На чём это проверялось. Система мониторинга Icinga 1.8.4 (полностью совместима с Nagios) установлена на FreeBSD 9.0, так что если у вас другая система мониторинга или ОС делайте поправку на зависимости и пути. В системе установлен Perl, со всеми необходимыми дополнениями.

Инсталляция check_hpasm.

Качаем свежую версию. Идём на страницу плагина и ищем check_hpasm, ссылку на него. Она находится внизу страницы. На момент написания статьи была доступна версия 4.6.3.

Плагин подлежит сборке и инсталляции:
1. Закидываем его на нашу систему мониторинга по ftp или другим способом.
2. Делаем ему tar xvf check_hpasm-4.6.3.tar.gz
3. cd check_hpasm-4.6.3
4. запускаем ./configure

Ключи для configure:

--libexecdir=/usr/local/libexec/nagios 

(место, где лежат скрипты вида check_*. у меня оно притулилось по старинке на нагиосовское место, хотя есть и /usr/local/libexec/icinga)

--with-nagios-user=icinga 

(имя пользователя под которым запускается система мониторинга, для nagios будет nagios)

--with-nagios-group=icinga 

(имя группы, в которую входит пользователь, из под которого запускается система мониторинга, для icinga=icinga для nagios=nagios)

--enable-perfdata=YES 

(выводить или нет информацию для сбора статистики – ДА, по умолчанию = нет)

--enable-extendedinfo=YES 

(выводить или нет расширенную информацию – ДА, по умолчанию = нет)

Итоговая строка для конфигурации будет иметь вид:

./configure --with-nagios-user=icinga --with-nagios-group=icinga --enable-perfdata=yes  --with-degrees=yes --enable-perfdata=yes --enable-extendedinfo=yes --libexecdir=/usr/local/libexec/nagios 

смотрим на вывод configure, убеждаемся, что нас всё устраивает.

checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for gawk... no checking for mawk... no checking for nawk... nawk checking whether make sets $(MAKE)... yes checking how to create a pax tar archive... gnutar checking build system type... i386-unknown-freebsd9.0 checking host system type... i386-unknown-freebsd9.0 checking whether make sets $(MAKE)... (cached) yes checking for gawk... (cached) nawk checking for sh... /bin/sh checking for perl... /usr/bin/perl configure: creating ./config.status config.status: creating Makefile config.status: WARNING:  'Makefile.in' seems to ignore the --datarootdir setting config.status: creating plugins-scripts/Makefile config.status: WARNING:  'plugins-scripts/Makefile.in' seems to ignore the --datarootdir setting config.status: creating plugins-scripts/subst                       --with-perl: /usr/bin/perl                 --with-nagios-user: icinga                --with-nagios-group: icinga                --with-noinst-level: unknown                    --with-degrees: yes                 --enable-perfdata: yes                 --enable-extendedinfo: yes                 --enable-hwinfo: yes                 --enable-hpacucli: no  

Потом делаем make install

В каталоге который фигурирует в ключе libexecdir должен появиться скрипт check_hpasm, размером где-то 307К, если его нет, или он ощутимо меньше, то скрипт не собрался. Если всё хорошо, то проверить какие на нем разрешения и выставить правильные, если что.

Проверить работоспособность плагина можно запустив в командной строке:

check_hpasm –H <proliant_ip> --community <SNMP_community>  -v  

После чего скрипт выдаст подробную информацию о состоянии удалённой системы. Например, запрос для блейдовой стойки c7000 в nagios/icinga будет выглядеть так:

OK - System: 'bladesystem c7000 enclosure g2', S/N: 'GBXXXXXXXX', hardware working fine, temp_1:1:1=20 temp_1:1:12=20 temp_1:1:13=20 temp_1:1:2=31 temp_1:1:4=20 temp_1:1:5=19 temp_1:1:6=19 temp_1:1:7=20 common enclosure Blade7000 condition is ok (Ser: GBXXXXXXXX, FW: 3.70) fan 1:1:1 is present, location is 1, redundance is other, condition is ok fan 1:1:10 is present, location is 10, redundance is other, condition is ok fan 1:1:2 is present, location is 2, redundance is other, condition is ok fan 1:1:3 is present, location is 3, redundance is other, condition is ok fan 1:1:4 is present, location is 4, redundance is other, condition is ok fan 1:1:5 is present, location is 5, redundance is other, condition is ok fan 1:1:6 is present, location is 6, redundance is other, condition is ok fan 1:1:7 is present, location is 7, redundance is other, condition is ok fan 1:1:8 is present, location is 8, redundance is other, condition is ok fan 1:1:9 is present, location is 9, redundance is other, condition is ok Chassis temperature is 20C (42 max) Blade Bay temperature is 20C (42 max) Blade Bay temperature is 20C (42 max) System temperature is 31C (75 max) Blade Bay temperature is 20C (42 max) Blade Bay temperature is 19C (42 max) Blade Bay temperature is 19C (42 max) Blade Bay temperature is 20C (42 max) manager 1:1:1 is present, location is 1, redundance is redundant, condition is ok, role is active manager 1:1:2 is present, location is 0, redundance is notRedundant, condition is ok, role is standby power enclosure 1:1 'Blade7000' condition is ok power supply 1:1:1 is present, condition is ok (Ser: 5AGUD0AHLZ93AC, FW: ) power supply 1:1:2 is present, condition is ok (Ser: 5AGUD0AHLZ93AE, FW: ) power supply 1:1:3 is present, condition is ok (Ser: 5AGUD0AHLZ93AL, FW: ) power supply 1:1:4 is present, condition is ok (Ser: 5AGUD0AHLZ93AK, FW: ) power supply 1:1:5 is present, condition is ok (Ser: 5AGUD0AHLZ92LT, FW: ) power supply 1:1:6 is present, condition is ok (Ser: 5AGUD0AHLZ93AD, FW: ) net connector 1:1:1 is present, model is HP 1Gb Ethernet Pass-Thru Module for c-Class BladeSystem (Ser: TWTXXXXXXX, FW: ) net connector 1:1:2 is present, model is HP 1Gb Ethernet Pass-Thru Module for c-Class BladeSystem (Ser: TWTXXXXXXX, FW: ) net connector 1:1:3 is present, model is BROCADE HP B-series 8/12c SAN Switch BladeSystem c-Class (Ser: CNXXXXXXXX, FW: ) net connector 1:1:4 is present, model is BROCADE HP B-series 8/12c SAN Switch BladeSystem c-Class (Ser: CNXXXXXXXX, FW: ) server blade 1:1:1 'BLADE1' is present, status is ok, powered is on server blade 1:1:10 'BLADE10' is present, status is ok, powered is on server blade 1:1:2 'BLADE2' is present, status is ok, powered is on server blade 1:1:3 'BLADE3' is present, status is ok, powered is on server blade 1:1:4 'BLADE4' is present, status is ok, powered is on server blade 1:1:9 'BLADE9' is present, status is ok, powered is on 

Если обнаружится неисправный компонент, то плагин вернёт WARNING и укажет причину. Например,
так выглядит сообщение о проблемной батарее в акселераторе:

WARNING - controller accelerator battery needs attention, System: 'proliant dl380 g4', S/N: 'GB8640P5NS', ROM: 'P51 04/26/2006' checking cpus cpu 0 is ok cpu 1 is ok checking power supplies powersupply 1 is ok powersupply 2 is ok checking fans overall fan status: system=ok, cpu=ok fan 1 is present, speed is normal, pctmax is 50%, location is cpu, redundance is redundant, partner is 2 fan 2 is present, speed is normal, pctmax is 50%, location is cpu, redundance is redundant, partner is 3 fan 3 is present, speed is normal, pctmax is 50%, location is ioBoard, redundance is redundant, partner is 4 fan 4 is present, speed is normal, pctmax is 50%, location is ioBoard, redundance is redundant, partner is 5 fan 5 is present, speed is normal, pctmax is 50%, location is cpu, redundance is redundant, partner is 6 fan 6 is present, speed is normal, pctmax is 50%, location is cpu, redundance is redundant, partner is 7 fan 7 is present, speed is normal, pctmax is 50%, location is powerSupply, redundance is redundant, partner is 8 fan 8 is present, speed is normal, pctmax is 50%, location is powerSupply, redundance is redundant, partner is 1 checking temperatures 1 cpu temperature is 38C (62 max) 2 cpu temperature is 37C (87 max) 3 ioBoard temperature is 34C (60 max) 4 cpu temperature is 40C (87 max) 5 powerSupply temperature is 31C (53 max) checking memory dimm module 0:1 (module 1 @ cartridge 0) is ok dimm module 0:2 (module 2 @ cartridge 0) is ok dimm module 0:3 (module 3 @ cartridge 0) is not present dimm module 0:4 (module 4 @ cartridge 0) is not present dimm module 0:5 (module 5 @ cartridge 0) is not present dimm module 0:6 (module 6 @ cartridge 0) is not present checking disk subsystem controller accelerator is failed controller accelerator battery is failed logical drive 2:1 is ok (mirroring) physical drive 2:144 is ok physical drive 2:145 is ok scsi controller 3:1 in slot 1 is ok ide controller 0 in slot -1 is ok and unused checking ASR ASR overall condition is ok checking events 

Кстати, через имеющийся на сервере ILO1 эту информацию другими плагинами собрать нельзя.

Получить еще более детальную информацию можно, добавив в командную строку ключ –vv, а если надо совсем простынь, чтобы завернуться и ползти на кладбище от разрыва мозга, то –vvv

Прописываем в командах проверки nagios:

$USER1$/check_hpasm --hostname $HOSTADDRESS$ --community public  –v 

Вместо public должно стоять ваше SNMP комьюнити. Назначаем команду проверки хостам и сервисам.

Плагин опирается в своей работе на возвращаемые драйверами данные. Иногда (обычно это ошибки в фирмвари) они могут возвращать некорректные значения – наличие физически отсутствующих компонентов, неверные параметры температуры (99 градусов, как это было с iLO4 у gen8) и т.д. Для этого существует обширный набор ключей, которыми можно исключить некоторые датчики или подсистемы целиком. Описание ключей большое и полностью приведено на странице плагина в разделе Blacklisting.

Для работы под Windows 2003/2008/2012 на Proliant надо установить:

1. SNMP службу (по умолчанию не установлена, лежит в системных компонентах)и правильно её сконфигурировать (указать коммьюнити/ прописать адрес nagios/icinga-сервера в качестве SNMP-сервера / прописать адрес для отправки SNMP-трапов). WBEM провайдеры/SIM драйверы зависят от SNMP службы. WBEM — Web-based Enterprise Management.
2. Последние версию драйверов iLO, HP System Insight Manager и WBEM провайдеров под нужную версию системы.

Для Linux HPASM ставится аналогично – также требуется настройка SNMP и драйверов. Подробно описано в HOWTO

Ставить драйвера можно двумя путями:
1. Тягать их поштучно со страниц поддержки сайта HP для каждой из имеющихся в хозяйстве моделей, например, для HP ProLiant DL380 G4 Server они будут лежать в разделе Driver — System Management (драйвера для iLO)или Software — System Management (WBEM провайдеры и драйвера SIM)
2. Скачать SPP (Service Pack for Proliant – бывший PSP) – последняя версия 2012.10.0 . Для скачки требуется бесплатная регистрация в HP Passport и ряд манипуляций с приобретением за $0.0 права на скачку .iso с SPP. (Забыл упомянуть, что с HP SIM та же история).

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

Замеченные проблемы:
1. На десяток-другой серверов может ставиться оооооочень долго, почему – не ясно.
2. Некоторые сервера не поддаются автоматической установке, особенно если система голая — WBEM/SIM драйвера ранее не стояли. Придётся ставить руками.
3. Иногда на целевых серверах SPP не даёт выбирать WBEM/SIM драйверы – их тоже придётся ставить руками, особенно это касается серверов с LO100i. Замечено на DL180G6 и DL160G6.
4. Драйвера WBEM/SIM не ставятся, если стоит Windows 2008 R2 на официально неподдерживаемой архитектуре (типа устаревших DL360G4 или DL380G4). В дебрях интернета нашлось решение. Поскольку это ЖЖ и ссылка может исчезнуть, то вкратце – драйвера качаются отдельно с сайта (HP ProLiant iLO Advanced and Enhanced System Management Controller Driver for Windows Server 2008 x64 Editions), для cpqsetup.exe устанавливается режим совместимости с Windows Server 2008 (SP1). После этого всё ставится нормально.

Замеченные ошибки и недостатки check_hpasm

На момент версии 4.6.3 замечена следующая ошибка: При запуске на FreeBSD плагин выводит сообщение:

Use of uninitialized value in lc at /usr/local/libexec/nagios/check_hpasm line 3622. 

На работу собственно плагина и выдаваемую им информацию влияния не замечено.
Было высказано предположение об отсутствии утилиты lc, но инсталляция утилиты ничего не дала. Ошибка осталась. Автору плагина сообщено.

К недостаткам следует отнести вывод в юниксовом формате (от начала эпохи) даты строк из IML, что делает их плохо воспринимаемыми:

Event: 76 Added:1357193160 Class: (System Revision) informational ROM flashed (New version: 12/02/2011) 

Можно пересчитать на онлайновом калькуляторе. Например, здесь.

О замеченных ошибках можно отписать автору плагина (plain english). Г.Лауссер человек занятой, но на сообщениях о проблемах или неправильном поведении check_hpasm всегда старается ответить.

Польза от плагина

C помощью данного плагина были оперативно обнаружены
• Неисправные батареи на акселераторах дисковых контроллеров в DL360G4, что приводило к падению скорости на запись на присоединенные массивы MSA20.
• Обнаружен заклинивший вентилятор в одном из Proliant. Вентилятор заменен.
• Обнаружен умерший резервный блок питания на одном из серверов. БП заменен.

Конечно, если каждый день дозором обходить все iLO-интерфейсы и внимательно просматривать логи IML, то подобные ошибки можно заметить, но возникает вопрос – а когда работать? Данный плагин в сочетании с nagios/icinga позволяет упростить процесс администрирования и полностью охватить инфраструктуру серверов HP Proliant.

Некоторые полезные руководства

1.HP Integrated Lights-Out User Guide.
2.HP Integrated Lights-Out 2 User Guide.
3.HP iLO 3 User Guide
4.HP iLO 4 User Guide
5.HP management software for Linux on ProLiant servers.HOWTO 6th edition
6.HP Remote Insight Lights-Out Edition II User Guide
7.HP ProLiant Lights Out-100 User Guide

P.S. Будут ли интересны статьи по другим аспектам мониторинга — конфигураторам, практическим наработкам, интересным плагинам, аддонам, нетривиальным железякам? Материалу накопилось много — хоть книжку пиши.

ссылка на оригинал статьи http://habrahabr.ru/post/168981/


Комментарии

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *