===== Мониторинг 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''
# 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Наполним файл содержимым:
# ./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~~