Я пытаюсь контролировать счетчик очереди 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
Я считаю, что вам нужно использовать \, чтобы избежать символа, но следующая ссылка показывает, что вам могут понадобиться два \
надеюсь, что это поможет -> Ссылка на сайт <-