Назад | Перейти на главную страницу

Nagios check_tcp ОК, но нельзя

У меня проблема с Nagios, и в частности с плагином check_tcp, используемым для проверки соединения Citrix на сервере Windows. Nagios находится в версии 3.3.1, а плагины nagios - в версии 1.4.15 (которая, похоже, является последней).

Когда соединение установлено, статус службы - ОК, а информация о состоянии говорит: «TCP OK». Но когда служба Citrix не отвечает, состояние службы по-прежнему в порядке, а информация о состоянии говорит: «Соединение отклонено», что ясно указывает на то, что соединение Citrix не в порядке.

Еще одна вещь: при запуске команды проверки вручную она возвращает 0, что объясняет статус OK в веб-интерфейсе, в то время как она должна возвращать 1 или что-то еще, чтобы указать на ошибку.

У кого-то уже была такая же проблема? И что я могу сделать, чтобы исправить эту проверку?

Заранее спасибо,

Джереми

Я не уверен, что мы знаем о проблеме достаточно, чтобы делать окончательные выводы. Это ненормальное поведение для check_tcp плагин:

[madhatta@nagios plugins]$ ./check_tcp -H localhost -p 1234
Connection refused
[madhatta@nagios plugins]$ echo $?
2
[madhatta@nagios plugins]$ 

Можете ли вы рассказать нам, что происходит, когда вы запускаете плагин вручную? Как ваш NAGIOS вызывает это прямо сейчас?

редактировать: тогда вам придется продираться через конфигурацию NAGIOS из check_command запись в определении службы через файл определения команд, пока мы точно не узнаем, какая команда на диске выполняется и с какими флагами.

Редактировать 2: Я подозреваю, что проблема в разработке. Я не знаю кто это решил | sed 's/,/./g' нужно было добавить, ни зачем, но статус выхода конвейера - это статус выхода последней команды в нем. Сравните это с выводом выше:

[madhatta@nagios plugins]$ ./check_tcp -H localhost -p 1234 | sed 's/n/N/g'
CoNNectioN refused
[madhatta@nagios plugins]$ echo $?
0
[madhatta@nagios plugins]$ 

В sed, являющаяся последней командой в конвейере, работает нормально, поэтому статус выхода конвейера равен 0, что означает «да, я в порядке», в результате чего NAGIOS говорит «да, все в порядке».

Если вы чувствуете, что вам нужна такая уборка, вам нужно будет написать сценарий оболочки, который выполняет фактические check_tcp, сохраняет статус завершения и вывод, выводит вывод, запущенный через sed, но завершается сохраненным статусом завершения. Еще лучше, перестаньте беспокоиться о точках и запятых и начните беспокоиться о том, не работает сервер или нет.

Проверьте, добавили ли вы на своем сервере -r как вариант команды tcp_check.

 -r, --refuse=ok|warn|crit
    Accept TCP refusals with states ok, warn, crit (default: crit)