Nagios: executar o plugin com nrpe produz um resultado diferente da execução localmente

1

Estou tentando adicionar uma verificação NRPE para monitorar o agente Puppet, mas estou com dificuldades para fazer com que o plug-in retorne o resultado correto quando executado localmente.

Estou usando este plug-in:

ao executar o script localmente no cliente nagios, o resultado está correto, mas a execução com o nrpe resulta em um resultado crítico. Eu suponho que perdi algo na minha configuração. Outros plugins nrpe estão sendo executados com sucesso.

Eu reiniciei o nrpe.d (e verifiquei enquanto estava inativo que nenhum nrpe pid estava rodando) Permissões, ownder e group para o arquivo check_puppet são as mesmas que minhas outras verificações

[root@puppet-master]# /usr/lib64/nagios/plugins/check_nrpe -H server.addr -c check_puppet
CRITICAL: Puppet daemon not running or something wrong with process

[root@git nrpe.d]# /usr/lib64/nagios/plugins/check_puppet
OK: Puppet agent "3.4.3" running catalogversion 1398787991, and executed at Tue 29 Apr 2014 04:13:25 PM UTC for last time

nagios_commands.cfg:

define command {
    command_line                   $USER1$/check_nrpe -H $HOSTADDRESS$ -t 15 -c check_puppet
    command_name                   check_nrpe_puppet
}

nagios_service.cfg:

define service {
    ## --PUPPET_NAME-- (called '_naginator_name' in the manifest)                    check_puppet
    check_command                  check_nrpe_puppet
    host_name                      server.addr
    service_description            check_puppet
    use                            generic-service
}

/etc/nrpe.d/nrpe-check_puppet

# Configuration for check_puppet (from the generic template)
command[check_puppet]=/usr/lib64/nagios/plugins/check_puppet

Para referência, aqui está uma configuração de trabalho minha

define command {
    command_line                   $USER1$/check_nrpe -H $HOSTADDRESS$ -t 15 -c check_ram
    command_name                   check_nrpe_ram

}

define service {
    ## --PUPPET_NAME-- (called '_naginator_name' in the manifest)                check_ram_server.addr
    check_command                  check_nrpe_ram
    host_name                      server.addr
    service_description            ram
    use                            generic-service
}

/etc/nrpe.d/nrpe-check_ram

# Configuration for check_ram (from the generic template)
command[check_ram]=/usr/lib64/nagios/plugins/check_ram -w 10% -c 5%

Atualização:

Eu adicionei o usuário Nagios aos sudoers conforme instruído no leia-me, mas não tinha testado a execução da verificação como usuário do Nagios. Isso falhou porque o caminho permitido na lista de sudoers estava incorreto (meu plugin está em Lib64), também o NRPE é executado como usuário nrpe em meus sistemas.

Eu corri sudoers para conceder sudo nopasswed para a pasta correta para nrpe usuário e adicionei um shell nrpe para que eu possa testar como esse usuário (foi definido como nologin)

bash-4.1$ whoami
nrpe
bash-4.1$ /usr/lib64/nagios/plugins/check_puppet 
UNKNOWN: last_run_summary.yaml not found, not readable or incomplete
bash-4.1$ exit
exit
[root@ip-10-185-165-196 plugins]# ps auxww | grep nrpe 
nrpe     16353  0.0  0.0  41320  1364 ?        Ss   23:33   0:00 /usr/sbin/nrpe -c   /etc/nagios/nrpe.cfg -d
root     16814  0.0  0.0 103236   856 pts/0    S+   23:53   0:00 grep nrpe
[root@ip-10-185-165-196 plugins]# 

No servidor nagios:

[root@puppet-master plugins]# ./check_nrpe -H <myserver> -t 15 -c check_puppet
CRITICAL: Puppet daemon not running or something wrong with process

Estou executando uma instalação mínima do CentOS 6.5

Eu desabilitei o requiretty com:

Defaults:nrpe    !requiretty

UPDATE 3:

Parece que o SELinux é o culpado. setenforce 0 resolveu os problemas. $ setenforce 0

    
por user218054 29.04.2014 / 18:17

1 resposta

2

Como aponta yoonix, o próprio plugin é bastante claro, nas linhas 36-38: é apenas um wrapper em torno de um plugin central, e esse plugin principal precisa ser executado como root. É por isso que funcionou bem quando você o executou como root. O wrapper aumentará o privilégio por meio de sudo ; está configurado para executar o sudo em si, mas você precisará fornecer privilégios sudo apropriados.

Supondo que seu nrpe seja executado como o usuário nagios , o plug-in diz que você precisará da seguinte linha no seu arquivo sudoers :

nagios ALL=NOPASSWD:/usr/bin/puppet,/usr/lib/nagios/plugins/check_puppet_agent,/bin/kill

(Não sei por que precisa de /bin/kill , mas diz que sim, então é melhor você conceder ou arriscar a falha do plug-in de maneiras interessantes e pouco documentadas.)

Você não nos diz qual é o seu SO (e, se Linux, distro); se fosse o CentOS e você estivesse usando o RPMforge nrpe , ele seria executado como usuário nagios . Você precisará descobrir em qual usuário seu nrpe é executado e substituí-lo pelo líder nagios na linha sudoers acima.

    
por 30.04.2014 / 12:07

Tags