Lá está você contando os dollar quando um cliente avisa que seu site está fora do ar …

Além de ter que correr atrás para saber o porquê do bendito do site estar fora do ar, ainda passa aquela leve vergonha na frente do cliente pois nem sabia do problema ainda.

Existem dezenas, se não centenas de formas de monitorar seu site, algumas são free e muitas vezes não prestam, outras são caras ou muito complexas de se implementar...e você só quer saber se o site está ou não no ar.

Hoje em dia uma grande parte dos negócios optam por se hospedar em alguma cloud, e como já vimos a AWS ainda é a grande dominante nesse setor, inclusive sendo a opção atual de grande parte de nossos clientes. Tendo isso em mente, decidimos ensinar um passo a passo de como monitorar seu site de graça usando a AWS.

O que vamos precisar?


Se você já utiliza a AWS para hospedar seu negócio, então você já tem acesso à tudo que iremos utilizar. Se ainda não tem em que caverna você anda se escondendo? é simples criar uma, e lembrando, não irá ter custos.

Iremos usar 2 soluções da AWS, o Lambda e o CloudWatch:

  • AWS Lambda: é uma forma de executar código sem provisionar servidores, é altamente escalável, e o mais importante nesse momento, o free-tier nos dá 1 milhão de execuções por mês gratuitamente.
  • AWS Cloudwatch: o cloudwatch é uma plataforma para coletar dados, gerar eventos, analisar métricas, disparar alarmes, entre outras funcionalidades.

Sabendo o que vamos utilizar, BORA pro passo-a-passo.

PARTE 1: O código


Nós disponibilizamos o código-fonte que usaremos na lambda no nosso super github, você pode fazer de duas formas:

O código é dividido em 3 partes:

  • Handler: o ponto de entrada para a execução do código no AWS Lambda
  • Ping: faz a requisição ao site definido
  • Send Metrics: envia o evento para o AWS CloudWatch

Parte 2: Subindo o código no AWS Lambda


Agora vamos subir o .zip que você criou/baixou no console da AWS. Após logar vá em Services > Compute > Lambda abrindo a tela principal do AWS Lambda.

Prossiga clicando em Create Function, então a tela de criacão de um Lambda irá aparecer, agora siga os passos abaixo:

  • Selecione “Author from scratch”:

  • Preencha o nome da função,
  • Selecione a versão do Node a ser utilizado: v8.10
  • Crie uma nova role a partir dos templates e nomeie esta nova role
  • Deixe o campo Policy Templates inalterado

Clique em Create Function para prosseguir.

Por hora não é necessário selecionar nenhuma trigger para a Lambda, então vamos direto para a parte de fazer upload do nosso código.

Na seção Function Code selecione a opção Upload a .zip file e faça o upload do arquivo zip que você tem em mãos:

Nas outras seções você tem opções avançadas que podem variar de acordo com suas configurações de infra e opções relacionadas a execução da lambda, se não tem certeza do que configurar pode deixar essas opções inalteradas que provavelmente vai ficar tudo bem.

Clique no botão Save que se encontra no inicio da página.

Bora testar essa funcão ?

Para testar você precisa criar um evento de teste, então clica no dropdown Select a test event > Configure Test Events:

Irá aparecer uma tela esquisita de configuração de eventos de teste, vamos criar um de exemplo:

No exemplo acima temos 3 propriedades definidas:

  1. url: o endereço do site que será testado\
  2. metricNamespace: o namespace que irá aparecer nas métricas do CloudWatch, aqui deixamos com o mesmo nome do Lambda para ficar facil de agrupar e identificar este tipo de evento
  3. metricName: o nome da métrica que ficará gravado, colocamos uma referência fácil de identificar o site

Como eu sou super legal, vou deixar aqui o JSON para vocês copiarem e colarem utilizarem:

{
  "url": "https://boomers.com.br",
  "metricNamespace": "aws-lambda-website-availability-checker",
  "metricName": "boomers-site"
}

Agora é só apertar Test e tanaaan:

Pronto, agora sabemos que essa bagaça função funciona.

Pode respirar aliviado, o mais dificil passou (ou não), agora é só configurar a trigger e o alarme.

Parte 3: Configurando a trigger


Agora vamos lá no CloudWatch configurar a trigger que vai executar essa lambda de tantos em tantos minutos.

Vai lá em Services > Management & Governance > CloudWatch e selecione a opcão Events no menu lateral. Vamos criar nosso evento conforme a tela abaixo:

  • Selecione o tipo de evento: Schedule
  • Defina a frequência com o qual o evento será disparado
  • No dropdown Targets, selecione Lambda Function
  • Irá aparecer um dropdown com suas funções disponíveis, selecione a que acabamos de criar
  • Em Configure Input selecione a opcão Constant e insira o JSON no mesmo formato que utilizamos para testar a função
    • Prossiga clicando em Configure Details
  • Na segunda tela defina um nome e uma descricao para seu evento, selecione o checkbox State para ativar o disparo dos eventos assim que for criado
  • Finalize clicando em Create Rule

Parte 4: Criando o alarme


Ainda no dashboard do CloudWatch selecione Alarms > Create Alarm, na tela de criação de alarme clique em Select Metric e selecione a métrica que configuramos em nossa função:

  • Selecione o namespace da métrica e logo em seguida selecione Disponibilidade
  • Selecione o nome da métrica que iremos utilizar nesse alarme e em seguida na aba Graphed Metrics verifique se as configuracoes estão como a seguir

Para prosseguir clique em Select Metric e essa tela fechará, agora configuraramos a condição na qual o alarme será disparado:

Isso significa que caso alguma das métricas para o boomers-site tiver o valor menor que 100, irá disparar o alarme

E por fim, a lista dos felizardos que receberão essa notificação às 4 da manhã.

PRONTO!

É claro que não podíamos deixar de mostrar o que vai acontecer caso o alarme seja disparado porque somos muito radicais

É isso, alguns passinhos para configurar algo que pode te salvar muitos dinheiros.

Não esqueça de seguir a Boomers no Instagram para saber sempre que houver conteúdo novo e ver uns memes