Сага о 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 будьте вниматнльны к правам на файлы, иначе могут возникнуть непонятные ошибки…