Я пытаюсь отслеживать фактические 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
возвращает "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 и решил сделать это одним выстрелом. Чтобы сделать это, вот что я сделал:
- mkdir/usr/lib/nagios/libexec/check_url_status/
- загрузили как check_url_status, так и utils.pm
- За комментарий пользователя/обзор на странице плагина check_url_status я изменил "lib" на соответствующий каталог /usr/lib/nagios/libexec/.
-
Выполните следующее:
./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) в строке. /check _url_status 34. BEGIN failed - компиляция прервана на. /check _url_status строке 34.
Итак, в этот момент я сдаюсь и задаю пару вопросов:
- Какой из этих двух плагинов вы бы порекомендовали? check_url или check_url_status? (Прочитав описание 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
}