Nagios enviando alertas via WhatsAPP

Este artigo trás uma breve descrição sobre como implementar o envio de alertas do Nagios para o WhatsAPP.

[ Hits: 75.025 ]

Por: Gleison em 14/04/2014 | Blog: http://gleisonrodrigo.xpg.uol.com.br/


Instalação



yowsup

1. Instalando as dependências

# yum install python26 python26-libs python26-argparse python26-dateutil

Obs: caso os pacotes não estejam disponiveis, tente instalar algum repositório, como: epel, remi, rpmforge, etc.

2. Baixando o yowsup:

# cd /opt
# wget
https://github.com/tgalal/yowsup/archive/yowsup-master.zip --no-check-certificate
# unzip yowsup-master.zip

3. Configurando o yowsup:

# cd yowsup-master/src
# chmod +x yowsup-cli
# cp config.example zapzap.config

 cc=55    #código do País(BR)
 phone=55+DDD+NUMERO    #Exemplo 559182820000
 id=Nagios Alerta
 password=VAMOS REQUISITAR


4. Registrando o Número:

# ./yowsup-cli -r sms -c zapzap.config
 status: sent
 retry_after: 3605
 length: 6
 method: sms


Onde:
  • -r, --requestcode :: solicita o código de registro.
  • sms :: recebe uma mensagem de texto com o código de registro.
  • -c, --config :: arquivo de configuração que contém o número do WhatsAPP.

Em seguida, será recebido um sms contendo o código de registro.

4.1 Ativando o registro:

# ./yowsup-cli -R 123-456 -c zapzap.config
 status: ok
 kind: free
 pw: aGGVSOGy6+OsMl0Ctz5nAc5tvO0=
 price: US$0.99
 price_expiration: 1400041960
 currency: USD
 cost: 0.99
 login: 559182820000
 type: existing
 expiration: 1428155655


Onde:
  • -R, --register :: Comando para registrar o número WhatsAPP.
  • 123-456 :: código recebido via sms.
  • -c, --config :: arquivo de configuração que contém o número do WhatsAPP.

Obs: inserir o campo "password=(item 3)" no arquivo zapzap.config com o valor pw da saida do comando acima(4.1).

pw :: aGGVSOGy6+OsMl0Ctz5nAc5tvO0=

5. Enviando uma mensagem:

# ./yowsup-cli -s 559182189171 "Testando ZapZap CLI - VOL" -w -c zapzap.config
 Connecting to c.whatsapp.net
 Authed 559182820000
 Sent message
 Got sent receipt


Onde:
  • -s, --send :: Comando de envio de mensagem.
  • 559182189171 :: Número de destino contendo código do País + DDD.
  • -w, --wait :: Quando usado o -s(--send) a conexão não irá fechar até que o servidor (WhatsAPP) tenha recebido a mensagem.
  • -c, --config :: arquivo de configuração que contém o número do WhatsAPP.

Obs: como foi dito anteriormente, utilizamos apenas os comandos request, register e send.

Porém, existem outros comandos. Para isso:

# ./yowsup-cli -h

Nagios

1. Configurando os alertas do Nagios:

1.1 Criando o comando de envio.

Para isso, devemos alterar o arquivo command-plugins.cfg do Nagios. No meu caso, está localizado em /etc/nagios/objects/.

Inserir as linhas:

define command{
command_name notify-by-wapp
command_line /opt/yowsup-master/src/yowsup-cli --send $CONTACTPAGER$ "$HOSTADDRESS$ $HOSTALIAS$: $SERVICEDESC$ is $SERVICESTATE$" --wait --config /opt/yowsup-master/src/zapzap.config
}

1.2 Criando o contato:

Este será o contato que irá receber os alertas do Nagios pelo WhatsAPP. Para isso, vamos alterar o arquivo contacts.cfg do Nagios. No meu caso, está em /etc/nagios/objects/.

define contact {
contact_name nagiosadmin
alias Nagios Admin
contactgroups admins
host_notifications_enabled 1
service_notifications_enabled 1
host_notification_period 24x7
service_notification_period 24x7
host_notification_options d,u,r,f,s
service_notification_options w,u,c,r,f,s
host_notification_commands notify-by-wapp
service_notification_commands notify-by-wapp
can_submit_commands 1
retain_status_information 1
retain_nonstatus_information 1
email gleison.r2@gmail.com
pager 559182189171
use gleison
register 1
}

Obs: caso você possua um contato já configurado, basta alterar/inserir as seguintes linhas.

host_notification_commands notify-by-wapp
service_notification_commands notify-by-wapp
pager 559182189171

1.3 Configurando o Alerta de um Host:

Altere dentro do seu arquivo de um Host as seguintes linhas.

define host {
.
.
.
event_handler notify-by-wapp
contacts nagiosadmin
.
.
}

1.4 Configurando o Alerta de um Serviço:

Altere dentro do seu arquivo de um Serviço, as seguintes linhas.

define service {
.
.
.
event_handler notify-by-wapp
contacts nagiosadmin
.
.
}

* Importante: lembre-se sempre de verificar no Nagios, se as configurações estão corretas antes de tentar reiniciar.

# nagios -v /etc/nagios/nagios.cfg
Total Warnings: 0
Total Errors: 0


Testando

Existem várias formas de simular um teste.

Eu sempre realizo bloqueando a chegada do servidor Nagios a determinado Host, ou Serviço via IPtables. Assim, tenho como testar a falha em um serviço ou no host, sem que ocorra parada nos mesmos.

HOST (Exemplo Ping):

# iptables -I OUTPUT -p icmp -d HOST_MONITORADO -j DROP

SERVIÇO (Exemplo SMTP):

# iptables -I OUTPUT -p tcp -d HOST_MONITORADO --dport 25 -j DROP

Considerações

Espero que tenha sido direto.

No entanto, sempre ocorrem dúvidas, uma vez que o mundo Open Source proporciona isso de você poder trabalhar suas idéias, não ficando amarrado a ambientes fechados, trazendo os mais variados "labs".

Quaisquer dúvidas estamos ai.

[]s

Página anterior    

Páginas do artigo
   1. Requisitos
   2. Instalação
Outros artigos deste autor

Balanceamento simples com BALANCE

Leitura recomendada

Criando um template customizado para o CACTI

Instalando DNS Server (BIND) no CentOS 7

Implementando Servidor NTP no Debian

Configurando Zabbix Server no Debian

VLAN Tagging nos sistemas GNU/Linux derivados do Red Hat

  
Comentários
[1] Comentário enviado por tsuriu em 14/04/2014 - 09:36h

Cara parabéns, muito útil essa dica. Eu estava procurando algo do tipo.
Me tira só um dúvida, é possível enviar uma mensagem para um grupo de contatos, ou algo do tipo?
Agradeço desde já.

[2] Comentário enviado por arthurmatiello em 14/04/2014 - 09:41h

Muito bom, vou testar e depois posto aqui!

[3] Comentário enviado por silent-man em 14/04/2014 - 10:37h

@tsuriu, valeu!

Você pode configurar no nagios o "contactgroups".

define contactgroup {
contactgroup_name admins
alias Nagios Administrators
members nagiosadmin,tsuriu
register 1
}

Sendo que os contatos nagiosadmin e tsuriu devem ter como opção de contato o "pager", no qual é o número zapzap.

o yowsup tem um parâmetro -b(--broadcast) que envia mensagem para mais de um destinatário

./yowsup-cli --broadcast "NUMERO1 NUMERO2" "MENSAGEM" -w -c whatsapp_config.txt

[]s

[4] Comentário enviado por andersonjackson em 14/04/2014 - 11:24h

Cara muito bom esse artigo.

Parabéns pelo achado.

[5] Comentário enviado por vitorcotta em 14/04/2014 - 12:30h

Excelente, segui o artigo e funciona 101%. Eu utilizo o Centreon.

[6] Comentário enviado por ricardoolonca em 15/04/2014 - 15:19h

Muito interessante. Uso Zabbix, mas acho que dá prá adaptar.

[7] Comentário enviado por dimasdaros em 15/04/2014 - 15:53h

opa, excelente ideia, não vou conseguir testar nesse momento, mas assim que chegar em casa vou verificar.

parabéns

[8] Comentário enviado por joaoferreira em 16/04/2014 - 18:50h

Boa noite,

O link parece não existe mais.

[9] Comentário enviado por joaoferreira em 16/04/2014 - 18:51h

Novo link pessoal https://github.com/tgalal/yowsup/archive/master.zip

[10] Comentário enviado por thyagobrasileiro em 17/04/2014 - 01:45h

me pergunto se é seguro usar uma versao antiga do python

[11] Comentário enviado por JJSantos em 18/04/2014 - 16:48h

Legal, muito bom!

[12] Comentário enviado por srdavidsilva em 22/04/2014 - 00:36h

Muito bom! Parabéns e obrigado pela contribuição.

[13] Comentário enviado por wellmendes em 24/04/2014 - 11:23h

Estou tendo problemas
Quando executo o comando ./yowsup-cli -r sms -c zapzap.config recebo a seguinte mensagem:
Detected cc: 20
Status: fail
reason: blocked

[14] Comentário enviado por vandocouto em 25/04/2014 - 14:15h

Muito bom. Vou testar tb.


[15] Comentário enviado por marciome2000 em 18/06/2014 - 15:57h

Fiz toda a configuração, mas estou usando grupo de contatos, já que são várias pessoas que recebem os alertas, dependendo do ativo ou serviço monitorado.

Testei o envio das mensagens e foi normal, mas não funcionou no nagios.

Alguém pode me ajudar?

[16] Comentário enviado por eunegru em 20/06/2014 - 15:28h

Pessoal, vocês estão conseguindo enviar mensagens para mais de um número, broadcast, aqui quando executo ou retorna erro de timedout quando uso a "," para separar os números, porém quando uso a dica de ./yowsup-cli --broadcast "NUMERO1 NUMERO2" "MENSAGEM" -w -c whatsapp_config.txt a mensagem não chega para nenhum destinatário. Poderiam me dar alguma dica, poisá j procurei em diversos locaisã e no obtive sucesso. Obrigado

[17] Comentário enviado por marciome2000 em 20/06/2014 - 16:05h

O erro no nagios.log é esse.



Warning: Attempting to execute the command "/root/yowsup-master/src/yowsup-cli --send XXXXXXXXXXXX "FIBRA-F04, Estado: DOWN, Data/Hora: Fri Jun 20 16:00:56 BRT 2014" --config /root/yowsup-master/src/yowsup-cli.config" resulted in a return code of 126. Make sure the script or binary you are trying to execute actually exists...

Alguém sabe como resolver?

[18] Comentário enviado por viper_mg em 02/07/2014 - 17:15h

Boa tarde Pessoal,

Ao executar o comando:

# ./yowsup-cli -r sms -c zapzap.config

Me retorna o seguinte erro:

[root@SrvNagios src]# ./yowsup-cli -r sms -c zapzap.config
File "./yowsup-cli", line 98
unistr = str if sys.version_info >= (3, 0) else unicode
^
SyntaxError: invalid syntax


Alguém pode me ajudar?
CentOS 5.9

[19] Comentário enviado por rodrigoKulb em 18/07/2014 - 00:00h

Muito bom!!! Parabéns...

[20] Comentário enviado por marcoslnx em 19/08/2014 - 10:14h

Instalação do EPEL

## RHEL/CentOS 7 64-Bit ##
wget http://dl.fedoraproject.org/pub/epel/beta/7/x86_64/epel-release-7-0.2.noarch.rpm
rpm -ivh epel-release-7-0.2.noarch.rpm

## RHEL/CentOS 6 32-Bit ##
wget http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm

## RHEL/CentOS 6 64-Bit ##
wget http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm

Instalação Dos Requisitos

yum install python-argparse python python-dateutil

[21] Comentário enviado por italogf em 26/09/2014 - 11:14h

cara, não recebo o request code por nada!!!

[22] Comentário enviado por brunoglobalwave em 29/09/2014 - 17:43h

não estou recebendo o requestcode no celular configurado.

[23] Comentário enviado por brunoglobalwave em 30/09/2014 - 09:58h


[21] Comentário enviado por italogf em 26/09/2014 - 11:14h:

cara, não recebo o request code por nada!!!


italogf estava com o mesmo problema, a solução é deixar o password em branco na hora de solicitar a request code.

[24] Comentário enviado por wagnerdias em 01/10/2014 - 12:52h

Recomendo a quem não está conseguindo receber o request code usar um numero de telefone que não tem whatsapp configurado. Comigo funcionou.

Eu não estou conseguindo receber mensagem no nagios mas no shell está funcionando alguem pode me ajudar.

[25] Comentário enviado por almeidanilo em 13/10/2014 - 10:47h

Não recebo o reuqest code também, estou colocando um chip sem cadastro no whats, tentei por voz tbm e não recebi a ligação!

[26] Comentário enviado por thla_88 em 23/12/2014 - 23:30h

Após o comando ./yowsup-cli -r sms -c zapzap.config
Ele da esse resultado:
Available commands:
=============
demos, version, registration

Alguém sabe resolver isso? Help galera!!!

[27] Comentário enviado por thla_88 em 24/12/2014 - 00:14h

Galera já resolvi, eis aqui a resposta:
./yowsup-cli registration --requestcode sms --phone xxxxxxxxxxxx --cc 55 --mcc 123 --mnc 456

INFO:yowsup.common.http.warequest:{"status":"sent","length":6,"method":"sms"."retry_after":1805}

status:sent
retry_after: 1805
length: 6
method: sms

[28] Comentário enviado por thla_88 em 24/12/2014 - 19:36h

Galera logo após este comando de cima que postei segue o próximo para receber a bendita senha (pw)

./yowsup-cli registration --register <código recebido via sms> --phone XXXXXXXXXX --cc <código do país>

Se der tudo certo logo vai gerar este resultado:

status: ok
kind: free
pw: jkagfaeoibassadubsasWN@)@NFW=
price: US$0.99
price_expiration: 1422218325
currency: USD
cost: 0.99
expiration: 1444211121
login: <codigo do país + código do DDD do estado + seu número>
type: existing

[29] Comentário enviado por removido em 15/01/2015 - 14:33h

Senhores, alguém já sabe enviar mensagem para um grupo no whatsapp?
Não pode ser no modo interativo.

[30] Comentário enviado por fabiobp2000 em 06/02/2015 - 21:59h

Consegui enviar pela linha de comando, porem não consigo enviar ao monitorar um serviço ou host;

Criei esse tópico para o meu problema, se alguém puder me dar uma luz agradeço.

http://www.vivaolinux.com.br/topico/Nagios/Colocar-um-comando-no-commands

Abraços.

[31] Comentário enviado por gabriel.andrade em 24/02/2015 - 17:27h

Ja obtive exito no registro e coloquei a senha no arquivo. Porém ao tentar enviar mensagem da o erro abaixo.

[root@unm97902044 yowsup-master]# ./yowsup-cli demos -s 558xxxxxxxxx "teste" -c zap.config
Traceback (most recent call last):
File "./yowsup-cli", line 304, in <module>
if not parser.process():
File "./yowsup-cli", line 227, in process
self.startSendClient()
File "./yowsup-cli", line 265, in startSendClient
from yowsup.demos import sendclient
File "/opt/yowsup-master/yowsup/demos/sendclient/__init__.py", line 1, in <module>
from .stack import YowsupSendStack
File "/opt/yowsup-master/yowsup/demos/sendclient/stack.py", line 1, in <module>
from yowsup.stacks import YowStack
File "/opt/yowsup-master/yowsup/stacks/__init__.py", line 1, in <module>
from .yowstack import YowStack, YowStackBuilder
File "/opt/yowsup-master/yowsup/stacks/yowstack.py", line 21, in <module>
from yowsup.layers.axolotl import YowAxolotlLayer
File "/opt/yowsup-master/yowsup/layers/axolotl/__init__.py", line 1, in <module>
from .layer import YowAxolotlLayer
File "/opt/yowsup-master/yowsup/layers/axolotl/layer.py", line 2, in <module>
from .protocolentities import SetKeysIqProtocolEntity
File "/opt/yowsup-master/yowsup/layers/axolotl/protocolentities/__init__.py", line 3, in <module>
from .iq_keys_get_result import ResultGetKeysIqProtocolEntity
File "/opt/yowsup-master/yowsup/layers/axolotl/protocolentities/iq_keys_get_result.py", line 3, in <module>
from axolotl.state.prekeybundle import PreKeyBundle
ImportError: No module named axolotl.state.prekeybundle

Versão do python:

[root@unm97902044 yowsup-master]# python -V
Python 2.6.6


Lembrando que tenho os pacotes acima referido:

[root@unm97902044 yowsup-master]# rpm -qa | grep -i python-argparse
python-argparse-1.2.1-2.el6.centos.noarch

[root@unm97902044 yowsup-master]# rpm -qa | grep python-dateutil
python-dateutil-1.4.1-6.el6.noarch

[32] Comentário enviado por silent-man em 25/02/2015 - 10:01h

Bom dia Gabriel,
acredito que o seu problema seja na sintaxe passada já que como você mesmo citou conseguiu registrar-se. Então, o aplicativo rodou.

Sua sintaxe:

[root@unm97902044 yowsup-master]# ./yowsup-cli demos -s 558xxxxxxxxx "teste" -c zap.config

Não entendi este "demos" antes do número de destino.

Tente como no exemplo do artigo.

./yowsup-cli -s 558xxxxxxxxx "Testando ZapZap CLI - VOL" -w -c zap.config

Abcs!

[33] Comentário enviado por fabiobp2000 em 15/03/2015 - 15:54h


Como mando mensagem para um grupo do whatsapp?

[34] Comentário enviado por viniciusinside em 14/06/2018 - 10:44h

Bom dia. Alguem poderia me ajudar a implementar este serviço do Whatapp(pelo yowsup) no CACTI. Eu uso a versao CACTIEZ. Vi algumas alternativas de envido de sms conforme este exemplo: https://habr.com/post/192250/ mas observei que o site russo vesms.ru nao esta funcionando aqui no Brasil. Entao vi a mensagem de voces aqui que esta enviando os alertas do Nagios. Será que existe alguma maneira de implementacao no CACTI? Peço a ajuda de voces. Obrigado. Abraços.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts