Я пытаюсь отслеживать фактические URL-адреса, а не только хосты, с помощью Nagios, поскольку я управляю общим сервером с несколькими веб-сайтами, и я не думаю, что этого достаточно, чтобы просто отслеживать базовую службу HTTP (я включаюв самом низу этого вопроса небольшое объяснение того, что я представляю).
(Примечание: обратите внимание, что у меня установлена и работает Nagios внутри chroot в системе CentOS. Я построил nagios из исходного кода).и использовал yum для установки в этот корень всех необходимых зависимостей и т. д ...)
Сначала я нашел check_url , но после установки его в / usr / lib / nagios/ libexec, я продолжал получать сообщение об ошибке «Код возврата 255 выходит за границы».Именно тогда я решил начать писать этот вопрос (но подождите! Есть еще один плагин, который я решил попробовать первым!)
После просмотра Этот вопрос , у которого была практически та же проблема, что и у меняс 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 и решил попробовать его.Чтобы сделать это, вот что я сделал:
- mkdir / usr / lib / nagios / libexec / check_url_status /
- загрузил оба check_url_status и utils.pm
- Perпользовательский комментарий / обзор на странице плагина 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 не удалось - компиляция прервана в строке ./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
}