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