Criando plugin para Nagios
Dica publicada em Linux / Introdução
Criando plugin para Nagios
Mostrarei aqui como criar um simples plugin para o Nagios usando shell script.
Vamos criar um plugin que verifica os processos do Apache, e a teoria aqui aplicada, pode ser usado para outras funções. Vou comentar as linhas no conteúdo do script para facilitar o entendimento.
Vamos criar um novo arquivo chamado check_procs_apache com o seguinte conteúdo:
Lembre-se que os valores de limite podem ser passado como argumentos (Desde que o script pegue esses argumentos com $1,$2...$9), assim no cfg ficaria algo parecido com:
O arquivo deve ficar em /usr/local/nagios/libexec, ou onde estiver os demais plugins do seu Nagios, dê a ele permissão de execução, e adicione o comando no command.cfg ou no nrpe caso seja remoto.
O nrpe.cfg remoto:
No serverApache.cfg do Nagios:
Qualquer dúvida, só postar que na medida do possível vou respondendo.
Imagens de exemplo:
Exemplo NagiosGraph com Perfomace data
Script limpo, sem comentários:
Vamos criar um plugin que verifica os processos do Apache, e a teoria aqui aplicada, pode ser usado para outras funções. Vou comentar as linhas no conteúdo do script para facilitar o entendimento.
Vamos criar um novo arquivo chamado check_procs_apache com o seguinte conteúdo:
#!/bin/bash
# Script que verifica a quantidade de processos do Apache.
# exit 1 = warning; exit 2 = Critico; exit 3 = Unknown
# Verificamos os processos httpd para o usuário apache (O qual roda meu Apache), e contabilizamos com o wc -l
# guardamos o resultado na variavel TOTAL_PROCS
TOTAL_PROCS=$( ps -fu apache | grep -v grep | grep -iw httpd | wc -l )
# Aqui testamos se os processos são menores que 100, se for, nosso retorno será de ok,
# pois não atingiu o limite estabelecido (No caso 100 processos)
# A linha echo "Processos OK. Total:$TOTAL_PROCS |ProcessosApache=$TOTAL_PROCS"
# é o que vai aparecer na interface do Nagios, como na imagem 01
# o exit 0, quem diz ao Nagios se o estado está Ok - Verde.
# Logo fica exit 0 -> Ok (Verde); exit 1 -> Warning (Amarelo); exit 2 -> Critico
# (Vermelho); exit 3 Unkown (Rosa)
# O pipe "|" Serve para informar o Performace data, ele é usado pelo Nagiosgraph, ele
# deve seguir o formato
# label=valor;warning;critico;minimo;máximo - ( Ver imagem 02 para gráfico simples apenas com label=valor).
# Com todas opções, seria parecido com a imagem 03,
# logo label=valor é o mínimo para ser informado, cria gráfico simples como na imagem 04.
# Performace data não é necessário, se não for usar o Nagiosgraph por exemplo
if [ $TOTAL_PROCS -lt 100 ]; then
echo "Processos OK. Total:$TOTAL_PROCS |ProcessosApache=$TOTAL_PROCS"
exit 0;
# Aqui testo se os processos são maiores que 150 se for emite o critico
elif [ $TOTAL_PROCS -gt 150 ]; then
echo "Verifique os processos. Total:$TOTAL_PROCS | ProcessosApache=$TOTAL_PROCS"
exit 2;
# Caso contrario só um warning
else
echo "Verifique os processos. Total:$TOTAL_PROCS |ProcessosApache=$TOTAL_PROCS"
exit 1;
fi
# Caso não seja nenhuma das opções assumo que desconheço o resultado e retorno Unknown
exit 3;
# Script que verifica a quantidade de processos do Apache.
# exit 1 = warning; exit 2 = Critico; exit 3 = Unknown
# Verificamos os processos httpd para o usuário apache (O qual roda meu Apache), e contabilizamos com o wc -l
# guardamos o resultado na variavel TOTAL_PROCS
TOTAL_PROCS=$( ps -fu apache | grep -v grep | grep -iw httpd | wc -l )
# Aqui testamos se os processos são menores que 100, se for, nosso retorno será de ok,
# pois não atingiu o limite estabelecido (No caso 100 processos)
# A linha echo "Processos OK. Total:$TOTAL_PROCS |ProcessosApache=$TOTAL_PROCS"
# é o que vai aparecer na interface do Nagios, como na imagem 01
# o exit 0, quem diz ao Nagios se o estado está Ok - Verde.
# Logo fica exit 0 -> Ok (Verde); exit 1 -> Warning (Amarelo); exit 2 -> Critico
# (Vermelho); exit 3 Unkown (Rosa)
# O pipe "|" Serve para informar o Performace data, ele é usado pelo Nagiosgraph, ele
# deve seguir o formato
# label=valor;warning;critico;minimo;máximo - ( Ver imagem 02 para gráfico simples apenas com label=valor).
# Com todas opções, seria parecido com a imagem 03,
# logo label=valor é o mínimo para ser informado, cria gráfico simples como na imagem 04.
# Performace data não é necessário, se não for usar o Nagiosgraph por exemplo
if [ $TOTAL_PROCS -lt 100 ]; then
echo "Processos OK. Total:$TOTAL_PROCS |ProcessosApache=$TOTAL_PROCS"
exit 0;
# Aqui testo se os processos são maiores que 150 se for emite o critico
elif [ $TOTAL_PROCS -gt 150 ]; then
echo "Verifique os processos. Total:$TOTAL_PROCS | ProcessosApache=$TOTAL_PROCS"
exit 2;
# Caso contrario só um warning
else
echo "Verifique os processos. Total:$TOTAL_PROCS |ProcessosApache=$TOTAL_PROCS"
exit 1;
fi
# Caso não seja nenhuma das opções assumo que desconheço o resultado e retorno Unknown
exit 3;
Lembre-se que os valores de limite podem ser passado como argumentos (Desde que o script pegue esses argumentos com $1,$2...$9), assim no cfg ficaria algo parecido com:
check_command check_procs_apache!100!150
O arquivo deve ficar em /usr/local/nagios/libexec, ou onde estiver os demais plugins do seu Nagios, dê a ele permissão de execução, e adicione o comando no command.cfg ou no nrpe caso seja remoto.
O nrpe.cfg remoto:
command[check_total_procs_apache]=/usr/local/nagios/libexec/check_procs_apache
No serverApache.cfg do Nagios:
define service{
use &nbs p; generic-service
host_name &nbs p; ApacheServer
service_description &nb sp; Processos Apache
check_command check_nrpe_com_ssl!check_total_procs_apache
contact_groups admins
servicegroups servicos_importantes }
use &nbs p; generic-service
host_name &nbs p; ApacheServer
service_description &nb sp; Processos Apache
check_command check_nrpe_com_ssl!check_total_procs_apache
contact_groups admins
servicegroups servicos_importantes }
Qualquer dúvida, só postar que na medida do possível vou respondendo.
Imagens de exemplo:
Exemplo NagiosGraph com Perfomace data
#!/bin/bash
# Script que verifica a quantidade de processos do Apache.
# exit 1 = warning; exit 2 = Critico; exit 3 = Unknown
TOTAL_PROCS=$( ps -fu apache | grep -v grep | grep -iw httpd | wc -l )
if [ $TOTAL_PROCS -lt 100 ]; then
echo "Processos OK. Total:$TOTAL_PROCS |ProcessosApache=$TOTAL_PROCS"
exit 0;
elif [ $TOTAL_PROCS -gt 150 ]; then
echo "Verifique os processos. Total:$TOTAL_PROCS |ProcessosApache=$TOTAL_PROCS"
exit 2;
else
echo "Verifique os processos. Total:$TOTAL_PROCS |ProcessosApache=$TOTAL_PROCS"
exit 1;
fi
exit 3;
# Script que verifica a quantidade de processos do Apache.
# exit 1 = warning; exit 2 = Critico; exit 3 = Unknown
TOTAL_PROCS=$( ps -fu apache | grep -v grep | grep -iw httpd | wc -l )
if [ $TOTAL_PROCS -lt 100 ]; then
echo "Processos OK. Total:$TOTAL_PROCS |ProcessosApache=$TOTAL_PROCS"
exit 0;
elif [ $TOTAL_PROCS -gt 150 ]; then
echo "Verifique os processos. Total:$TOTAL_PROCS |ProcessosApache=$TOTAL_PROCS"
exit 2;
else
echo "Verifique os processos. Total:$TOTAL_PROCS |ProcessosApache=$TOTAL_PROCS"
exit 1;
fi
exit 3;
É possivel mapear outros processos somente alterando o nome do Processo, ou há alguns outros fatores que interferrem no MOnitoramento ?
Att