Monitoramento 24×7 gratuito com Google Spreadsheets e Javascript

Dilbert_cloud

Recentemente vi um post do Felippe Nardi mostrando como ele automatizou os e-mails de entrega de um cliente se integrando aos Correios, fiquei bem animado para tentar construir outras coisas úteis usando Google Spreadsheets e Javascript.

Construí uma planilha bem simples na qual colocamos uma lista de sites a serem monitorados e um e-mail de notificação para cada um deles, para que seja enviado um e-mail em caso de indisponibilidade. Ela está disponível publicamente aqui. Salve uma cópia para começar os seus testes 🙂

Monitoramento 24x7

Para ver as funções existentes na planilha e criar novas, clique em Ferramentas -> Editor de Scripts.

Definiremos 2 funções para fazer o monitoramento: uma que faz uma requisição HTTP na URL que configuramos e checa se veio um status HTTP de sucesso na resposta, e a outra simplesmente processa as células da tabela para obter os dados necessários. Todo o código pode ser visto a seguir.

Um pequeno resumo sobre o que criamos:

  • Função pingSite, que consulta a URL do site em questão e confere se foi um status de sucesso.Há um tratamento de erros, lidando especialmente com erros de DNS, que ocorrem se você colocar um nome de servidor que não existe
  • Iteramos sobre as linhas da planilha e para cada uma usamos a função pingSite para checar se o site está disponível
  • Caso o site não esteja disponível, usamos a API de e-mail para enviar um e-mail ao endereço configurado, avisando da indisponibilidade. O script te pedirá autorização para enviar e-mails através da sua conta Google na primeira vez que for executado (conforme a seguir).

oauth_envio_email

Com isso já conseguimos que a função checkAllSites execute os testes sobre todos os sites que configurarmos. A cereja do bolo vai ser a execução automática desta função pelo Google, na frequência que desejarmos. Para isso, dentro do Editor de Script, clique em Recursos ->Acionadores do Projeto atual (ou Resources -> Current project’s triggers) e crie o agendamento conforme abaixo.

agendamento_execucao_script

Pronto! Temos agora uma ferramenta de monitoramento bem confiável e simples, sem nenhum custo adicional e nenhuma preocupação com a infraestrutura. Agora você nunca mais vai precisar do Pingdom ou ferramenta parecida 🙂

Uma coisa legal dos scripts do Google é que ganhamos acesso a diversas APIs interessantes, e todo o trabalho é feito com Javascript, de uma forma bem simples de estender e customizar. Já tenho algumas idéias de novos scripts, como:

  • Ferramenta que varre um portal até X níveis de profundidade e procura por links ou imagens quebradas
  • Extensão deste script de monitoramento para colocar o envio de SMS
  • Controle de pessoas inscritas em cursos, gerenciando confirmações de pagamento e inscrição e também gerenciando o Google Calendar do curso.
  • Usar o Google Forms para abertura de pedidos/chamados e criar um novo documento em pasta no Drive para cada chamado, como uma inbox de atendimento. Todos os atendentes serão avisados a cada novo documento

Esta lista é uma pequena amostra de possibilidades que temos com Google Docs + Javascript usando as APIs do Google. Se você tiver idéias legais, não deixe de compartilhar e vamos tentar implementar todas 🙂

Até a próxima pessoal!

  • Felippe Nardi

    Bela aplicação do Google App Script! Só o fato de poder fazer o ping a cada 1 minuto e poder por quantos sites quiser, já exponencializa o valor de fazer o monitoramento do site pelo Google Spreadsheet 🙂

    Uma coisa que eu fiz também foi usar o Google Spreadsheet para monitorar sites que não possuem RSS e avisar postar no twitter quando eles forem atualizados. A única coisa que eu não consegui foi monitorar sites que precisam de login… ainda não encontrei uma solução para isso, mas seria incrível!

  • blpsilva

    Oi Felippe, obrigado! Realmente tem muitas idéias interessantes e eu me diverti criando esse 🙂 Isso do login realmente tem que pensar o que poderia ser feito, não é tão simples. Com a API de HTTP do Google, construindo uma API complementar em qualquer outra linguagem os poderes aumentam muito, fica bem interessante. A próxima que devo implementar é a que varre o portal procurando por imagens e links quebrados, pois isso sempre acaba passando batido em grandes portais. Bom, agradeço pela sua postagem inicial, pois trouxe várias idéias legais hehe

  • aldrinleal
    • blpsilva

      Oi Aldrin, bela observação! Claro que é necessário ter bom senso e não exagerar no que você vai fazer de monitoramento. Isto pode ocorrer com qualquer ferramenta na verdade, e o post na verdade dá um exemplo do que é possível.

      A URL em questão pode ser trocada para qualquer coisa que indique um status de sucesso no site, até mesmo o download de um arquivo de poucos bytes. A frequência também pode ser configurada como desejado, então cada um tem a liberdade de usar da forma que for mais adequada.

      Porém, vale mesmo o alerta para não exagerar no que o monitoramento vai fazer, para não gerar tráfego exagerado e nem despesas 🙂

      • aldrinleal

        Sim. O S3 é um caso extremo, mas basicamente qualquer endereço que você colocar vai gerar um Mini DoS 🙂

        (Hm… isso deve servir pra manter Dynamos do Heroku ‘aquecidos’)

        • blpsilva

          Pois é, li o post e vi o quanto é trivial construir uma ferramenta de DDoS com planilhas do Google! Bizarro.. a gente aqui pensando só em coisas produtivas, e logo aparece uma feature do mal! =/

  • Everton Tavares

    Rapaz que legal!! Eu não conhecia essa funcionalidade do Google Docs. Parabens pela idéia de usar os scripts para automatizar suas tarefas

    • blpsilva

      Oi Everton, é bem legal e fácil mesmo né? 🙂 Obrigado!

  • willian

    Uma pergunta: este script só funciona com ele aberto ou fechado ele também funcionaria?

    • Bruno Pereira

      Oi Willian, funciona direto, não precisa estar com o arquivo aberto não 🙂

  • jhonny Pereira

    Bom eu gostaria de poder monitorar esse link “http://187.84.194.42:8000/asunalvorada.ogg” Alguem sabe como eu faço ?

21