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

Службы мониторинга с $ в имени службы в Icinga / Nagios

Я пытаюсь настроить мониторинг на нескольких экземплярах MSSQL, существующих на моих серверах Windows. Проблема здесь в том, что если имя службы содержит $ (например, MSSQL$PROD), то команда check_nt вернет предупреждение о нулевом значении.

Ниже приводится пример того, что у меня есть в windows.cfg

define service{
        use                     generic-service
        host_name               SERVERNAME
        service_description     MSSQL Service
        check_command           check_nt!SERVICESTATE!-d SHOWALL -l MSSQL$PROD
        }

Я попытался заключить имя службы в "" (что работает с службами с пробелами) и поставить обратную косую черту перед $ в имени службы, но безуспешно. Кто-нибудь знает, можно ли это сделать?

Вы должны избежать $ с другим $ и заключите имя в одинарную кавычку:

define service{
        use                     generic-service
        host_name               SERVERNAME
        service_description     MSSQL Service
        check_command           check_nt!SERVICESTATE!-d SHOWALL -l 'MSSQL$$PROD'
        }

в качестве альтернативы вы можете опустить одинарные кавычки, используя MSSQL\$$PROD. Мне первый звонок больше нравится;)

Крисси знает правильный ответ.

Я просто хочу упомянуть вариант, который может быть проще проанализировать: измените определение вашей команды, чтобы взять другое $ARG$, после чего сложность этого вида экранирования обрабатывается в определении вашей команды, а не в каждой службе. Итак, теперь ваш сервис выглядит так:

check_command    check_nt!SERVICESTATE!-d SHOWALL -l MSSQL!PROD

и в вашем command.cfg:

command_line     /path/to/commmand --someopt value1 $ARG1$"$$"$ARG2$

По какой-то причине вам нужно "процитировать" его и удвоить знак $.

Например, имя службы для внутренней базы данных Windows - «MSSQL $ MICROSOFT ## SSEE».

Моя check_command:

check_command           check_nt_srv!MSSQL"$$"MICROSOFT\#\#SSEE

Я пробовал ответы выше безрезультатно, а также пытаюсь отслеживать экземпляры SQL Server. Теперь, в 2017 году, похоже, что НЕ удвоение $ работает, пока вы сохраняете кавычки:

check_nt -H xx.xx.xx.xx -s "" -p 12489 -v SERVICESTATE -l 'MSSQL$BLAHBLAH' -d SHOWALL