Nagios check_tcp ОК, пока он не должен

1

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

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

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

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

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

Джереми

Джереми С.
источник
Можете ли вы дать мне команду, которая выполняется вашим сервером?
Лукас Кауфман

Ответы:

2

Я не уверен, что мы знаем достаточно о проблеме, чтобы быть окончательным. Это не нормальное поведение для 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, но завершается с сохраненным состоянием завершения. Более того, перестаньте беспокоиться о точках и запятых и начните беспокоиться о том, не работает сервер или нет.

Безумный Шляпник
источник
определение сервиса$USER1$/check_tcp -H $HOSTADDRESS$ -p 1494 -4 -e ICA -w $ARG1$ -c $ARG2$ | sed 's/,/./g'
Джереми С.
и когда я запускаю команду вручную, я получаю: Connection refusedи $ echo $?возвращаюсь0
Джереми С.
какой я идиот! Я действительно не знаю, как я этого не видел! Большое спасибо MadHatter.
Джереми К.
<GRIN> не волнуйся, Джереми, это один из тех моментов, когда ты не видишь леса!
MadHatter
1

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

 -r, --refuse=ok|warn|crit
    Accept TCP refusals with states ok, warn, crit (default: crit)
Лукас Кауфман
источник
я не использую -rопцию в моей команде. Но, если я добавлю это в команду --refuse=okв моем случае, нормальное ОК, когда сервис будет активирован, даст мне критический статус, я думаю.
Джереми К.