Мониторниг VirtualBox c Nagios

Добрый день читатель.

Сегодня я расскажу о своем опыте мониторинга виртуальных машин VirtualBox с Nagios под OS Ubuntu Linux 10.10.

Задача

Обеспечить проверку наличия запущенного окружения VirtualBox в режиме Headless на Ubuntu с помощью существующей системы мониторинга Nagios. Виртуальныя машина работает на локалку и имеет фейковый IP, поэтому прямой мониторниг хоста из Интернет затруднителен. Прогуглив тему, обнаружил готовый плагин для Nagios check_vbox. Данный плагин написан на bash, и не представляет трудностей для прочтения и понимания. Однако, написан он под версию VirtualBox 4.x. Так же, по всей видимости заточен под CentOS. Для корректной работы в окружении Ubuntu 10.10 и VirtualBox 4.0.x потребовалась легкая доработка напильником. Вот об этом я сейчас расскажу подробнее.

Получение и настройка плагина

Предполагается, что у вас уже имеется установленный и настроенный Nagios и NRPE. Запускать плагин мы будем именно через NRPE.
Для начала, качаем плагин с официального сайта Nagios Exchange.
Пропатченную версию плагина можно взять тут. Изменения приводятся ниже.

wget "http://exchange.nagios.org/components/com_mtree/attachment.php?link_id=1860&cf_id=24" -O /root/check_vbox.tgz

или у меня:

wget "http://blog.msmsoft.info/upload/check_vbox.tgz" -O /root/check_vbox.tgz

и распаковываем его. В случае с ubuntu в /usr/lib/nagios/plugins

cd /usr/lib/nagios/plugins
tar -zxvf /root/check_vbox.tgz

Далее производим изменения согласно данному патчу:


1c1
< #!/bin/sh
---
> #!/bin/bash
111c111
<         VBM="$SUDO -u $USER $VBM"
---
>         VBM="$SUDO -H -u $USER $VBM"
116c116
< 	NAMES=$($VBM list -l vms|$GREP -e Name|cut -d : -f 2|sed 's/^ *//g'|tr '\n' $VMSEPERATOR)
---
> 	NAMES=$($VBM list -l vms|$GREP -e "Name:"|cut -d : -f 2|sed 's/^ *//g'|tr '\n' $VMSEPERATOR)

В результате, плагин будет поддерживать VirtualBox v 4.x.x. и корректно работать с шеллом Ubuntu.

Далее в локальный файл /etc/nagios/nrpe.cfg прописываем:

command[check_vbox]=/usr/lib/nagios/plugins/check_vbox -u vbox -V $ARG1$

и рестартуем:

/etc/init.d/nagios-nrpe-server restart

Предполагается, что VirtualBox окружения работают под пользователем vbox.
И добавляем следующую строчку в /etc/sudoers используя visudo:

nagios  ALL=(vbox) NOPASSWD: /usr/bin/VBoxManage

Опять же, предполагается что NRPE в вашей системе работает под пользователем nagios, как и настроено по умолчанию.

Настройка Nagios

Теперь настало время настроить собственно Nagios сервер для опроса состояния VirtualBox. Для этого, мы добавляем в /usr/local/nagios/etc/objects/commands.cfg следующий код:

# 'check_vbox' command definition
define command{
        command_name    check_vbox
        command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c check_vbox -a $ARG1$
        }

В данном случае, в параметре -a передается одно или несколько, через запятую, имен виртуальных машин состояние которых требуется проверять.

Далее, можно создать проверку для конкретного хоста примерно следующим образом:

define service{
        use generic-service
        host_name                       your.vboxhost.com
        service_description             vbox
        check_command                   check_vbox!Asterisk
        }

На этом собственно все. Надеюсь статья будет полезна.
Комментарии как всегда приветствуются.
Спасибо за внимание 🙂

[ad#ad-horizontal-big]

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