Я использую nagios для мониторинга различных сервисов в нашей производственной среде. Но для одной такой службы я заметил, что nagios показывает состояние «ОК», несмотря на то, что служба не работает и не работает. Я использую плагин check_http, чтобы добиться того же. Запустив команду проверки на cli сервера, я получаю результат, как показано ниже. Я заметил, что возвращенный код состояния выхода равен 2, что указывает на КРИТИЧЕСКОЕ состояние для nagios. Но вместо этого отображается состояние «ОК». Мы очень благодарны за любые указания, как справиться с этой проблемой. Заранее спасибо.
me @ myserver: ~ $ check_http -H localhost -p 8180 -u / SomeService / services? _wadl
В соединении отказано
HTTP CRITICAL - Невозможно открыть сокет TCP
я @ myserver: ~ $ echo $?
2
Ваш ручной тест не соответствует тому, что делает Nagios.
Скорее всего, вы передаете ARG в check_http, которые игнорируются. Сравните определение команды для службы check_command, которую вы используете, с вашим ручным тестом.
Если вы еще этого не сделали, обязательно прочтите страницу документации на Макросы и как они работают.
Спасибо за указатели Кит и Даниэль. Я придумал решение проблемы.
Параметр пути URL-адреса команды проверки, настроенный в NConf, был
/ SomeService / services? _Wadl & _type = xml
Но при проверке / var / log / syslog на сервере я обнаружил, что фактически выполняемый URL-путь был / SomeService / services? _Wadl (пожалуйста, обратите внимание на удаление части «type = xml»).
Выполнив команду проверки с этими двумя URL-путями по отдельности, я заметил, что мне пришлось нажать клавишу «Enter», чтобы получить статус выхода команды с URL-адресом, содержащим «type = xml», что объясняет, почему nagios никогда не получал выход status 2. В то время как другой URL вернул статус выхода без какого-либо ручного вмешательства.
me @ myserver: $ check_http -H localhost -p 8180 -u / SomeService / services? _wadl & _type = xml
[1] 3543
me @ myserver: $ В соединении отказано
HTTP CRITICAL - Невозможно открыть сокет TCP
[Нажмите Enter, и я получаю статус выхода]
[1] + Выход 2 check_http -H localhost -p 8180 -u / SomeService / services? _Wadl
me @ myserver: $ check_http -H localhost -p 8180 -u / SomeService / services? _wadl
В соединении отказано
HTTP CRITICAL - Невозможно открыть сокет TCP
[Я мгновенно получил статус выхода без ручного вмешательства]
При изменении пути URL-адреса в Nconf на / SomeService / services? _Wadl я начал получать правильный статус выхода, и nagios начал сообщать КРИТИЧЕСКИЙ, когда служба действительно перестала работать. Но мне все еще интересно, почему плагин check_http ожидает вмешательства пользователя, чтобы вернуть код выхода, когда URL-адрес содержит «& _type = xml»?