AWS / CloudWatch — ETAPA 1 / Enviando logs de sua aplicação para o CloudWatch
Aprenda a enviar logs da sua aplicação para o CloudWatch da AWS e gerencie suas informações de forma eficiente

Ola Gente
Gerenciar log de aplicações pode parecer simples no começo, 10 mil arquivos de log por dia, depois vai crescendo e acumulando uma quantidade de informação enorme e se torna trabalhoso gerenciar tantas informações.
Para nos ajudar com isto existe o CloudWatch.
Em nosso projeto de teste teremos o seguinte cenário:
- Uma aplicação rodando em PHP com sistema de login
- Iremos querer monitorar os logins (Sucesso/Falhas)
- Iremos agrupar todas estas informações no CloudWatch
- Após isto criaremos métricas que irao nos mostrar, em forma de gráfico, a quantidade de sucessos/falhas por hora
- Iremos criar um alarme para caso a quantidade de falhas ultrapasse 30 falhas em 1 hora seja disparado um aviso para nó
- Iremos conectar os logs do CloudWatch com o serviço ElasticSearch para permitir consultar os logs
Neste primeiro tutorial iremos aprender como postar informações de log no CloudWatch.
Antes de começarmos precisamos criar um Grupo e um Fluxo, dentro deste Fluxo iremos inserir todos os logs deste site.
Exemplo:
Grupo: MeusSites
Fluxo: site1.com.br
1. Acesse o painel da AWS e entre em https://console.aws.amazon.com/cloudwatch/home?region=us-east-1#
2. Clique em “Logs”

3. Clique em “Create Log Group”
4. Preencha o nome do grupo como “TesteGrupo1” e confirme a ação

5. Clique no recém criado grupo

6. Clique em “Create Log Stream”
7. Preencha com o nome “TesteFluxo1” e confirme a ação

Temos o Grupo/Fluxo Pronto! Iremos criar um usuário (E credenciais) para permitir que seja enviados logs através de nossa aplicação.
Este usuário precisa possuir as duas permissões abaixo:
- CloudWatch Logs -> DescribeLogStreams
- CloudWatch Logs -> putLogEvents
1. Acesse https://console.aws.amazon.com/iam/home?region=us-east-1
2. Clique em “Users”
3. Clique em “Add User”
4. Preencha o nome “TesteUsuario1”
5. Selecione “Programmatic Access” (Isto ira gerar as credenciais de acesso a API)
6. Clique em “Next: Permissions”
7. Não altere as permissões neste momento, apenas clique em “Next: Review”
8. Clique em “Create User”
9. Clique em “Show” na coluna “Secret Access Key” e ANOTE o “Access Key ID” e o “Secret Access Key”

10. Clique em “Close”
11. Clique no Usuário recém criado
12. Clique em “Add Inline Policy”

13. Clique em “Json”

14. Preencha com o json abaixo, este json concede as duas permissões que iremos utilizar:
15. Clique em “Review Policy”
16. No campo “Name” preencha com “TesteUsuario1_Permissoes”
17. Clique em “Create Policy”
Ótimo, agora temos o usuário com permissão de enviar informações para o log.
Vamos para o PHP!
Aqui vou considerar que você já tem a SDK da AWS em sua aplicação, mas caso não tenha, inclua: https://github.com/aws/aws-sdk-php
Vamos entender como funciona o envio de logs para a AWS.
Os envios dos logs são feitos através do método putLogEvents, caso já tenha sido enviado algo, é necessário enviar o ID do último registro junto, para isto iremos utilizar o DescribeLogStreams
Primeiro iremos definir algumas variáveis com os dados:
Agora iremos iniciar o objeto responsável por acesso ao CloudWatch:
Esta próxima etapa é interessante, iremos consultar o FLUXO para checar o último ID gravado (Se tiver um ID gravado claro!)
E vamos a diversão, enviar informações ao log:
Note que todo json fica dentro da variável “logEvents -> message” e que a codificação é UTF-8!
PRONTO!
Segue script completo:
Veja em nosso cloudwatch:

No próximo tutorial iremos criar métricas com estes dados!
Por hoje é isto, queridos desenvolvedores! 👩💼
Até logo! 👋