The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Настройка nagios для проверки в труднодоступных местах (NRPE) (nagios monitoring nrpe)


<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>
Ключевые слова: nagios, monitoring, nrpe,  (найти похожие документы)
Автор: STALKER <http://stproject.blogspot.com> Date: Mon, 8 Jun 2009 17:02:14 +0000 (UTC) Subject: Настройка nagios для проверки в труднодоступных местах (NRPE) Оригинал: http://stproject.blogspot.com/2009/02/nagios-nrpe.html http://stproject.blogspot.com/2008/12/full-automated-nrpe.html Если уж вы решили заняться мониторингом серверов, вряд ли вам удалось ограничиться проверками пинга и доступа к сайтам по HTTP. Проверка загрузки CPU, свободного места на сервере и т.д. можно конечно проверять с помощью SNMP, но искать новые модули для проверки проверки или лазить по дереву SNMP не самое интересное занятие, да и не очень нужное, ведь есть отличные команды для локальной проверки сервера из стандартного комплекта модулей "check_load, check_storage" и т.д. Изобретать велосипед, конечно, благородно, но бесполезно. Общий обзор На помощь может прийти NRPE, приложение созданное специально для проверки удаленного сервера с помощью "локальных" команд. Алгоритм работы можно видеть на рисунке ниже: Хост с Nagios (слева), инициирует проверку с помощью команды check_nrpe к удаленному серверу (справа), на котором установлен NRPE, в зависимости от конфигурации выполняется та или иная команда проверки. На хостк с NRPE можно еще раз выполнить команду check_nrpe для проверки хоста с NRPE, это позволяет создавать конфигурации при которых Nagios не находиться в той-же подсети что и хосты, но при этом может проверять хосты из другой сети: Преимуществами NRPE по сравнению с SNMP можно считать: * проверки произволяться "локальными" командами * ненужно расшаривать какие-то области SNMP, это может быть небезопасно * NRPE имеет возможность создания защищенного соединения (SSL) между Nagios и хостом, в отличии от SNMP, который чуть ли не UDP пакеты посылает * для добавления новой проверки достаточно написать консольный скрипт в Perl или Bash, не заморачиваясь на SNMP-ловушках или еще чем-нибудь более заумном Установка NRPE Ну думаю теории хватит, можно приступать к практике. Для начала скачайте последнюю версию NRPE с официального сайта http://www.nagios.org/download/addons/ (Более полную информацию по NRPE можно найти по адресу http://nagios.sourceforge.net/docs/nrpe/NRPE.pdf В моем случае версия NRPE была 2.12, далее начнем компиляцию и установку. Распакуем архив tar xzf nrpe-2.12.tar.gz cd nrpe-2.12/ Далее проводим конфигурирование, опция --disable-ssl отключает SSL в NRPE, если у вас действительно большое количество проверок на одном сервере SSL лучше отключить, чтобы не загружать сервер. Опция --enable-command-args определяет можно ли будет командам передавать аргументы, заранее подумайте над тем стоит ли их включать, т.к. это может создать проблемы в безопасности системы, к примеру если в качестве аргумента передать что-нибудь типа "-w=5 -c=6; cat /etc/passwd" в bash эта строка будет интерпретирована не совсем так как вы хотите ./configure --disable-ssl --enable-command-args Далее создаем пользователя и группу под которыми будет работать NRPE, опцию -d /home/nagios лучше оставить т.к. в дальнейшем домашняя директория для NRPE вам еще пригодиться groupadd nagios useradd nagios -d /home/nagios -g nagios -m Последний этап компиляции, собственно компиляция, установка плагина check_nrpe, установка демона NRPE и конфигов для xinetd make all && make install-plugin && make install-daemon && make install-xinetd Для работы NRPE лучше всего использовать xinetd, т.к.он позволяет обновлять конфигурацию без перезагрузки демона и вам не нужно следить за тем загружен NRPE или нет. Также xinetd обеспечивает некоторую дополнительную безопасность с помощью определения списка IP адресов с которых может инициироваться доступ к порту NRPE. Если у вас не установлен xinetd нужно его установить: yum install xinetd zypper install xinetd apt-get install xinetd (зависит от системы) Дальше редактируем /etc/xinetd.d/nrpe, находим строку only_from = 127.0.0.1 IP1 IP2 вместо IP1 и IP2 подставляет IP-адреса Nagios или хостов с которых будет осуществляться проверка, адреса должны быть написаны через пробел. Добавить описание NRPE в конец файла /etc/services. nrpe 5666/tcp # NRPE После нужно перезагрузить xinetd: service xinetd restart Возможно вам также придется добавить правило в firewall, которое бы разрешало подключения на порт 5666: iptables -I RH-Firewall-1-INPUT -p tcp -m tcp -dport 5666 -j ACCEPT service iptables save Далее вам нужно скопировать плагины для проверки в папку /usr/local/nagios/libexec/. Плагины можно взять из этой папки на сервере с Nagios (или в папке /usr/lib/nagios/plugins/, если вы ставили Nagios из бинарных архивов). Если все сделано правильно мы можем проверить работоспособность NRPE, выполнив следующий скрипт: /usr/lib/nagios/plugins/check_nrpe -H localhost Должно вы появиться что-то вроде: NRPE v2.12 Все, установку закончили. Конфигурирование NRPE После установки файл конфигурации по умолчанию находиться в файле /usr/local/nagios/etc/nrpe.cfg. Первое что стоит отредактировать это опять таки хосты с которых будет производиться проверка: allowed_hosts=127.0.0.1,IP1,IP2 опция allowed_hosts определяет список хостов с которых будут идти проверки, адреса должны быть перечислены через запятую. Дальше определяем количество можно ли передавать аргументы командам: dont_blame_nrpe=0 если "0" аргументы передавать нельзя, если "1" можно. Далее можно перейти непосредственно к командам, которыми мы будем оперировать. Общий синтаксис таков: command[command_name]=/path/to/check/command args например: command[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10 если у вас включена передача аргументов, команда будет выглядеть так: command[check_users]=/usr/local/nagios/libexec/check_users -w $ARG1$ -c $ARG2$ Командой может быть любой скрипт или строка bash, главное чтобы она удовлетворяла правилам написания модулей для Nagios. для выполнения команды проверки check_users выполните: /usr/lib/nagios/plugins/check_nrpe -H localhost -c check_users или /usr/lib/nagios/plugins/check_nrpe -H localhost -c check_users -a 5 10 Получим что-нибудь вроде этого: USERS OK - 1 users currently logged in |users=1;5;10;0 Конфигурирование Nagios После того как NRPE успешно установлен можно приступить к конфигурированию самого Nagios. Первое что следует сделать, это скопировать скрипт check_nrpe в папку с плагинами Nagios (см. выше). Дальше открываем файл с описанием комманд (чаще всего commands.cfg) и добавляем вот такую конфигурацию: define command{ command_name check_nrpe command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ } таким образом мы добавили команду check_nrpe в список команд NRPE, далее создаем новый сервис (проверку): define service{ use generic-service host_name remotehost service_description USERS check_command check_nrpe!check_users } после "!" передается команда которая будет вызвана на хосте с NRPE. Для того чтобы уменьшить количество ошибок и недочетов при конфигурировании Nagios лучше всего создавать команды с заранее определенными параметрами, так лучше пример приведенный выше лучше представить так: define command{ command_name check_nrpe_users command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c check_users } .... define service{ use generic-service host_name remotehost service_description USERS check_command check_nrpe_users } таким образом мы определяем соответствие команды Nagios команде NRPE и допускаем меньше ошибок при конфигурировании. ВНИМАНИЕ Если вы собирали NRPE --disable-ssl, в описании команды проверки добавляйте "-n" т.е. command_line $USER1$/check_nrpe -n -H $HOSTADDRESS$ -c check_users иначе при проверке возникнет ошибка. Full-automated NRPE В первой части, я описывал спсоб проверки Unix-серверов с помощью NRPE, теперь же займемся автоматизацией. Представьте такую ситуацию, у вас уже есть десяток-другой хостов подключенных к Nagios и проверяемых с помощью NRPE, но вдруг вам понадобилось добавить на этих сервера новую, очень важную проверку. Будете лазить по всем серверам и править конфиги? Надеюсь вы на это не согласны, поэтому предлагаю способ по автоматизации обновления NRPE без прямого участия. Для описанного случая вам понадобиться FTP-сервер (в принципе систему можно переработать на использование scp и ssh), желательно на том-же хосте что и Nagios. Система будет действовать примерно как показано на диаграмме ниже: На хосте с Nagios выполняеться команда check_nrpe -H -c update_nrpe после чего происходит обновлениеконфигов и команд проверки. Скачиваеться последняя версия скрипта на обновление и выполняеться. Внутри скрипта прописано откуда брать новый конфиг и плагины для проверки... Предположим вы поставили FTP-сервер на хост с Nagios (например [10]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 будьте вниматнльны к правам на файлы, иначе могут возникнуть непонятные ошибки...

<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>

Обсуждение [ RSS ]
  • 1, Denis (??), 03:49, 23/02/2010 [ответить]  
  • +/
    не ясно где подвох ==>  UNKNOWN - Local copy/copies of nginx_status is empty.

    прооверяем напрямую
    root@s1 [~]# /usr/local/nagios/libexec/check_nginx -N -H localhost
    OK - nginx is running. 2 requests per second, 1 connections per second (2.00 requests per connection) | 'reqpsec'=2 'conpsec'=1 'conpreq'=2.00

    через check_nrpe не хочет

    root@s1 [~]# /usr/local/nagios/libexec/check_nrpe -H localhost -c check_nginx
    UNKNOWN - Local copy/copies of nginx_status is empty.

    сама команда в nrpe.cfg

    command[check_nginx]=/usr/local/nagios/libexec/check_nginx -N -H localhost

    ну так где же подвох ?

     
  • 2, Barma (??), 09:01, 20/04/2010 [ответить]  
  • +/
    На удаленной машине nrpe запускается не от root скорее всего. Может в этом причина.
     
  • 3, mike (??), 06:42, 23/09/2010 [ответить]  
  • +/
    Статья неплохая, но автору следует почитать учебник русского языка. Очень много ошибок! Рекомендую зайти на сайт http://www.tsya.ru
     
  • 4, Граммар (?), 15:55, 12/11/2015 [ответить]  
  • +/
    Серьёзные проблемы с "тся\ться"!
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру