Execute o check_nrpe no servidor remoto

2

Eu estou tentando monitorar um pequeno serviço em um servidor fictício via Icinga2 o plugin check_nrpe. Eu configurei os dois corretamente, pois posso fazer o seguinte:

  • quando eu corro /usr/lib/nagios/plugins/check_nrpe -H remote-server-ip do servidor principal recebo NRPE v2.15
  • quando eu faço /usr/lib/nagios/plugins/check_nrpe -H main-server-ip de o servidor remoto eu recebo o mesmo resultado.
  • quando executo /usr/lib/nagios/plugins/check_nrpe -H remote-server-ip -c check_load , recebo WARNING - load average: 5.85, 5.67, 5.55|load1=5.850;15.000;30.000;0; load5=5.670;10.000;25.000;0; load15=5.550;5.000;20.000;0;

Agora estou tentando usar o check_nrpe para executar um script pequeno na minha máquina remota, que é colocado em /usr/local/lib/ chamado check_remote_server.py . Para isso eu fiz o seguinte:

em /etc/icinga2/conf.d/test.conf

object Service "Test Check" {
    import "generic-service"
    host_name = "remote-server-ip"
    check_command = "check_nrpe"
    vars.ARG1 = "check_remote_server"
}

object Host "remote-server-ip" {
    import "linux-server"
    address = "xx.xx.xx.xx"
    groups = [ "test" ]
}

e em /etc/nagios/nrpe.cfg

command[check_remote_server]=/usr/local/lib/check_remote_server.py -w 2 -c 1

No entanto, quando eu reinicio o icinga2 e verifico o status, eu recebo todos os tipos de erros de sintaxe, erros de compilação, etc, que só desaparecem depois que eu reviro TODAS as alterações que eu fiz. Eu não consigo descobrir a vida de mim como passar argumentos com check_nrpe.

Alguém pode POR FAVOR, me dar um simples quide de como configurar uma verificação personalizada via check_nrpe ?

EDIT: Usou a tag icinga em vez de icinga2 porque não há tag icinga2.

Edit2: Eu apenas tentei isso na linha de comando /usr/lib/nagios/plugins/check_nrpe -H remote-ip -c check_disk -a "-w 20% -c 10% adn obteve o erro CHECK_NRPE: Received 0 bytes from daemon. Check the remote server logs for error messages.

    
por newkid101 16.11.2015 / 21:03

2 respostas

1

Chances são a razão pela qual seu teste de linha de comando com o check_disk está retornando "Recebido 0 bytes do daemon" é porque você não tem:

dont_blame_nrpe=1

definido no seu arquivo nrpe.cfg, pois é necessário para permitir que o cliente nrpe passe qualquer argumento. Como há uma implicação de segurança para permitir que argumentos arbitrários executem testes, ele é desaprovado por padrão.

Você não precisa ativar isso para testar seu script de verificação customizado, já que você já o definiu no nrpe.cfg do host. O que acontece quando você testa seu comando de verificação personalizado do seu servidor icinga via

/usr/lib/nagios/plugins/check_nrpe -H remote-ip -c check_remote_server

?

Exclua quaisquer problemas com o nrpe e seu script de verificação, mas também dê uma segunda olhada nas suas definições de serviço e comando. Olhando para o seu trecho de configuração, o primeiro problema que vejo é a linha "Serviço de objeto" - isso deve ser "aplicar serviço". Além disso, verifique se você tem uma definição de comando definida para NRPE. Tente algo assim para começar:

object HostGroup "test" {
  display_name = "Test Group"
  assign where host.name == "hostname.com"
  check_command = "dummy"
}

object Host "hostname.com" {
    import "generic-host"
    address = "xx.xx.xx.xx"
}

object CheckCommand "check_nrpe" {
    import "plugin-check-command"
    command = [PluginDir + "/check_nrpe" ] # Make sure this points to check_nrpe binary
    arguments = {
    "-H" = "$host$"
    "-c" = "$ARG1$"
    }
}

apply Service "Test Check" {
    import "generic-service"
    check_command = "check_nrpe"
    vars.ARG1 = "check_remote_server"
    assign where "test" in host.groups
}

Algo relacionado, mas como você está usando o icinga2, por que não apenas abandonar o nrpe e usar o icinga2 cliente nativo ? É bastante flexível e possivelmente mais seguro do que usar o nrpe.

    
por 19.11.2015 / 04:23
0

Parece que seu servidor remoto está correto, você tem a linha relevante em seu nrpe.cfg

command[check_remote_server]=/usr/local/lib/check_remote_server.py -w 2 -c 1

Desde que o seu script realmente produza dados que são reconhecidos pelo Nagios (que eu sou cético em relação ao Nagios se queixar de erros de sintaxe, certifique-se de que o número de semicolons et al seja igual!)

Então, no seu mestre, deve ser tão simples quanto

 check_nrpe!check_remote_server
    
por 16.11.2015 / 22:58

Tags