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)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
- 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
- 3)Necessário alterar a permissão
chmod 755 /usr/local/opmon/libexec/check_fila_mail.sh
- 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

