Criando plugin para Nagios

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

[ Hits: 14.414 ]

 


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

Erro ao inciar sessão gráfica (status 256)

Renomeando Konsole

Limpando lixeira centralizada do Samba

Script Nagios + NRPE checa filas CUPS

Adicionando módulo LTSP4.2 à árvore do kernel

Leitura recomendada

Dicas para iniciar sua vida no mundo GNU/Linux

Verificar triggers desabilitadas no PostgreSQL

Intranet Corporativa Vindula - Nova versão lançada

Via vn896 S3/VIA Graphics Chrome9 HC IGP com 3D rápido e fácil

Acessando AP Wireless Zinwell G200 via Putty

  

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
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts