check_mysql_query não pode se conectar ao mysql, mas funciona a partir da linha de comando

1

Eu tenho o Nagios 3 rodando no Debian Wheezy. Eu sou capaz de executar a consulta a seguinte consulta na linha de comando. As credenciais para o banco de dados mysql estão armazenadas em ~nagios/.my.cnf

nagios@intranet:~$ /usr/lib/nagios/plugins/check_mysql_query -H 'myhost.mydomain.com' -q "SELECT cast(AVG(availability)*100 AS DECIMAL(5,2)   ) FROM crm.api_clients;" -w 70:100 -c 40:100
QUERY OK: 'SELECT cast(AVG(availability)*100 AS DECIMAL(5,2)   ) FROM crm.api_clients;' returned 100.000000

Mas quando o mesmo comando é invocado a partir do Nagios, ele não pode se conectar ao banco de dados.

As seções relevantes do comando e definição de serviço são

define command{
        command_name    check_proxy
        command_line    /usr/lib/nagios/plugins/check_mysql_query -H 'myhost.mydomain.com' -q "SELECT cast(AVG(availability)*100 AS DECIMAL(5,2)   ) FROM crm.api_clients;"  -w '$ARG1$' -c '$ARG2$'
}

define service{
        use                             generic-service         ; Name of service template to use
        host_name                       rds_read_replica
        service_description             Proxy availability
        check_command                   check_proxy!70:100!40:100
}

No console da web, vejo o seguinte erro no serviço:

QUERY CRITICAL: Access denied for user 'nagios'@'172.33.13.112' (using password: NO)

Funciona no console quando eu passo o nome de usuário e senha para o comando. Mas gostaria que o check_mysql_query usasse as credenciais armazenadas em .my.cnf . Como posso conseguir isso?

    
por Shoan 27.07.2014 / 18:55

1 resposta

2

O Nagios irá rodar os plugins sem ENV e, portanto, nenhum conjunto $ HOME. Você pode simular isso com env -i para testes manuais.

Você pode alterar seu comando de verificação para algo como HOME=/home/nagios && /usr/lib/nagios/plugins/check_mysql_query ... (ou qualquer que seja o caminho).

Se você não conseguir fazer isso funcionar, envolva todo o check_command em um shell script que defina HOME antes de chamar o plugin real. Também não se esqueça de pegar o código de retorno e passá-lo através do script wrapper também.

    
por 28.07.2014 / 19:23

Tags