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

Introdução à Monitoramento e Observabilidade...

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.

Avatar for Ivan Santos

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