Criando plugin para Nagios

Publicado por Rogério Tomassoni em 05/07/2011

[ Hits: 16.156 ]

 


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:

#!/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:

Linux: 
Criando plugin para Nagios
Interface do Nagios
Linux: Criando plugin para Nagios
Exemplo NagiosGraph com Perfomace data
Linux: 
Criando plugin para Nagios
Exemplo de gráfico completo
Linux: 
Criando plugin para Nagios
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;


Outras dicas deste autor

Suporte remoto com x11vnc

Bloqueando tráfego via MAC com iptables

Perfis com uma pitada de tunning

Limitando sessões KDE LTSP 4.2

Suporte remoto com VNC LTSP 4.2

Leitura recomendada

Linux mais do que um sistema, uma cultura

Acessando o site do Banco do Brasil no Debian Wheezy

Comando para Copiar Arquivos ou Diretórios

openSUSE Build Service (OBS)

Entendendo o DHCP de forma simples

  

Comentários
[1] Comentário enviado por mauricin em 05/07/2011 - 13:42h

Rogério,

É possivel mapear outros processos somente alterando o nome do Processo, ou há alguns outros fatores que interferrem no MOnitoramento ?

Att

[2] Comentário enviado por tomassoni em 07/07/2011 - 08:01h

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


[3] Comentário enviado por mauricin em 07/07/2011 - 09:16h

É isso mesmo que eu gostaria de saber..

No caso, se eu quiser mapear o Serviço XX, indentifico o Processo do XX e altero no GREP e nas demais variaveis cabiveis ao processo.

Vlw amigo.
Abs.

[4] Comentário enviado por cassio em 08/07/2011 - 18:02h

Tomassoni,

Muito bom artigo, veio bem acalhar em uma hora que estou precisando de um plugins desses.

Veou testar e agradeço pela dica.

[5] Comentário enviado por tomassoni em 12/07/2011 - 14:07h

Legal, que bom que consigo compartilhar um pouco com a comunidade.
Precisando só gritar.
" Sejamos como sol que não visa nenhuma recompensa,nenhum elogio,não espera lucros nem fama,simplesmente brilha! "



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts