O plugin Nagios não funciona do servidor, mas localmente

1

Eu escrevi um pequeno script bash que verifica se o serviço docker está funcionando ou não e está bem quando eu testo no cliente localmente mas de alguma forma ele não está funcionando no servidor nagios que realmente usa check_nrpe para executar meu script. mostra mais parte do script. meu nrpe.cfg está correto também.

Aqui está o script:

#!/bin/bash

CONTAINER=ubuntu_container

RUNNING=$(docker inspect --format="{{ .State.Running }}" $CONTAINER 2> /dev/null)

if [ "$RUNNING" == "true" ]; then
   echo "OK - $CONTAINER is running."
   exit  0
else
   echo "CRITICAL - $CONTAINER is not running."
   exit 2
fi

Saída do servidor nagios:

root@nag_server nagios]# /usr/lib64/nagios/plugins/check_nrpe -t 30 -H docker-host.intenallab -c docker_container
CRITICAL - ubuntu_container is not running.

Saída do cliente:

[root@ubuntu]# /usr/lib64/nagios/plugins/extra/docker_container 
OK - ubuntu_container is running.
    
por amber mehra 23.02.2017 / 07:33

2 respostas

1

Parece um erro de permissão. Você está executando o script localmente como usuário root enquanto executa o script remotamente via nrpe como usuário nagios (você não nos mostrou a linha relevante nrpe.cfg config que chama o script).

Para corrigir isso, você pode modificar o arquivo nrpe.cfg para se parecer com:

command[docker_container]=sudo /usr/lib64/nagios/plugins/extra/docker_container

Além disso, não esqueça de adicionar o usuário nagios ao arquivo sudoers para executar este script sem pedir uma senha usando visudo .

    
por 23.02.2017 / 09:22
0

É um problema de permissões, como apontou @Khaled, mas não consegui que a solução funcionasse. Adicionando o usuário ao grupo docker fez o truque para mim.

sudo usermod -a -G docker $(grep nrpe_user /etc/nagios/nrpe.cfg|awk -F= '{print $2}')

Depois disso, meu usuário pode executar comandos do docker sem a necessidade de o sudo e o NRPE serem concluídos com êxito no servidor Nagios.

    
por 11.05.2018 / 23:14