O documento descreve como criar plugins para o Nagios usando shell script, fornecendo exemplos de scripts para monitorar uma fila de e-mail e verificar se um IP está em listas de spam. Explica como escrever scripts que retornam códigos de status compatíveis com o Nagios e como usar esses plugins para monitoramento remoto.
Instalando e configurando o serviço snmpd no red hat 5.3 cent_os
Shell Script Check Mail Queue
1. 19/5/2014 Artigo 12 – Criando plugin para o Nagios em Shell Script | Nagios
http://nagiosnapratica.wordpress.com/2010/12/08/artigo12-criando-plugin-para-o-nagios-em-shell-script/ 1/7
Artigo 12 – Criando plugin para o Nagios em
Shell Script
(http://nagiosnapratica.files.wordpress.com/2010/12/images-ideia.gif)Olá a todos, hoje vou
mostrar como escrever um plugin para o Nagios em shell Script. Na verdade um simples
plugin apenas para mostrar né
O Nagios 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?
Pessoal, este é apenas um exemplo de shell script, não sou expert em shell script mas me viro,
então sem criticas ok?
## Vamos criar o arquivo com o conteúdo abaixo:
vim /usr/local/nagios/libexec/check_fila_mail.sh
2. 19/5/2014 Artigo 12 – Criando plugin para o Nagios em Shell Script | Nagios
http://nagiosnapratica.wordpress.com/2010/12/08/artigo12-criando-plugin-para-o-nagios-em-shell-script/ 2/7
#!/bin/sh
###############################################
## LucianoMaiaCirilo ##
## lucianosuperathotmail.com ##
## http://www.nagiosnapratica.com.br ##
###############################################
##Criandoosarquivostemporarios
mailq>/tmp/fila.log
mailq>/tmp/fila-vazia.log
##Realizandoasconsultas
tail-n1/tmp/fila.log|cut-d""-f5>/tmp/nfila.txt
cat/tmp/fila-vazia.log|grep"Mailqueueisempty">/dev/null
##Testandoaultimaconsultaparaverificarseafilaestavazia
if[$?=0]
then
echo"OK-AfiladeE-mailestavazia"
exit0
##Filamenorouiguala50
elif[`cat/tmp/nfila.txt`-lt50]
then
echo"OK-Afilatem`cat/tmp/nfila.txt`e-mails"
exit0
##Filamenorouiguala80
elif[`cat/tmp/nfila.txt`-lt80]
then
echo"WARNING-Afilatem`cat/tmp/nfila.txt`e-mails"
exit1
##Filamaiorque80
elif[`cat/tmp/nfila.txt`-gt80]
then
echo"CRITICAL-Afilatem`cat/tmp/nfila.txt`e-mails"
exit2
else
echo"UNKNOWN-Erroaotentarlerafiladee-mail"
exit3
fi
## Necessário alterar a permissão
chmod 755 check_fila_mail.sh
## Ok, agora vamos testar o plugin
3. 19/5/2014 Artigo 12 – Criando plugin para o Nagios em Shell Script | Nagios
http://nagiosnapratica.wordpress.com/2010/12/08/artigo12-criando-plugin-para-o-nagios-em-shell-script/ 3/7
./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 já explicado aqui no artigo 6
(http://nagiosnapratica.wordpress.com/2010/10/20/artigo6-monitorando-so-linux-com-
nrpe-no-nagios/)
Pessoal vou aproveitar e disponibilizar um plugin que verifica se um determinado IP esta
listado em algumas blacklist publicas, como vocês perceberam como qualquer outro
sysadmin não vivo só de Nagios. Espero que gostem e utilizem:
vim /usr/local/nagios/libexec/check_rbl.sh
#!/bin/sh
#########################################################################
## #
## check_rbl.sh-VerificaseoIPestalistadonasprincipaisRBLs #
## LucianoMaiaCirilo-lucianosuper2atgmail.com #
## http://www.nagiosnapratica.com.br #
## #
#########################################################################
iprbl(){
cat/tmp/$iplog|cut-d.-f1>/tmp/1$iplog
cat/tmp/$iplog|cut-d.-f2>/tmp/2$iplog
cat/tmp/$iplog|cut-d.-f3>/tmp/3$iplog
cat/tmp/$iplog|cut-d.-f4>/tmp/4$iplog
paste-d"."/tmp/4$iplog/tmp/3$iplog/tmp/2$iplog/tmp/1$iplog>/tmp/reverso
}
nomeip(){
>/tmp/nslookup$iplog.log
nslookup"$iplog">/tmp/nslookup$iplog.log
cat/tmp/nslookup$iplog.log|grep-v"#53"|grep"Address"|cut-c10-900>
}
if[$#=0]
then
echo"Usage:$0{IP}"
echo"Or"
echo"Usage:$0200.0.0.10"
exit1
4. 19/5/2014 Artigo 12 – Criando plugin para o Nagios em Shell Script | Nagios
http://nagiosnapratica.wordpress.com/2010/12/08/artigo12-criando-plugin-para-o-nagios-em-shell-script/ 4/7
fi
iplog="$1"
echo"$iplog">/tmp/$iplog
>/tmp/reverso2$iplog.log
>/tmp/nslookup$iplog.log
>/tmp/verifica2$iplog.log
>/tmp/saida$iplog.log
>/tmp/ips-listados2$iplog.log
grep"[0-9].[0-9]"/tmp/$iplog>/dev/null
if[$?=0]
then
iprbl
else
nomeip
iprbl
fi
#####verificandoasrbls
foriin`cat/tmp/reverso2$iplog.log`;
do
host-tA$i.relays.mail-abuse.org >>/tmp/verifica2$iplog.log
host-tA$i.b.barracudacentral.org >>/tmp/verifica2$iplog.log
host-tA$i.rbl.smtpcheck.net >>/tmp/verifica2$iplog.log
host-tA$i.zen.spamhaus.org >>/tmp/verifica2$iplog.log
host-tA$i.bl.spamcop.net >>/tmp/verifica2$iplog.log
done
####TratandoaSaidadoArquivo
output(){
cat/tmp/ips-listados2$iplog.log|grep"relays.mail-abuse">/dev/null
if[$?=0]
then
echo"$i.relays.mail-abuse.org">>/tmp/saida$iplog.log
else
echo"IPnotfound">>/dev/null
fi
cat/tmp/ips-listados2$iplog.log|grep"barracudacentral">/dev/null
if[$?=0]
then
echo"$i.b.barracudacentral.org">>/tmp/saida$iplog.log
else
echo"IPnotfound">>/dev/null
fi
5. 19/5/2014 Artigo 12 – Criando plugin para o Nagios em Shell Script | Nagios
http://nagiosnapratica.wordpress.com/2010/12/08/artigo12-criando-plugin-para-o-nagios-em-shell-script/ 5/7
cat/tmp/ips-listados2$iplog.log|grep"rbl.smtpcheck">/dev/null
if[$?=0]
then
echo"$i.rbl.smtpcheck.net">>/tmp/saida$iplog.log
else
echo"IPnotfound">>/dev/null
fi
cat/tmp/ips-listados2$iplog.log|grep"zen.spamhaus">/dev/null
if[$?=0]
then
echo"$i.zen.spamhaus.org">>/tmp/saida$iplog.log
else
echo"IPnotfound">>/dev/null
fi
cat/tmp/ips-listados2$iplog.log|grep"spamcop.net">/dev/null
if[$?=0]
then
echo"$i.bl.spamcop.net">>/tmp/saida$iplog.log
else
echo"IPnotfound">>/dev/null
fi
echo"CRITICAL-`cat/tmp/saida$iplog.log`"
exit2
}
cat/tmp/verifica2$iplog.log|grep-v"notfound"|grep-v"hasnoA">/tmp
if[$?=0]
then
output
else
echo"OK-`cat/tmp/$iplog`IPNotListRBLsPublic"
exit0
fi
### Alterando a permissão
chmod 755 check_rbl.sh
.
Espero que tenha sido esclarecedor para todos. Até a próxima!
.
.
.
6. 19/5/2014 Artigo 12 – Criando plugin para o Nagios em Shell Script | Nagios
http://nagiosnapratica.wordpress.com/2010/12/08/artigo12-criando-plugin-para-o-nagios-em-shell-script/ 6/7
Luciano Maia Cirilo
www.nagiosnapratica.com.br (http://www.nagiosnapratica.com.br/)
check_fila_mail.sh , plugin , shell script
Esta entrada foi publicada em dezembro 8, 2010, 1:32 pm e está arquivada em Artigos, Nagios,
Plugins. Você pode seguir quaisquer respostas para esta entrada através de RSS 2.0. Você
pode deixar uma resposta, ou trackback do seu próprio site.
COMENTÁRIOS (7)
#1 por Marcelo Terres em dezembro 8, 2010 - 3:31 pm
Ótimo plugin, parabéns pelo excelente trabalho.
Adicionei a sorbs.net nele pois precisava monitorar tal lista também.
[]s
#2 por Jamila em março 25, 2011 - 10:32 am
Estou tentando criar um plugin para o nagios, mas parece que ele nao entende as saidas…
Depois de criar o plugin como faço para usar, de fato, dentro do nagios?
#3 por Nagios na Prática! em março 25, 2011 - 10:39 am
Olá Jamila,
Você precisa verificar quais são os erros, como disse no artigo não sou expert em Shell
Script, então sugiro que pesquise mesmo
Para usar o plugin sugiro que leia o artigo sobre o nrpe para monitorar os clientes
linux, segue o link do artigo:
http://nagiosnapratica.wordpress.com/2010/10/20/artigo6-monitorando-so-linux-
com-nrpe-no-nagios/
Espero ter ajudado.
Att.
Luciano Maia Cirilo
LPIC-3
http://www.nagiosnapratica.com.br
#4 por Jamila em março 25, 2011 - 11:05 am
O script funciona, tanto que o utilizamos em outra ferramenta para monitorar.
Não chega a ser um caso de usar nrpe, pois é um ping.
Oq o script faz é logar no router, realizar o ping e devolver o resultado.
Mas como faço pra rodar dentro do nagios? Em que diretorio coloco?
About these ads
(http://en.wordpress.com/about-these-ads/)
7. 19/5/2014 Artigo 12 – Criando plugin para o Nagios em Shell Script | Nagios
http://nagiosnapratica.wordpress.com/2010/12/08/artigo12-criando-plugin-para-o-nagios-em-shell-script/ 7/7
Obrigada pela atenção!
#5 por Nagios na Prática! em março 28, 2011 - 9:39 am
Olá Jamila,
Você deve colocar o script no diretorio /usr/local/nagios/libexec/
criar o template dentro do arquivo: commands.cfg
E utilizar este template nos arquivos hosts.cfg e services.cfg
Caso queira envie depois o script para as listas do Nagios para o pessoal dar as
opiniões.
Att.
Luciano Maia Cirilo
LPIC-3
http://www.nagiosnapratica.com.br
#6 por Gabriel em dezembro 5, 2011 - 7:39 pm
Boa Noite,
pode me dizer como eu faço um scrip para o Nagios ver se um serviço esta rodando ou
não??
tipo, gostaria de criar um scrip para mostrar se alguns serviços meus estao rodando ou
parado, como por exemplo, asterisk, openfire, mysql, etc…
sei q existe alguns plugins prontos tanto q uso mtos, mas keria saber fazer algo bem basico
q só mostre na tela se esta rodando ou não…
tem como me ajudar??
Obrigado
#7 por Diego em julho 24, 2013 - 11:07 am
Olá, tem alguma dica para fazer um plugin para monitorar Toner de impressora laser
Brother todos os modelos ?
Crie um website ou blog gratuito no WordPress.com. O tema Fusion.
Seguir
Seguir “Nagios”
Tecnologia WordPress.com