As falhas não são exatamente as mesmas • "Debbuging" em serviços com múltiplos usos é difícil • Monitoramento ("tradicional") não é o suficiente para ajudar
• Qual o acoplamento com serviços fora do domínio? • Os serviços são resilientes o suficiente quando uma dependência/acoplamento está falhando? • Quais são as versões do serviço? https://logz.io/blog/distributed-tracing-dapper-jaeger/
que você pode explicar o que está acontecendo por dentro apenas observando do lado de fora. https://www.honeycomb.io/blog/best-practices-for-observability/
é observabilidade. • Instrumentação de código é como pegamos dados de telemetria • Dados de telemetria pode incluir traces, logs e/ou métricas Todos são diferentes visões de uma mesma verdade
agregadas. • Logs ◦ Informações detalhadas depuradas emitidas por processos. • Distributed Tracing ◦ Fornece insights de todo ciclo de vida, rastreando (traces) as requisições de um sistema, possibilitando encontrar pontos de falha e problemas de performance. Dados estruturados podem ser transmutados por qualquer destes!
% de uso de CPU) • Contadores acumulativos ◦ Soma cumulativa dos dados desde o processo de início (ex: contador de requests) • Historigrama Cumulativo ◦ Contadores agrupados para um conjunto de dados (ex: 0-10ms, 11-20ms) • Rates (taxas) ◦ A derivação de um contador (ex: requests por segundo) • Agregação por tags ◦ Dados que podem ser agrupados por tags compartilhadas (ex: hostname, nome do cluster)
de um sistema. ◦ Ela encapsula: nome da operação, o intervalo de início e fim (timestamp), o identificador do span pai/mãe, a identificação do span e os itens do contexto. • Trace ◦ Ele é definido implicitamente por seus spans. Um trace pode ser pensado como um grafo de spans sem ciclo onde os limites entre os spans são definidos como um relacionamento pais e filhos. • DistributedContext ◦ Contém o tracing identificado, tags e opções que são propagadas dos span pai para os filhos.
base no contexto. • Um evento contém a informação do período adicionada na informação adicionada para um span. ◦ Contém: ▪ nome do evento ▪ um ou mais atributos do evento ▪ período do evento
ferramentas de tracing para acompanhar, analisar e depurar transações através de múltiplos componentes de software. https://www.w3.org/TR/trace-context/
APIS e instrumentação para o distributed tracing. • OpenCensus: ◦ Fornece APIs e instrumentação que permite coletar as métricas das aplicações e distributed tracing. • OpenTelemetry: ◦ Um esforço para combinar o distributed tracing, métricas e logging num único conjunto de componentes de sistema e bibliotecas específicas para linguagens de programção.
of the specified span. • with tracer.start_as_current_span(name) ◦ Starts a new span, sets it to be active. Optionally, can get a reference to the span. • tracer.get_current_span() ◦ Used to access & add information to the current span OTel API (Python) - Tracer methods https://opentelemetry.io/
what is currently happening. • span.set_attribute(key, value) ◦ Adds an attribute to the current span. This may include a user id, a build id, a user-agent, etc. • span.end() ◦ Manually closes a span. OTel API (Python) - Span methods https://opentelemetry.io/
As falhas não são exatamente as mesmas • "Debbuging" em serviços com múltiplos usos é difícil • Monitoramento ("tradicional") não é o suficiente para ajudar