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

Экранирование символов в Nagios для NC_Net

Я пытаюсь контролировать счетчик очереди MSMQ с помощью Nagios (3.0.1). На удаленном сервере работает NC_Net. Конфигурация check_command выглядит так:

check_command check_nt!COUNTER!-l "\\MSMQ Queue(servername\\private$\\queuename)\\Messages in Queue","%.f messages in MSMQ queue" -w 5 -c 10

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

Эта статья предлагает "$$" т.е.

check_command check_nt!COUNTER!-l "\\MSMQ Queue(servername\\private"$$"\\queuename)\\Messages in Queue","%.f messages in MSMQ queue" -w 5 -c 10

но это не работает. Я пробовал несколько других методов (обратная косая черта, одинарные кавычки и т. Д.).

Какие-либо предложения?

РЕДАКТИРОВАТЬ:

Я проводил некоторое тестирование через командную строку, что является одной из причин, по которой я считаю, что $ вызывает проблему. Следующие работы:

./check_nt -H hostip -v COUNTER -l "\\MSMQ Queue(Computer Queues)\\Messages in Queue","%.f messages in MSMQ queue" -w 5 -c 10

но это не так:

./check_nt -H hostip -v COUNTER -l "\\MSMQ Queue(servername\\private$\\queuename)\\Messages in Queue","%.f messages in MSMQ queue" -w 5 -c 10

Я также использовал ECHO, чтобы увидеть, как эти команды расширяются, но это мне не помогло.

РЕДАКТИРОВАТЬ:

Оказывается, это был не символ доллара. Увидеть ниже.

Вы можете включить полную отладку в nagios.cfg, чтобы увидеть, до чего на самом деле расширяется команда, это покажет вам, действительно ли проблема заключается в значке доллара. Для этого установите следующее:

debug_level=-1
debug_verbosity=2
# DEBUG FILE
debug_file=/usr/local/nagios/var/nagios.debug
max_debug_file_size=1000000

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

А их может быть (пример):

sudo /etc/init.d/nagios reload

Затем вам нужно будет запустить проверку, отслеживая журнал. Вы также можете направить хвост в grep с помощью чего-то вроде 'check_nt', чтобы уменьшить шум.

Я обнаружил, что NC_Net на удаленном сервере записывает в журнал событий Windows. Глядя на ошибки, я начинаю думать, что это не проблема с символом доллара:

Я провел несколько тестов (ожидаю, что они не пройдут). Для первого я указал имя счетчика как "\ MSMQ Queue (servername) \ Messages in Queue"

В результате возникла ошибка:

Exeption occured during Counter check :Instance 'servername' does not exist in the specified Category.::>\MSMQ Queue(servername)\Messages in Queue

В этом случае он не может найти экземпляр счетчика. Для второго я указал "\ MSMQ Queue (servername \ test1) \ Messages in Queue"

Exeption occured during Counter check :Could not locate Performance Counter with specified category name 'MSMQ Queue', counter name 'test1)\Messages in Queue'.::>\MSMQ Queue(servername\test1)\Messages in Queue

В этом случае он не может найти счетчик.

Мне кажется, что NC_Net по-другому анализирует имена счетчиков из-за \ in "servername \ test1".

РЕДАКТИРОВАТЬ:

Проблема была связана с \ в имени экземпляра счетчика. Я обнаружил, что существует альтернативный синтаксис для указания имени счетчика, поэтому работает следующее:

^MSMQ Queue^servername\\private\$\\queuename^Messages in Queue

Я считаю, что вам нужно использовать \, чтобы избежать символа, но следующая ссылка показывает, что вам могут понадобиться два \

надеюсь, что это поможет -> Ссылка на сайт <-