Мониторинг url-адресов с помощью Nagios

Я пытаюсь отслеживать фактические URL-адреса, а не только хосты, с Nagios, поскольку я управляю общим сервером с несколькими веб-сайтами, и я не думаю, что его достаточно просто для мониторинга базовой службы HTTP (я включаю в самом низу этого вопроса небольшое объяснение того, что я предполагаю).

(боковое Примечание: обратите внимание, что у меня установлен Nagios и работает внутри chroot в системе CentOS. Я построил nagios из источника и использовал yum для установки в этот корень всех необходимые зависимости и т. д...)


блин check_url, но после установки его в /usr/lib/nagios / libexec я продолжал получать ошибку "код возврата 255 вне пределов". Именно тогда я решил начать писать этот вопрос (но подождите! Есть еще один плагин, который я решил попробовать первым!)

после просмотра Этот Вопрос у этого была почти такая же проблема, как у меня с check_url, я решил открыть новый вопрос на эту тему, потому что a) я не использую NRPE с этой проверкой б) я попробовал предложения, сделанные по предыдущему вопросу, с которым я связался, но ни одно из них не сработало. Например...

./check_url some-domain.com | echo 

возвращает " 0 " (что означает, что проверка прошла успешно)

затем я следовал инструкциям по отладке на Среда, Котоt для создания временного файла с именем debug_check_url и поместите в него следующее (чтобы затем быть вызванным моей командой определение):

#!/bin/sh
echo `date` >> /tmp/debug_check_url_plugin
echo $*  /tmp/debug_check_url_plugin
/usr/local/nagios/libexec/check_url $*

предполагая, что я не в "режиме отладки", мое определение команды для запуска check_url выглядит следующим образом (внутри команды.cfg), что:

'check_url' command definition
define command{
       command_name    check_url
       command_line    $USER1$/check_url $url$
}

(Кстати, вы также можете просмотреть, что я использовал в моем файле конфигурации службы в самом низу этого вопроса)


перед публикацией этого вопроса, однако, я решил дать еще 1 шанс на выяснение решения. Я нашел check_url_status плагин, и решил дать это выстрел. Чтобы сделать это, вот что я сделал:

  1. команды mkdir /usr и/lib в/в Nagios/IP-адресов/check_url_status/
  2. скачал как check_url_status, так и utils.pm
  3. в комментарии / обзоре пользователя на странице плагина check_url_status я изменил " lib " на соответствующий каталог /usr/lib/nagios/libexec/.
  4. выполнить следующее:

    ./ check_user_status-U some-domain.com - ... Когда я запускаю вышеуказанную команду, я продолжал получать следующая ошибка:

в bash-4.1# ./ check_url_status-U mydomain.com Не могу найти утилиты.вечера в @Inc (@Inc, в содержится: в /usr/lib в/в Nagios/IP-адресов /usr/местные/библиотека lib/perl5 /usr/местные/доли/perl5 /УСР/Либ/perl5/vendor_perl /usr/доли/perl5/vendor_perl /УСР/Либ/perl5 /usr/доли/perl5) на ./ check_url_status строка 34. BEGIN failed--компиляция прервана ./ check_url_status строка 34.


так что в этот момент я сдаюсь и у меня есть пара вопросы:

  1. какой из этих двух плагинов вы бы порекомендовали? check_url или check_url_status? (Прочитав описание check_url_status, я чувствую, что это может быть лучшим выбором. Твои мысли?)
  2. теперь, как я могу исправить свою проблему с тем плагином, который вы рекомендовали?

в начале этого вопроса я упомянул, что включил бы небольшое объяснение того, что я предусматривающий. У меня есть файл под названием services.cfg, где у меня есть все мои определения сервиса (представьте себе это!).

ниже приведен фрагмент моего файла определения сервиса, который я написал, чтобы использовать check_url (потому что в то время я думал, что все работает). Я создам сервис для каждого URL, который я хочу отслеживать:

###
# Monitoring Individual URLs...
#
###
define service{
        host_name                       {my-shared-web-server}
        service_description             URL: somedomain.com
        check_command                   check_url!somedomain.com
        max_check_attempts              5
        check_interval                  3
        retry_interval                  1
        check_period                    24x7
        notification_interval           30
        notification_period             workhours
}

3 ответов


Я делал вещи слишком сложно.

встроенный / установленный по умолчанию плагин, check_http, может выполнить то, что я хотел и многое другое. Вот как я это сделал:--3-->

Мое Определение Сервиса:

  define service{
            host_name                       myers
            service_description             URL: my-url.com
            check_command                   check_http_url!http://my-url.com
            max_check_attempts              5
            check_interval                  3
            retry_interval                  1
            check_period                    24x7
            notification_interval           30
            notification_period             workhours
    }

Определение Моей Команды:

define command{
        command_name    check_http_url
        command_line    $USER1$/check_http -I $HOSTADDRESS$ -u $ARG1$
}

лучший способ контролировать URL-адреса-использовать webinject, который можно использовать с nagios.

проблема ниже связана с тем, что у вас нет пакета perl utils, попробуйте установить его.

bash-4.1# ./ check_url_status-U mydomain.com не могу найти utils.pm in @INC (@INC содержит:


вы можете сделать плагин скрипт. Это легко, вам нужно только проверить URL-адрес с чем-то вроде:

`curl -Is $URL -k| grep HTTP | cut -d ' ' -f2`

$URL-это то, что вы передаете команде скрипта param.

затем проверьте результат: если у вас код больше 399, у вас есть проблема, иначе... все в порядке! Затем правый режим выхода и сообщение для Nagios.