Я пытаюсь отслеживать фактические 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 и решил попробовать его. Для этого я сделал следующее:
Выполните следующее:
./ 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.
Итак, на данном этапе я сдаюсь, и у меня есть пара вопросов:
В начале этого вопроса, Я упомянул, что хотел бы включить небольшое объяснение того, что я представляю. У меня есть файл 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
}