У меня проблема с Nagios, в частности с плагином check_tcp, который используется для проверки соединения Citrix на сервере Windows. Nagios находится в версии 3.3.1, а подключаемые модули nagios - в версии 1.4.15 (которая кажется последней).
Когда соединение в порядке, статус службы в порядке с информацией о состоянии, говорящей: «TCP OK». Но когда служба Citrix не отвечает, состояние службы все еще в порядке с информацией о состоянии, в которой говорится: «Соединение отклонено», что ясно указывает на то, что соединение Citrix не в порядке.
Еще одна вещь, при запуске команды check вручную она возвращает 0, что объясняет состояние OK в веб-интерфейсе, в то время как она должна возвращать 1 или что-то еще, чтобы указать на ошибку.
У кого-то уже была такая же проблема? И есть ли что-то, что я могу сделать, чтобы исправить эту проверку?
Заранее спасибо,
Джереми
Ответы:
Я не уверен, что мы знаем достаточно о проблеме, чтобы быть окончательным. Это не нормальное поведение для
check_tcp
плагина:Можете ли вы рассказать нам, что происходит, когда вы запускаете плагин вручную? Как ваш NAGIOS вызывает это прямо сейчас?
Редактировать : тогда вам придется пройтись по вашей конфигурации NAGIOS, начиная с
check_command
записи в определении сервиса, через файл определения команд, пока мы точно не узнаем, какая команда на диске выполняется и с какими флагами.Редактировать 2 : я подозреваю, что проблема находится в стадии разработки. Я не знаю, кто решил, что
| sed 's/,/./g'
нужно добавить, и почему, но состояние выхода из конвейера - это состояние выхода последней команды в нем . Сравните это с выводом выше:sed
, Будучи последней командой в конвейере, работает отлично, поэтому состояние выхода трубопровода 0, что означает «да, я в порядке», в результате чего Nagios сказать «да, все в порядке».Если вы чувствуете, что вам нужно это привести в порядок, вам нужно будет написать сценарий оболочки, который выполняет факт
check_tcp
, сохраняет состояние завершения и вывод, выводит вывод, проходящий через sed, но завершается с сохраненным состоянием завершения. Более того, перестаньте беспокоиться о точках и запятых и начните беспокоиться о том, не работает сервер или нет.источник
$USER1$/check_tcp -H $HOSTADDRESS$ -p 1494 -4 -e ICA -w $ARG1$ -c $ARG2$ | sed 's/,/./g'
Connection refused
и$ echo $?
возвращаюсь0
Проверьте, добавили ли вы на свой сервер
-r
в качестве опции команду tcp_check.источник
-r
опцию в моей команде. Но, если я добавлю это в команду--refuse=ok
в моем случае, нормальное ОК, когда сервис будет активирован, даст мне критический статус, я думаю.