===== Мониторинг RAID-контроллеров HP Smart Array (и Compaq MSA) в Icinga с плагинами check_raid и check_cciss ===== {{:icinga:pasted:20180614-164105.png }} Среди ряда публично доступных плагинов мониторинга **RAID**-контроллеров **HP Smart Array**, совместимых с **Icinga**, по функциональным возможностям можно выделить лишь пару: [[https://github.com/glensc/nagios-plugin-check_raid|check_raid]] и [[https://exchange.nagios.org/directory/Plugins/Hardware/Storage-Systems/RAID-Controllers/check_cciss--2D-HP-and-Compaq-Smart-Array-Hardware-status/details|check_cciss]]. Все прочие **Nagios**-совместимые плагины, которые попадались мне на глаза по данной тематике, не выдерживают никакой критики. В этой статье мы рассмотрим пример установки и простейшей настройки плагинов **check_raid** и **check_cciss**. ---- \\ ==== Плагин check_raid ==== Плагин **check_raid** по своей сути - большой скрипт, написанный на **Perl**. Плагин является универсальным, так как поддерживает мониторинг множества разных типов RAID-контроллеров. Основная информация о плагине доступна на странице проекта: [[https://github.com/glensc/nagios-plugin-check_raid|nagios-plugin-check_raid]] Если заглянем в [[https://github.com/glensc/nagios-plugin-check_raid/releases|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 ([[https://blog.it-kb.ru/2018/02/27/installing-hpe-system-management-tools-smh-ssa-on-the-hp-proliant-dl380-g5-server-with-debian-linux-9-3-stretch/|пример для Debian]] | [[https://wiki.it-kb.ru/unix-linux/centos/centos-linux-7-4-on-hp-proliant-dl380-g5-install-hpe-system-management-tools-homepage-smh|пример для 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**. Установим в систему дополнительно утилиту [[http://cciss.sourceforge.net/|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'' # 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** могут сломать возможность штатного повышения уровня прав для всех пользователей системы. В результате этого можно полностью потерять административный доступ к системе. В таком случае помогут только [[unix-linux:debian:stretch:how-to-restore-root-access-to-debian-linux-if-sudo-does-not-work|отдельные восстановительные меры]], использование которых потребует на некоторое время вывести сервер в **offline**. \\ ---- ==== Icinga Director и check_raid ==== Теперь на стороне сервера **Icinga** в веб-консоли **Icinga Director** создаём команду, например "**check_raid_cciss**" (с фактической командой вызова ''check_raid.pl --plugin cciss'') {{:icinga:pasted:20180614-161714.png}} Затем на основе созданной ранее команды "**check_raid_cciss**" создаём шаблон службы, например "**Disk array HP Compaq RAID**" {{:icinga:pasted:20180614-162023.png}} Назначаем любым удобным способом шаблон службы на хосты, которые необходимо мониторить данной службой (разумеется на всех соответствующих хостах в каталоге ''$ICINGA_PLUGIN_DIR'' предварительно должен быть установлен плагин **check_raid.pl**). В нашем упрощённом примере создано правило **Apply Rule** с нацеливанием на имя конкретного сервера. {{:icinga:pasted:20180614-162337.png}} В конечном итоге получаем желаемый результат: {{:icinga:pasted:20180614-162819.png}} По аналогии можно создать и другие команды, например "**check_raid_hpacucli**" (с фактической командой вызова ''check_raid.pl hpacucli --bbu-monitoring'') и затем использовать эту команду при создании шаблона службы, которая так же будет в последующем назначена на хосты. Однако в некоторых случаях для мониторинга контроллеров HP Smart Array более удобным может показаться и другой плагин **check_cciss**, установку которого рассмотрим далее. \\ ---- ==== Плагин check_cciss ==== Плагин **check_cciss** по сути является обычный **shell**-скриптом. Этот плагин является более простым и узкоспециализированным, то есть, в отличие от рассмотренного выше плагина **check_raid**, данный плагин умеет мониторить только контроллеры **HP Smart Array**. Более подробную информацию о плагине можно получить на странице [[https://exchange.nagios.org/directory/Plugins/Hardware/Storage-Systems/RAID-Controllers/check_cciss--2D-HP-and-Compaq-Smart-Array-Hardware-status/details|check_cciss]] На мой взгляд, данный плагин интересен тем, что имеет отлаженную возможность мониторинга кэш-батареи контроллера, а также позволяет получить более информативный вывод в случае необходимости, то есть можно включить отображение информации о каждом диске в массиве. Чтобы было проще загрузить скрипт, я переложил его на github. Загружаем:
# wget https://raw.githubusercontent.com/Aleksey-Maksimov/check_cciss/master/check_cciss \
 --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
Наполним файл содержимым: 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** могут сломать возможность штатного повышения уровня прав для всех пользователей системы. В результате этого можно полностью потерять административный доступ к системе. В таком случае помогут только [[unix-linux:debian:stretch:how-to-restore-root-access-to-debian-linux-if-sudo-does-not-work|отдельные восстановительные меры]], использование которых потребует на некоторое время вывести сервер в **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'') {{:icinga:pasted:20180614-173459.png}} Затем на основе созданной ранее команды "**check_cciss**" создаём шаблон службы, например "**Disk array HP Smart Array RAID**" {{:icinga:pasted:20180614-174011.png}} Назначаем любым удобным способом созданный шаблон службы на хосты, которые необходимо мониторить данной службой (разумеется на всех соответствующих хостах в каталоге ''$ICINGA_PLUGIN_DIR'' предварительно должен быть установлен плагин **check_cciss.sh**). В нашем упрощённом примере создано правило **Apply Rule** с нацеливанием на имена некоторых серверов по маске. {{:icinga:pasted:20180614-174353.png}} В конечном итоге получаем желаемый результат: {{:icinga:pasted:20180614-174706.png}} \\ ---- Проверено на следующих конфигурациях: ^ Версия ОС на стороне клиента 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) | ---- {{:user:blogroot.png?50&nolink |}} Автор первичной редакции:\\ [[user:blogroot|Алексей Максимов]] \\ Время публикации: 14.06.2018 15:22 {{tag>Icinga "Icinga Director" Monitoring Plugin HP "Smart Array" "Smart Array P400" P400 MSA "MSA 1000" RAID "Disk array" cciss Storage Nagios Linux Debian CentOS}} ~~DISCUSSION~~