How to write Plugins

Olá a todos, hoje vou mostrar como escrever um plugin para o OpMon em shell Script. Na verdade um simples plugin apenas para mostrar.

O OpMon compreende 4 tipos de saída referente a status:

  • OK = 0
  • WARNING = 1
  • CRITICAL = 2
  • UNKNOWN = 3

Logo precisamos escrever as saídas com estes números (0,1,2,3) ou para casos mais simples com (0 e 2). Para fazer isso em shell script é necessário escrever a saída com exit 0, exit 1, exit 2 e exit 3 Ok, Maioria de nós conhecemos o check_mailq que analisa a fila de e-mail e funciona muito bem, mas vamos imaginar que ele não exista pelo menos até o fim deste artigo, ok?

Este é apenas um exemplo de shell script.

  1. 1)Acesse a console do OpMon via SSH e crie o arquivo através do comando abaixo:

vim /usr/local/opmon/libexec/check_fila_mail.sh

  1. 2)Depois, preencha o conteúdo do arquivo com este exemplo:

#!/bin/sh
## Criando os arquivos temporarios
/usr/sbin/postqueue -p > /tmp/fila.log
/usr/sbin/postqueue -p > /tmp/fila-vazia.log
## Realizando as consultas
tail -n 1 /tmp/fila.log | cut -d " " -f 5 > /tmp/nfila.txt
cat /tmp/fila-vazia.log | grep "Mail queue is empty" > /dev/null
## Testando a ultima consulta para verificar se a fila esta vazia
if [ $? = 0 ]
then
echo "OK - A fila de E-mail esta vazia"
exit 0
         ## Fila menor ou igual a 50
         elif [ `cat /tmp/nfila.txt` -lt 50 ]
         then
               echo "OK - A fila tem `cat /tmp/nfila.txt` e-mails"
exit 0
          ## Fila menor ou igual a 80
          elif [ `cat /tmp/nfila.txt` -lt 80 ]
          then
               echo "WARNING - A fila tem `cat /tmp/nfila.txt` e-mails"
exit 1
          ## Fila maior que 80
          elif [ `cat /tmp/nfila.txt` -gt 80 ]
          then
                echo "CRITICAL - A fila tem `cat /tmp/nfila.txt` e-mails"
                exit 2
          else
                echo "UNKNOWN - Erro ao tentar ler a fila de e-mail"
                exit 3
fi

  1. 3)Necessário alterar a permissão

chmod 755 /usr/local/opmon/libexec/check_fila_mail.sh

  1. 4)Ok, agora vamos testar o plugin

/usr/local/opmon/libexec/check_fila_mail.sh OK – A fila tem 35 e-mails

Vocês podem alterar os valores para teste, ja fiz aqui e esta funcionando. Este é um plugin que funciona apenas local, logo para utiliza-lo em servidores remotos é necessário que utilize o NRPE.

Veja também Plugins e aproveite para dar uma olhada nesta documentação Leverage Nagios with plug-ins you write.

Fonte: Nagios na Prática