Мониторинг 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 " (что означает, что проверка прошла успешно)
затем я следовал инструкциям по отладке на Среда, Кото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 выглядит следующим образом (внутри команды.cfg), что:
'check_url' command definition
define command{
command_name check_url
command_line $USER1$/check_url $url$
}
(Кстати, вы также можете просмотреть, что я использовал в моем файле конфигурации службы в самом низу этого вопроса)
перед публикацией этого вопроса, однако, я решил дать еще 1 шанс на выяснение решения. Я нашел check_url_status плагин, и решил дать это выстрел. Чтобы сделать это, вот что я сделал:
- команды mkdir /usr и/lib в/в Nagios/IP-адресов/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 Не могу найти утилиты.вечера в @Inc (@Inc, в содержится: в /usr/lib в/в Nagios/IP-адресов /usr/местные/библиотека lib/perl5 /usr/местные/доли/perl5 /УСР/Либ/perl5/vendor_perl /usr/доли/perl5/vendor_perl /УСР/Либ/perl5 /usr/доли/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
}
3 ответов
Я делал вещи слишком сложно.
встроенный / установленный по умолчанию плагин, check_http, может выполнить то, что я хотел и многое другое. Вот как я это сделал:--3-->
Мое Определение Сервиса:
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$
}
лучший способ контролировать URL-адреса-использовать webinject, который можно использовать с nagios.
проблема ниже связана с тем, что у вас нет пакета perl utils, попробуйте установить его.
bash-4.1# ./ check_url_status-U mydomain.com не могу найти utils.pm in @INC (@INC содержит:
вы можете сделать плагин скрипт. Это легко, вам нужно только проверить URL-адрес с чем-то вроде:
`curl -Is $URL -k| grep HTTP | cut -d ' ' -f2`
$URL-это то, что вы передаете команде скрипта param.
затем проверьте результат: если у вас код больше 399, у вас есть проблема, иначе... все в порядке! Затем правый режим выхода и сообщение для Nagios.