29 июн. 2012 г.

Nagios NRPE контроль размера файла (filesize)

Сразу оговорюсь, что система, в которой я настраивал это хозяйство, ранается на Debian 6, а сам Nagios установлен не из пакетов, а из сорцов как в RedHat - в /usr/local/nagios - так проще и удобней, т. к. почти вся документация написана под такой вариант установки.

Для мониторинга нам понадобится плугин к Nagios - NRPE(Nagios Remote Plugin Executor). Смысл его работы показан на рисунке:


На винде он так же точно работает, только через NSClient++.

Итак, приступим. Процесс настройки и установки хорошо описан в официальной пдф-ке: http://nagios.sourceforge.net/docs/nrpe/NRPE.pdf . Но я опишу свои шаги.

1. Устанавливаем необходимую библиотеку:

apt-get update
apt-get install build-essential libssl-dev xinetd



2. Скачиваем сам плугин и распаковываем. На момент написания статьи последняя версия была 2.13:

wget http://prdownloads.sourceforge.net/sourceforge/nagios/nrpe-2.13.tar.gz
tar -xzvf nrpe-2.13.tar.gz

3. Переходим в директорию с сорцами плугина, конфигурим и устанавливаем:

cd nrpe-2.13/
./configure
make all

make install-plugin
make install-daemon
make install-daemon-config

4. Также можно запускать nrpe с помощью xinetd, как я и сделал:

make install-xinetd
nano /etc/xinetd.d/nrpe

Где прописываем:


# default: on
# description: NRPE (Nagios Remote Plugin Executor)
service nrpe
{
        flags           = REUSE
        socket_type     = stream
        port            = 5666
        wait            = no
        user            = nagios
        group           = nagios
        server          = /usr/local/nagios/bin/nrpe
        server_args     = -c /usr/local/nagios/etc/nrpe.cfg --inetd
        log_on_failure  += USERID
        disable         = no
        only_from       = 127.0.0.1
}


И рестартуем xinetd:

/etc/init.d/xinetdt restart
5. Создаем ссылку чтобы без полного пути выполнять команду:

ln -s /usr/local/nagios/libexec/check_nrpe /usr/bin/check_nrpe

6. Проверяем и перезапускаем Nagios:

check_nrpe
/etc/init.d/nagios restart

7. Конфиг NRPE находится тут: /usr/local/nagios/etc/nrpe.cfg . В нем нужно прописать IP адреса машин, которые мониторятся, например:

allowed_hosts=127.0.0.1,192.168.2.0/24

8. Проверяем работоспособность NRPE (вместо localhost можно указывать адрес машины, которая мониторится, но там должен быть настроен NRPE Listener):

/usr/local/nagios/libexec/check_nrpe -H localhost

Кстати, помним, что NRPE использует порт 5666 (по умолчанию), соответственно, его надо открыть ка кна стороне сервера, так и клиента (!). На сервере в файлике /etc/services должна быть запись: 

nrpe              5666/tcp                         # Nagios Remote Plugin Executor

9. Далее необходимо настроить Windows машину.

Скачиваем под нужную архитектуру отсюда http://nsclient.org/nscp/downloads/ . Обязательно (!!111) версию 0.3.9, а не 0.4.0. На момент написания в статьи версия 0.4 была полный пис оф щит :) - под ней всё описанное ниже не работает.

Устанавливаем клиент, отметив галочки напротив всех плугинов и прописав адрес нашего Nagios сервера.

10. Подредактируем конфиг C:\Program Files\NSClient++\NSC.ini добавив следующее:

В секции [NRPE]:
allow_arguments=1
allow_nasty_meta_chars=1

В секции: [External Scripts]:
check_filesize=cscript.exe //nologo //T:60 "C:\Program Files\NSClient++\scripts\check_filesize.vbs" -p C:\Windows\SysWOW64 -f imageres.dll -w 10000 -c 20000

Путь, имя файла и пределы - понятное дело, те, которые нужны Вам.

11. Теперь скачиваем отсюда или отсюда сам скриптец check_filesize.vbs и ложим в папку C:\Program Files\NSClient++\scripts\ . Перезапускаем сервис NSClient++ и идем обратно на сервер.

12. Пропишем 2 команды - общая для NRPE и конкретно для нашего файлика. В /usr/local/nagios/etc/objects/commands.cfg :


define command{        command_name    check_nrpe
        command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
        }


define command{        command_name    check_filesize
        command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c check_filesize -a $ARG1$ $ARG2$ $ARG3$ $ARG4$
        }


13. Далее в конфиге для нашей Windows машины прописываем (подставляя свои данные, ясный-красный):


define service{
        use                     generic-service
        host_name               Server Windows 1
        service_description   Check imageres.dll
        check_command           check_nrpe!check_filesize
        notifications_enabled   1
}

Команда указана без параметров, соответственно - будут использоваться те, что прописаны на Win машине в NSC.ini. Если Вам нужно мониторить несколько файлов на одной машине, то придется указывать параметры (я на них забил - и так сложно было разобраться, как всё правильно настроить).

14. Перезагрузим Nagios:

/etc/init.d/nagios reload

Если вы всё правильно сделали, то через несколько минут, когда Nagios одуплится, вы увидите результат.

При написании статьи использовалась идея из http://felipeferreira.net/?p=53 Но сама конфигурация была выработана методом проб и ошибок.

Также можно изменить код скрипта (он на VB), чтобы файлик мониторился в определенных пределах размеров (например, 10Мб < файл < 20 Мб).