Сага о Nagios: Full-automated NRPE

В статье про NRPE (http://stproject.blogspot.com/2009/02/nagios-nrpe.htm), я описывал спсоб проверки Unix-серверов с помощью NRPE, теперь же займемся автоматизацией.

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

Для описанного случая вам понадобиться FTP-сервер (в принципе систему можно переработать на использование scp и ssh), желательно на том-же хосте что и Nagios. Система будет действовать примерно как показано на диаграмме ниже:

Диаграмма работы модуля

На хосте с Nagios выполняеться команда

check_nrpe -H  -c update_nrpe

после чего происходит обновлениеконфигов и команд проверки. Скачиваеться последняя версия скрипта на обновление и выполняеться. Внутри скрипта прописано откуда брать новый конфиг и плагины для проверки…

Предположим вы поставили FTP-сервер на хост с Nagios (например vsftp), предположим вы создали FTP-аккаунт «nrpe». Дальше в папке доступной по FTP зодадим папку NRPE и положим туда эталонный «nrpe.cfg» и архив с плагинами для проверок «libexec.tar.gz» (у меня они называються именно так, у вас могут иначе). Дальше осталось только написать скрипты.

Скрипт на обновление NRPE (ложим в папку с FTP_PATH/NRPE/):

#!/bin/sh
#
#
# Удаляем то что осталось от прошлого обновления
rm -f libexec.tar.gz
rm -r -f libexec
rm -f nrpe.cfg
# Скачиваем по FTP новые конфиги и плагины
wget ftp://nrpe:ftp_pass@ftp_server_ip/NRPE/libexec.tar.gz
wget ftp://nrpe:ftp_pass@ftp_server_ip/NRPE/nrpe.cfg
#Разархивируем и перемещаем в папку с плагинами
tar xzf libexec.tar.gz
mv libexec/* /usr/local/nagios/libexec/
#На всякий случай создаем папку для конфигов NRPE
mkdir -p /usr/local/nagios/etc/
# Копируем сам конфиг
cp nrpe.cfg /usr/local/nagios/etc/nrpe.cfg
# Добавляем в конфиг данные о дате последнего обновления(еще пригодиться)
echo "# [LAST_UPDATE]=`date +%d-%m-%y`" >> /usr/local/nagios/etc/nrpe.cfg

В эталонный конфиг добавляем следующие команды:

Обновления:

command[update_nrpe]=echo "Starting"; cd /home/nagios/; rm update_nrpe.sh; wget ftp://nrpe:ftp_pass@ftp_server_ip/NRPE/update_nrpe.sh && chmod +x update_nrpe.sh && ./update_nrpe.sh

Проверки даты обновления:

command[update_date]=/usr/local/nagios/libexec/check_update_date

содержимое скрипта libexec/check_update_date(этот файл должен находиться в архиве libexec.tar.gz):

#!/bin/sh
#
#
awk -F= '/\[LAST_UPDATE\]/ {print "STATUS: Last update " $2}' /usr/local/nagios/etc/nrpe.cfg

Этот скрипт находит в конфиге NRPE строку с указанием даты последнего обновления и выдает в качестве ответа.
Первоначальное обновление

Если вы только установили NRPE или у вас уже установлен NRPE на хост, пробуем обновиться:

#заходим под пользователем nagios, чтобы не сбить права на файлы
~> su nagios
~> cd ~
#Обнавляемся
~> wget ftp://nrpe:ftp_pass@ftp_server_ip/NRPE/update_nrpe.sh && chmod +x update_nrpe.sh && ./update_nrpe.sh

если все прошло ОК, на хосте с Nagios выполняем команду

.../check_nrpe -H nrpe_host -c update_date

Должны получить что-то вроде:

STATUS: Last update 21-01-09

Использование

Теперь если вам нужно внести изменения в работу NRPE (добавить проверку например), на сервере с FTP меняем конфиг nrpe.cfg, добавляем в архив libexec.tar.gz новый плаги и выполняем команду

check_nrpe -H nrpe_host -c update_nrpe

и получаем полноченное обновление.

Для работы этой системы необходимо чтобы NRPE был установлен для работы с xinetd (см. прошлую статью). При работе со с FTP будьте вниматнльны к правам на файлы, иначе могут возникнуть непонятные ошибки…

Похожие посты:

Оставить комментарий