Monitorar serviços com $ no nome do serviço no Icinga / Nagios

1

Estou tentando configurar o monitoramento em algumas instâncias do MSSQL que existem em meus servidores Windows. O problema aqui é que, se o nome do serviço contiver um $ (por exemplo, MSSQL$PROD ), o comando check_nt retornará um aviso de nulo.

Segue-se um exemplo do que tenho em windows.cfg

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

Eu tentei cercar o nome do serviço com "" (que funciona com serviços com espaços) e colocar uma barra invertida antes do $ no nome do serviço sem sorte. Alguém sabe se isso pode ser feito?

    
por DKNUCKLES 20.06.2013 / 17:36

4 respostas

3

Você tem que escapar do $ com outro $ e citar o nome:

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

Como alternativa, você pode omitir as aspas simples usando MSSQL\$$PROD . Eu gosto da primeira chamada mais;)

    
por 20.06.2013 / 17:43
1

Krissi tem a resposta certa.

Eu só quero mencionar uma opção que pode ser mais fácil de analisar: altere sua definição de comando para pegar outro $ARG$ , após o que a complexidade desse tipo de escape é tratada na sua definição de comando e não em cada serviço. Então agora seu serviço se parece com:

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

e no seu commands.cfg:

command_line     /path/to/commmand --someopt value1 $ARG1$"$$"$ARG2$
    
por 20.06.2013 / 17:43
0

Você precisa "citar" e dobrar o sinal $ por algum motivo.

Por exemplo, o nome do serviço para o Banco de Dados Interno do Windows é "MSSQL $ MICROSOFT ## SSEE".

Meu check_command:

check_command           check_nt_srv!MSSQL"$$"MICROSOFT\#\#SSEE
    
por 20.06.2013 / 17:48
0

Eu tentei as respostas acima sem sucesso e também estou tentando monitorar as instâncias do SQL Server. Agora, em 2017, parece que a duplicação do $ funciona, desde que você mantenha as aspas:

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

    
por 22.05.2017 / 15:25