Мониторинг 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
возвращает "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 и решил сделать это одним выстрелом. Чтобы сделать это, вот что я сделал:
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
}
Ответы
Ответ 1
Я делал вещи слишком сложными.
Встроенный/установленный по умолчанию плагин check_http может выполнить то, что я хотел, и многое другое. Вот как я это сделал:
Определение моего сервиса:
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$
}
Ответ 2
Лучший способ отслеживания URL-адресов - использовать webinject, который можно использовать с nagios.
Следующая проблема связана с тем, что у вас нет пакета utl, который пытается установить его.
bash -4.1 #./check_url_status -U mydomain.com Не удается найти utils.pm в @INC (@INC содержит:
Ответ 3
Вы можете создать плагин script. Это легко, вам нужно только проверить URL-адрес с чем-то вроде:
`curl -Is $URL -k| grep HTTP | cut -d ' ' -f2`
$URL - это то, что вы передаете команде script по параметру.
Затем проверьте результат: если у вас есть код больше 399, у вас есть проблема, иначе... все в порядке! Это правильный режим выхода и сообщение для Nagios.