Iremos criar um script que retorna resultados direcionados para o Nagios. Esse script funcionará como um plugin e o resultado será enviado usando o agente nrpe.
Antes, se já não estiver instalado, instale o nrpe para que o servidor Nagios possa enviar e receber informações via rede. Veja esse link para instalação do nrpe: instalando o nrpe
É uma boa ideia manter seus plugins no mesmo diretório que outros plugins Nagios (/usr/lib/nagios/plugins/ ou em /usr/local/nagios/libexec/).
Vamos ao passo a passo para criação do script em bash.
Criando o Script que Será Nosso Plugin no Nagios
Criaremos como exemplo, um plugin que verifica o uso de uso de memória RAM e disparará um alerta se tiver apenas em 2GB disponíveis e enviará um nível crítico quando chegar tiver 1GB ou menos. O comando no bash que exibe informações swap é o free -m. Se tiver 3GB ou mais exibirá OK. Lembrando que o comando free -m traz valores em Megabytes e usaremos free -m ao invés de free -g porque com free -m temos mais precisão quando a memória ram ficar abaixo de 1GB.
Abaixo só converter GB para MB:
- 3 GB = 3072 MB
- 2 GB = 2048 MB
- 1 GB = 1024 MB
Também usaremos os operadores de comparação do bash:
- -gt para maior que(greater than)
- -eq para igual(equal)
- -lt para menor que(less than)
Vejamos antes o resultado do comando:
Veja que a leitura é fácil mas devemos evitar as letras como em 27Gi. O que queremos é somente os números, então podemos usar free -m.
root@pc:/usr/local/nagios# free -m
total used free shared buff/cache available
Mem.: 32096 172 29218 5 2705 31463
Swap: 975 0 975
Não consideraremos a memória em cache!
#1 Crie o arquivo /usr/local/nagios/libexec/check_minha_ram.
root@pc:~# touch /usr/local/nagios/libexec/check_minha_ram
#2 Dê permissão de execução
root@pc:~# chmod +x /usr/local/nagios/libexec/check_minha_ram
#3 Usando editores como nano ou vim, ou ainda um editor gráfico, edite o arquivo:
root@pc:~# vim /usr/local/nagios/libexec/check_minha_ram
#3 digite as linhas abaixo
#!/bin/bash
memoria_livre=$(echo `free -m | awk '{print $7}'`)
if [[ $memoria_livre -gt 3072 ]]
then
echo "OK - $memoria_livre MB livre(s)"
exit 0
elif [[ $memoria_livre -gt 2048 ]]
then
echo " $memoria_livre MB livres "
exit 1
elif [[ $memoria_livre -eq 1024 || $memoria_livre -lt 1024 ]]
then
echo "Critico - $memoria_livre MB livres"
exit 2
else
echo "Dsconhecido - $memoria_livre MB"
fi
Entendendo as Linhas Acima
Todo o plug-in Nagios NRPE se resume ao uso de códigos de saída ou exit para acionar alertas.
Veja essa tabela para entender
| Código Exit | Status |
| 0 | OK |
| 1 | WARNING |
| 2 | CRITICAL |
| 3 | UNKNOWN |
!/bin/bash informa que esse arquivo é um script e deve ser executado usando o bash.
Usamos free -g para termos informações de memória e awk ‘{print $7} para pegarmos a a sétima coluna do resultado do comando free.
Veja que usei $() para jogar o resultado de free -g para a variável memoria_livre. Na verdade, podemos colocar um comando dentro de $() ou dentro de crases `` coloquei das duas formas, um dentro do outro para praticar apenas.
As demais linhas são apenas comandos linux do bash. Você pode usar qualquer comando e pegar o resultado usando o exit…
No pc a Ser Monitorado
No computador a ser monitorado a memória, configure /usr/local/nagios/etc/nrpe.cfg colocando allowed_hosts colocando o IP do servidor nagios. Suponhamos que o ip seja 192.168.0.20, então ficará assim:
allowed_hosts=127.0.0.1,::1,192.168.0.20
Vinculando o Comando à um PC
Agora você pode usar o comando check_minha_ram para monitorar memória ram dos servidores ou computadores.
Dentro de /usr/local/nagios/etc/objects/ eu tenho um arquivo chamado server01.cfg com seguinte conteúdo:
define host {
host_name Server01
address 192.168.0.100
check_interval 5
retry_interval 1
max_check_attempts 5
check_period 24x7
check_command check-host-alive
notes Meu Servidor
}
define service {
host_name Server01
service_description Ping
check_command check_ping!200.0,40%!400.0,80%
max_check_attempts 5
check_interval 5
retry_interval 3
check_period 24x7
}
define service {
host_name Sidoc
service_description Memoria
check_command check_nrpe!check_minha_ram
max_check_attempts 5
check_interval 5
retry_interval 3
check_period 24x7
}
No Servidor Nagios
vá para /usr/local/nagios/etc/objects/commands.cfg e digite
define command {
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
Essa linha deverá existir apenas uma vez e servirá para todos os plugins do nrpe. Se ela já esitver dentro de …commands.cfg não precisa digitá-la.
NRPE usar TCP na porta 5666. Libere essa porta no firewall.
Reinicie o Servidor Nagios
systemctl restart nagios.service