Вики IT-KB

Пошаговые руководства, шпаргалки, полезные ссылки...

Инструменты пользователя

Инструменты сайта


icinga:icinga-monitoring-of-hp-smart-array-and-msa-storage-raid-controllers-via-check_raid-plug-in-with-cciss_vol_status-tool

Мониторинг RAID-контроллеров HP Smart Array (и Compaq MSA) в Icinga с плагинами check_raid и check_cciss

Среди ряда публично доступных плагинов мониторинга RAID-контроллеров HP Smart Array, совместимых с Icinga, по функциональным возможностям можно выделить лишь пару: check_raid и check_cciss. Все прочие Nagios-совместимые плагины, которые попадались мне на глаза по данной тематике, не выдерживают никакой критики.

В этой статье мы рассмотрим пример установки и простейшей настройки плагинов check_raid и check_cciss.



Плагин check_raid

Плагин check_raid по своей сути - большой скрипт, написанный на Perl. Плагин является универсальным, так как поддерживает мониторинг множества разных типов RAID-контроллеров. Основная информация о плагине доступна на странице проекта: nagios-plugin-check_raid

Если заглянем в releases, то увидим, что стабильной версией на данный момент признаётся прошлогодняя версия 4.0.8 (2017-09-01).

Загружать плагин нужно на тот сервер, где нам требуется выполнять проверку контроллеров HP Smart Array.

Но для начала определимся с каталогом размещения плагинов Icinga и закинем путь к нему в переменную окружения с удобным нам именем, например ICINGA_PLUGIN_DIR на Debian 64-bit это будет выглядеть так:

# export ICINGA_PLUGIN_DIR="/usr/lib/nagios/plugins/"

на CentOS 64-bit это будет выглядеть так:

# export ICINGA_PLUGIN_DIR="/usr/lib64/nagios/plugins/"

Скачиваем плагин в каталог плагинов:

# wget https://github.com/glensc/nagios-plugin-check_raid/releases/download/4.0.8/check_raid.pl \
 --directory-prefix=$ICINGA_PLUGIN_DIR

Переходим в этот каталог и делаем плагин исполняемым

# cd $ICINGA_PLUGIN_DIR
# chmod +x ./check_raid.pl

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

# ./check_raid.pl --list-plugins

hp_msa hpacucli mdstat 3 active plugins

Как видим, скрипт на нашей системе поддерживает 3 типа проверок, так называемых «плагинов» (не путать с самим плагинами Icinga), то есть написанных внутри него модулей проверок разных типов.

  • Тип проверки hp_msa доступен на нашем сервере по той причине, что к серверу через контроллеры FC HBA из SAN подключено старое дисковое хранилище HP MSA 1000. Тип мониторинга hp_msa для своей работы предполагает прямое Telnet-подключение к СХД.
  • Тип проверки hpacucli тоже доступен, так как на сервер ранее была установлена утилита hpacucli (пример для Debian | пример для CentOS).
  • Тип проверки mdstat доступен, так как на сервере имеются программные RAID-массивы Linux mdraid.

Попробуем выполнить проверку типа hpacucli

# ./check_raid.pl --plugin hpacucli --bbu-monitoring
OK: hpacucli:[Smart Array P400[OK]: Array A(OK)[LUN1:OK], Array B(OK)[LUN2:OK]]

Как видим, плагин успешно опознал имеющийся в системе RAID-контроллер HP Smart Array P400 и выдал информацию о его состоянии и состоянии RAID-массивов, созданных на этом контроллере.

Однако в нашем примере через контроллеры FC HBA из SAN к серверу подключено старое дисковое хранилище HP MSA 1000.

Установим в систему дополнительно утилиту cciss_vol_status, чтобы с помощью этой утилиты скрипт смог дополнительно проверять старые контроллеры Smart Array/MSA:

# apt-get install cciss-vol-status

Проверим список доступных «плагинов» снова:

# ./check_raid.pl --list-plugins
cciss hp_msa hpacucli mdstat 4 active plugins

Как видим, нам стал доступен ещё один тип проверки - cciss

Для начала убедимся в том, что утилита cciss_vol_status работает сама по себе:

# /usr/bin/cciss_vol_status -V /dev/sg1 /dev/sg26
/dev/sda: (MSA1000) RAID 0 Volume 0 status: OK. /dev/sdb: (MSA1000) RAID 0 Volume 1 status: OK. ... /dev/sdat: (MSA1000) RAID 0 Volume 21 status: OK. /dev/sdau: (MSA1000) RAID 0 Volume 22 status: OK. /dev/sdav: (MSA1000) RAID 0 Volume 23 status: OK.

В моём случае выведен список RAID-дисков, транслированных через SAN на сервере.

Теперь проверим то, как отработает скрипт мониторинга:

# ./check_raid.pl --plugin cciss
OK: cciss:[/dev/sda(MSA1000): Volume 0 (RAID 0): OK, ... /dev/sdav(MSA1000): Volume 23 (RAID 0): OK]

Как видим, скрипт успешно отрабатывает.

Теперь нам потребуется дополнительно выдать права пользователю, от имени которого работает служба Icinga для возможности выполнения утилит диагностики HP без необходимости повышения уровня прав через sudo.

Создать файл с нужными настройками в системном каталоге /etc/sudoers.d/ можно с помощью самого скрипта, вызвав его с ключом –sudoers

# ./check_raid.pl --sudoers
Updating file /etc/sudoers.d/check_raid /etc/sudoers.d/check_raid.new.9550: parsed OK /etc/sudoers.d/check_raid file updated. check_raid OK - sudoers updated

В итоге мы получим примерно следующее содержимое файла /etc/sudoers.d/check_raid

check_raid
# Lines matching CHECK_RAID added by /usr/lib/nagios/plugins/check_raid.pl -S on...
User_Alias CHECK_RAID=nagios, icinga
Defaults:CHECK_RAID !requiretty
CHECK_RAID ALL=(root) NOPASSWD: /usr/bin/cciss_vol_status -V /dev/sg1 /dev/sg26
CHECK_RAID ALL=(root) NOPASSWD: /usr/sbin/hpacucli controller all show status
CHECK_RAID ALL=(root) NOPASSWD: /usr/sbin/hpacucli controller * logicaldrive all show

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

Некорректные манипуляции с настройками sudo могут сломать возможность штатного повышения уровня прав для всех пользователей системы. В результате этого можно полностью потерять административный доступ к системе. В таком случае помогут только отдельные восстановительные меры, использование которых потребует на некоторое время вывести сервер в offline.



Icinga Director и check_raid

Теперь на стороне сервера Icinga в веб-консоли Icinga Director создаём команду, например «check_raid_cciss» (с фактической командой вызова check_raid.pl –plugin cciss)

Затем на основе созданной ранее команды «check_raid_cciss» создаём шаблон службы, например «Disk array HP Compaq RAID»

Назначаем любым удобным способом шаблон службы на хосты, которые необходимо мониторить данной службой (разумеется на всех соответствующих хостах в каталоге $ICINGA_PLUGIN_DIR предварительно должен быть установлен плагин check_raid.pl). В нашем упрощённом примере создано правило Apply Rule с нацеливанием на имя конкретного сервера.

В конечном итоге получаем желаемый результат:

По аналогии можно создать и другие команды, например «check_raid_hpacucli» (с фактической командой вызова check_raid.pl hpacucli –bbu-monitoring) и затем использовать эту команду при создании шаблона службы, которая так же будет в последующем назначена на хосты.

Однако в некоторых случаях для мониторинга контроллеров HP Smart Array более удобным может показаться и другой плагин check_cciss, установку которого рассмотрим далее.



Плагин check_cciss

Плагин check_cciss по сути является обычный shell-скриптом. Этот плагин является более простым и узкоспециализированным, то есть, в отличие от рассмотренного выше плагина check_raid, данный плагин умеет мониторить только контроллеры HP Smart Array. Более подробную информацию о плагине можно получить на странице check_cciss

На мой взгляд, данный плагин интересен тем, что имеет отлаженную возможность мониторинга кэш-батареи контроллера, а также позволяет получить более информативный вывод в случае необходимости, то есть можно включить отображение информации о каждом диске в массиве.

Чтобы было проще загрузить скрипт, я переложил его на github. Загружаем:

# wget https://raw.githubusercontent.com/Aleksey-Maksimov/Icinga2/master/plugins/check_cciss.sh \
 --directory-prefix=$ICINGA_PLUGIN_DIR

Делаем скрипт исполняемым:

# cd $ICINGA_PLUGIN_DIR
# chmod +x ./check_cciss.sh

Чтобы проверить возможность запуска плагина и получить обильную справочную информацию о его использовании, выполним:

# ./check_cciss.sh -h

На обновляемых из репозиториев HP системах вместо утилиты hpssacli сейчас используется утилита ssacli. Синтаксис этих двух утилит схож. Поэтому, чтобы сделать возможной работу скрипта мониторинга сделаем линк:

# ln -s /usr/sbin/ssacli /usr/sbin/hpssacli

Проверим линк:

# ls -la /usr/sbin/hpssacli
lrwxrwxrwx. 1 root root 16 Jun 12 11:48 /usr/sbin/hpssacli -> /usr/sbin/ssacli

По умолчанию дотянутся до утилиты ssacli может только root:

# ls -la /usr/sbin/ssacli
-r-x------. 1 root root 174 May 17 2017 /usr/sbin/ssacli

Дадим права на исполнение файла всем пользователям системы:

# chmod 555 /usr/sbin/ssacli
# ls -la /usr/sbin/ssacli
-r-xr-xr-x. 1 root root 174 May 17 2017 /usr/sbin/ssacli

Теперь нам потребуется дополнительно выдать права пользователю, от имени которого работает служба Icinga для возможности выполнения утилит диагностики HP без необходимости повышения уровня прав через sudo Создадим файл настроек в /etc/sudoers.d/:

# nano /etc/sudoers.d/check_cciss

Наполним файл содержимым:

check_cciss
User_Alias CHECK_CCISS=nagios, icinga
Defaults:CHECK_CCISS !requiretty
#
CHECK_CCISS ALL=(root) NOPASSWD: /usr/sbin/hpacucli controller all show status
CHECK_CCISS ALL=(root) NOPASSWD: /usr/sbin/hpacucli controller * logicaldrive all show
CHECK_CCISS ALL=(root) NOPASSWD: /usr/sbin/hpacucli controller * physicaldrive all show
#
CHECK_CCISS ALL=(root) NOPASSWD: /usr/sbin/hpssacli controller all show status
CHECK_CCISS ALL=(root) NOPASSWD: /usr/sbin/hpssacli controller * logicaldrive all show
CHECK_CCISS ALL=(root) NOPASSWD: /usr/sbin/hpssacli controller * physicaldrive all show

Будьте внимательны.
Некорректные манипуляции с настройками sudo могут сломать возможность штатного повышения уровня прав для всех пользователей системы. В результате этого можно полностью потерять административный доступ к системе. В таком случае помогут только отдельные восстановительные меры, использование которых потребует на некоторое время вывести сервер в offline.

Проверяем работу плагина

# ./check_cciss.sh -v
RAID OK: Smart Array P400 in Slot 1 array A logicaldrive 1 (68.3 GB, RAID 1, OK) array B logicaldrive 2 (68.3 GB, RAID 1, OK) [Controller Status: OK Cache Status: OK Battery/Capacitor Status: OK]

С дополнительным ключом -p в выводе плагина сможем видеть информацию о состоянии каждого диска.

# ./check_cciss.sh -v -p
RAID OK: Smart Array P400 in Slot 1 array A logicaldrive 1 (68.3 GB, RAID 1, OK) array B logicaldrive 2 (68.3 GB, RAID 1, OK) physicaldrive 1I:1:5 (port 1I:box 1:bay 5, SAS, 72 GB, OK) physicaldrive 2I:1:1 (port 2I:box 1:bay 1, SAS, 72 GB, OK) physicaldrive 1I:1:6 (port 1I:box 1:bay 6, SAS, 72 GB, OK) physicaldrive 2I:1:2 (port 2I:box 1:bay 2, SAS, 72 GB, OK) [Controller Status: OK Cache Status: OK Battery/Capacitor Status: OK]



Icinga Director и check_cciss

По аналогии с обозначенным выше примером, на стороне сервера Icinga в веб-консоли Icinga Director создаём команду, например «check_cciss» (с фактической командой вызова check_cciss.sh -v)

Затем на основе созданной ранее команды «check_cciss» создаём шаблон службы, например «Disk array HP Smart Array RAID»

Назначаем любым удобным способом созданный шаблон службы на хосты, которые необходимо мониторить данной службой (разумеется на всех соответствующих хостах в каталоге $ICINGA_PLUGIN_DIR предварительно должен быть установлен плагин check_cciss.sh). В нашем упрощённом примере создано правило Apply Rule с нацеливанием на имена некоторых серверов по маске.

В конечном итоге получаем желаемый результат:



Проверено на следующих конфигурациях:

Версия ОС на стороне клиента Icinga Версия клиента Icinga Скрипт и его версия
Debian GNU/Linux 9.4 (Stretch) x86_64 r2.7.0-1 check_raid 4.0.8 (2017-09-01)
Debian GNU/Linux 9.4 (Stretch) x86_64 r2.7.0-1 check_cciss 1.15 (2017/04/28)
CentOS Linux release 7.5.1804 (Core) x86_64 r2.8.4-1 check_cciss 1.15 (2017/04/28)

Автор первичной редакции:
Алексей Максимов
Время публикации: 14.06.2018 15:22

Обсуждение

Ваш комментарий:
 

icinga/icinga-monitoring-of-hp-smart-array-and-msa-storage-raid-controllers-via-check_raid-plug-in-with-cciss_vol_status-tool.txt · Последние изменения: 15.06.2018 20:46 — Алексей Максимов