Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Introdução à Monitoramento e Observabilidade em aplicações modernas - RogaDX 2023

Introdução à Monitoramento e Observabilidade em aplicações modernas - RogaDX 2023

Uma introdução a sinais Observáveis utilizados em vários aspectos de desenvolvimento de software.

Ivan Santos

October 09, 2023
Tweet

More Decks by Ivan Santos

Other Decks in Technology

Transcript

  1. Introdução à Monitoramento e Observabilidade em aplicações modernas Ivan Santos

    Engineer @EverQuote https://ivansantos.me ROGA DX - Maceió-AL, Brasil 06-07/10/2023 #RDX23
  2. Ivan Santos Cajueiro-AL / Austin-TX USA Engineer @EverQuote - Platform

    Engineering Análise de Sistemas - CESMAC @pragmaticivan #RDX23
  3. • Algo importante 8 anos atrás • Relevante até hoje

    • Perda de Receita $$$$$ #RDX23 Monitoramento? Observabilidade?
  4. Agenda • Exemplos • Contraste entre Passado e Presente •

    Monitoramento? Observabilidade? • Principais Sinais em Observabilidade • OpenTelemetry • Tendências #RDX23
  5. Au que Mia - Seguros para Pets • 20,000 requisições

    de formulários por hora (Brasil) • 200 requisições por hora em Alagoas • R$500 por apólice de seguro (receita) • Geralmente a maioria das requisições acontecem entre 9am- 6pm #RDX23
  6. Tudo começou com um bug… • Sexta-feira, 5 horas da

    tarde, eu já me preparava pra sair depois de um dia cansativo e um deploy complicado feito por um time da empresa. Um usuário liga para o setor de atendimento para comunicar que não está conseguindo efetivar sua apólice de seguro para seus 2 cachorros. • Identificamos que o problema só acontece com usuários em Alagoas WTF!
  7. Tudo começou com um bug… • O problema persiste por

    uma hora e meia • Levamos 30 minutos para resolver o problema com um novo deployment • Em duas horas, esse problema em produção causou a perda de possível receita de R$200.000,00 WTF!
  8. Contexto é importante • Onde você mora • Comunidade da

    tecnologia utilizada • Organização da empresa • Ciclo de participação no desenvolvimento • Decisões feitas por pessoas que não fazem parte de um time no momento.
  9. A vida de uma plataforma com microsserviços • Kubernetes, Lambdas,

    ECS • SPAs • Multiplas linguagens • Pub/SUB • Networking • Containers
  10. Monitoramento O Monitoramento é o processo de recolha, análise e

    utilização de informações para acompanhar o progresso de um sistema. O monitoramento se concentra em observar métricas específicas.
  11. Observabilidade, definição científica Na teoria de controle, a observabilidade é

    uma medida de quão bem os estados internos de um sistema podem ser inferidos a partir do conhecimento de suas saídas externas.
  12. Observabilidade em Software Observabilidade é a capacidade de compreender o

    estado interno de um software analisando os dados que ele gera. ex: logs, métricas e tracing. Importante em ambientes multi-cloud
  13. Comparação Fatos e Conhecimentos que sabemos sobre um sistema x

    Testar teorias para investigar problemas enquanto eles acontecem Um sistema é observável se emitir dados úteis sobre o seu estado interno, o que é crucial para determinar a causa raiz.
  14. Métricas • Valores representados como medidas que podem ser calculadas

    ou agregadas ao longo de um período de tempo. • http.server.request.count - total • produto.compra.errors.count - compras sem sucesso produto.compra.errors.count{ deploy=”shop” app=”ecommerce” categoria=”eletronicos” }
  15. Métricas Para o minuto de 2:25-2:26 da tarde, em 06/09/2023,

    ocorreram quatro erros em formulários de transação no estado de Alagoas. sum(increase(formulario.errors.count{ estado=”AL” }[1m]) => 4
  16. Cardinalidade em Métricas Cardinalidade é o número de valores individuais

    de uma métrica formulario.errors.count{ estado=”AL”} formulario.errors.count{ estado=”PE”} formulario.errors.count{ estado=”RJ”} formulario.errors.count{ estado=”RJ” tempo=”1696542249”}
  17. RED (Request) Rate - número de requisições por segundo(tempo), seu

    serviço está servindo. (Request) Errors - número de requisições fom falhas por segundo (tempo). (Request) Duration - distribuições da quantidade de tempo que cada requisição leva.
  18. RED

  19. Logs Um log é um fluxo de entradas textuais que

    descrevem atividades em um sistema
  20. Traces (Rastreamento) Técnica de entender o que aconteceu durante uma

    transação distribuída É possível visualizar todos os serviços envolvidos para retornar um resultado. Amostragem de dados
  21. Correlação de Sinais /metrics data{ app=”website”} + {traceId=”123xyz”} /logs data{

    app=”website”} + {traceId=”123xyz”} /traces data{ app=”website”} + {traceId=”123xyz”}
  22. Correlação de Sinais Pagamentos Inventório /metrics compra.counter{ app=”pagamentos”} 1 @

    9:10am inventorio.counter{ app=”pagamentos”} 2 @ 9:10am k8s.container.memory{ app=”pagamentos”} 90% @ 9:10am k8s.container.cpu{ app=”pagamentos”} 20% @ 9:10am /logs log{ app=”pagamentos”, traceId=”123xyz”, message: “POST /compra” } @ 9:10am log{ app=”inventorio”, traceId=”123xyz”, message: “POST /inventorio” } @ 9:10am /traces trace{ app=”pagamentos” traceId=”123xyz”} @ @ 9:10am trace{ app=”inventorio” traceId=”123xyz”} @ @ 9:10am Container 1 Container 1 20/02/2023 9:10am (100ms) Container 2 Container 2
  23. OpenTelemetry.io • Coleção de APIs, SDKs, e ferramentas usadas para

    instrumentação, geração e coleta de sinais observáveis. • Oficialmente 10 linguagens de programação
  24. Alertas • Containers Reiniciando • Percentagem de Erros acima do

    normal (3%) • PING - Serviço está respondendo a requisições? • 90% uso de memória
  25. Referências: • Observability Engineering - Charity Majors, Liz Fong-Jones, George

    Miranda • https://github.com/cncf/tag-observability/blob/main/whitepaper.md