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:
#!/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;
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
}
Qualquer dúvida, só postar que na medida do possível vou respondendo.
Imagens de exemplo:
Interface do Nagios
Exemplo NagiosGraph com Perfomace data
Exemplo de gráfico completo
Exemplo de gráfico simples, apenas com label=valor
Script limpo, sem comentários:
#!/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;
mauricin, não entendi sua pergunta, como assim mapear outro processo?
Se você se referiu a verificar outro processo, sim, só mudar o nome so processo, por exemplo para verificar se nosso Glassfish está no ar faço assim:
GLASSFISH=$(ps aux | grep -v grep | grep -iw glassfish)
if [ -z "$GLASSFISH" ]; then
echo "Verifique, processo nao existe"
exit 2;
elif [ ! -z "$GLASSFISH" ]; then
echo "Processo OK"
exit 0;
else
echo "Opcao desconhecida."
exit 3;
fi
exit 3;
O que é preciso ter em mente é sempre o resultado que você vai retornar nas condições de teste que são: exit 0 = ok, exit 1 = warning; exit 2 = Critico; exit 3 Unknown