Para os que administram sistemas de serviços críticos como sistemas em intranet, servidores web, servidores de bancos de dados, sistemas de hospitais, etc, sabem da importância do monitoramento do status do Servidor.

Existem várias técnicas a serem utilizadas quando falamos de monitoramento, porem a determinados sistemas que rodam 24 horas, todos os dias da semana, e todos os dias do ano, deixando uma brexa em monitoramento de aviso por e-mail.

Então, qual a solução ?

Como fazer os servidores avisarem os administradores de sistemas de uma forma viável, rápida e sem custo algum ?

Eis que a resposta surge rapidamente, monitoramento por celular.

Aqui uma engenhosa ideia surge, utilizar a API do Twitter para envio de mensagens por SMS juntamente com um script Python para fazer com que o servidor interaja com a API, podendo assim informar o status do servidor via celular e sem custo algum.

Nesta postagem, vamos implementar o monitoramento de um ou mais servidores utilizando a API do Twitter para envio de Direct Messages (DM) e recebe-las como SMS em um ou mais celulares.

Download da Aplicação

Twitter-Server é uma aplicação criada para poder interagir o servidor com a API do Twitter. Esta aplicação utiliza a biblioteca tweepy (github), que é responsavel por autenticar, manipular e gerenciar a interação de status, mensagens diretas e tweets para a sua @conta online.

Esta aplicação foi testada com as versões 2.5,2.6 e 2.7 do Python, funcionando muito bem em servidores com a distribuição Debian, Fedora, Ubuntu, Suse e CentOS, nas demais distribuições é necessário testes de apuração e verificações de erros.

Uma observação a deixar aqui é que em determinadas distribuições foi necessária a instalação de algumas bibliotecas adicionais, portanto preste atenção nas mensagem que o interpretador Python irá emitir ou nas mensagens de errors dos LOG(s) do sistema.

Faça o download da aplicação Twitter Server e descompate os arquivos para um diretório de sua escolha no Servidor.

Crie uma Conta do Twitter

No twitter, crie uma conta que será responsavel por habilitar a aplicação que enviará as Direct Message(DM) para os usuários responsaveis pelo servidor.

Lembrando que as Mensagens diretas somente serão lidas pelos usuários que seguem e são seguidos, também recordando que estas mensagens são privadas e não serão reportadas com tweets públicos, não apacendo nem mesmo no timeline do twitter.

O processo de cadastro é bem simples, mesmo estando em inglês não haverá problemas pois é auto explicativo.


Preencha os dados e pronto você é um novo usuário do Twitter.


Configurando o Celular

O que queremos agora é informar a conta do Twitter que acabamos de gerar o número do celular a receber as informações vindas do servidor.

Depois de clicar em Settings » Mobile Informe os dados de sua região, operadora e o número do celular a receber as mensagens.

Instalando e Configurando a Aplicação Twitter-Server

Agora vamos configurar a aplicação Twitter-Server que rodará no servidor.

Primeiramente devemos registrar nossa aplicação no twitter da seguinte forma. Em Settings » Connections, a direita click no link “here” como na imagem abaixo:

Em seguida click em “Register a new Application“.

No Formulário da imagem abaixo preencha os seguintes itens:

  • Application Name
  • Description
  • Application Website
  • Website
  • Application Type
    • Selecione Client
  • Default Access type:
    • Selecione Read & Write
  • Use Twitter for login:
    • Mantenha-o desmarcado

Pronto, basta agora clicar em Save.

A próxima tela irá apresentar as chaves para inserir na aplicação Twitter-Server (Consumer Key, Consumer Secret)

Entrando no diretório descompáctado da aplicação twitter-server, vamos editar o arquivo twitter.py e inserir as chaves geradas no passo anterior, CONSUMER_KEY e CONSUMER_SECRET.


#! /usr/bin/env python

import tweepy

CONSUMER_KEY = 'WrRgWsz4rVQVSDWESm00yA'
CONSUMER_SECRET = 'K71zFpbRml0F5wmz0o3gXU6QT3FzPYkFj4rBalaoXgM'

auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth_url = auth.get_authorization_url()
print 'Please authorize: ' + auth_url
verifier = raw_input('PIN: ').strip()
auth.get_access_token(verifier)
print "ACCESS_KEY = '%s'" % auth.access_token.key
print "ACCESS_SECRET = '%s'" % auth.access_token.secret

Agora rode a aplicação para receber as outras duas chaves de requisição e confirmação de autoridade do twitter.

./twitter.py

O que veremos a seguir é o pedido do PIN, número de identificação da sua aplicação para gerar as chaves de acesso a conta do twitter pela API:

Na linha “Please authorize:” copie e cole a URL em seu navegador web para autorizar e obter o número PIN.

Click em Allow para receber o tão esperado PIN.

Agora volte ao terminal ou konsole e insira o número PIN.

Ao pressionar tecla [ENTER], você receberá duas chaves ACCESS_KEY e ACCESS_SECRET para utilizar na aplicação Twitter-Server.

Agora basta editar o arquivo twitter-server.py e inserir as quatro chaves (CONSUMER_KEY, CONSUMER_SECRET, ACCESS_KEY e ACCESS_SECRET).


#! /usr/bin/env python

import sys
import tweepy

CONSUMER_KEY = 'WrRgWsz4rVQVSDWESm00yA'
CONSUMER_SECRET = 'K71zFpbRml0F5wmz0o3gXU6QT3FzPYkFj4rBalaoXgM'
ACCESS_KEY = '107313909-Du1jG6ZxNEjy4yMk5bdgYzPxugFcKFeNsf4Qpl6o'
ACCESS_SECRET = 'sM0fgcaTmisQq2GNd00UZsBmOmsWs89OtewMt6rFmBw'

auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_KEY, ACCESS_SECRET)
api = tweepy.API(auth)
api.update_status(sys.argv[1])

Agora é Só Testar. Lembre-se que para envio de SMS com as informações do servidor vamos utilizar as DIRECT MESSAGE (DM) mensagem privativas direcionadas somente as pessoas que queremos.


./twitter-server.py 'D @nl_fx Olá eu sou o servidor | e meu status está OK!'

Agora basta colocar está linha em seu script de monitoramento do sistema e irá receber as mensagens por SMS em teu celular.

Uma dica muito legal é criar um conta para cada administrador do sistema e gerar uma malha de seguidores, podendo assim enviar mensagens diretas e faze-los receber este informativo via celular.

O único inconveniente é que somente 140 caracteres podem ser expresso na mensagem informativa e somente um celular pode ser habilitado na conta do twitter.

Mas sabemos que um simples aviso de problema, pode representar uma grande tomada de decisão para manter o sistema intacto e operante.