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

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

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


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

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

./check_url some-domain.com | echo $0

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

Затем я выполнил инструкции по отладке на Nagios Suppor 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 выглядит следующим образом (внутри command.cfg):

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

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


Однако, прежде чем опубликовать этот вопрос, я решил дать еще один шанс найти решение. Я нашел плагин check_url_status и решил попробовать его. Для этого я сделал следующее:

  1. mkdir / usr / lib / nagios / libexec / 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 Не удается найти файл utils.pm в @INC (@INC содержит: / usr / lib / nagios / libexec / / usr / local / lib / perl5 / usr / local / share / perl5 / usr / lib / perl5 / vendor_perl / usr / share / perl5 / vendor_perl / usr / lib / perl5 / usr / share / perl5) в строке 34 ./check_url_status. Ошибка BEGIN - компиляция прервана в строке 34 ./check_url_status.


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

  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
}

12
задан codeforester 3 September 2018 в 19:24
поделиться