Logs e métricas com Amazon CloudWatch

Implantando Aplicações na AWS

Dunieski Otano

Amazon Web Services Solutions Architect

Caiu?

  • Um cliente diz que o app quebrou
  • Você não tem dados para confirmar ou negar
  • CloudWatch transforma suposições em respostas

Um painel de monitoramento com um ponto de interrogação, sem saber se o serviço está saudável ou fora do ar

Implantando Aplicações na AWS

Logging vs monitoring vs observability

Diagrama em três colunas distinguindo logging como registros imutáveis de eventos, monitoring como métricas com limites e alarmes, e observability como correlacionar dados para responder a novas perguntas

  • Logging: registrar eventos pontuais quando acontecem
  • Monitoring: acompanhar métricas conhecidas com limites
  • Observability: fazer novas perguntas aos seus dados
  • Você precisa dos três para operar com confiança
Implantando Aplicações na AWS

Log groups, log streams e retenção

  • Log group: contêiner nomeado para logs relacionados
  • Log stream: sequência de um único fonte
  • Retention: por quanto tempo os logs ficam guardados
  • Logs têm custo; defina retenção com cuidado

Hierarquia do CloudWatch Logs: log group contendo vários log streams, cada stream mostrando uma sequência de eventos ordenada por tempo, com configuração de período de retenção e indicação de custo

Implantando Aplicações na AWS

Métricas e métricas personalizadas

  • Metrics: dados numéricos em séries temporais
  • A AWS publica muitas métricas de serviço automaticamente
  • Custom metrics: números que seu app emite
  • Dimensões segmentam uma métrica por atributo

Métricas do CloudWatch: métricas de serviços da AWS publicadas automaticamente à esquerda, métrica personalizada com dimensões à direita e um gráfico de série temporal com linha de limite para alarme

Implantando Aplicações na AWS

O formato de métrica embutida

Uma única linha de log estruturada carrega seus valores de métrica mais um bloco _aws que informa ao CloudWatch quais campos são métricas:

{
  "_aws": {
    "CloudWatchMetrics": [
      {
        "Namespace": "OrdersApp",
        "Dimensions": [["customerTier"]],
        "Metrics": [{ "Name": "OrderLatencyMs", "Unit": "Milliseconds" }]
      }
    ]
  },
  "customerTier": "premium",
  "OrderLatencyMs": 142
}
Implantando Aplicações na AWS

Dashboards e alarmes

Painel do CloudWatch à esquerda e máquina de estados do alarme com estados OK, ALARM e INSUFFICIENT_DATA à direita, com SNS roteando notificações para e-mail e automação

  • Dashboard: uma tela com gráficos e widgets
  • Alarm: dispara quando uma métrica passa do limite
  • Alarmes vão para SNS e então e-mail, SMS ou automação
  • Alarme sobre sintomas que o usuário sente, não cada métrica
Implantando Aplicações na AWS

Uma estratégia de logging estruturado

  • Faça logs em JSON, não texto livre
  • Inclua timestamp, level, request ID, user ID
  • Campos estruturados permitem filtrar e consultar
  • Consistência entre serviços permite correlação

Linha de log JSON estruturada com timestamp, level, requestId e userId, e uma consulta do Logs Insights mostrando como campos nomeados permitem filtragem e agregação precisas

Implantando Aplicações na AWS

Vamos praticar!

Implantando Aplicações na AWS

Preparing Video For Download...