Observabilidade Moderna
com OpenTelemetry

Vinícius Campitelli

Sobre

Sobre

Vinícius Campitelli
Vinícius
Campitelli
  • Bacharel em Ciência da Computação pela UFSCar
  • Desenvolvedor há 20 anos
  • Membro do PHPSP
  • Entusiasta em cibersegurança
  • Consultor de TI e instrutor de treinamentos

Slides

Observabilidade

Observabilidade

O que é?

A capacidade de entender como um sistema está funcionando, para poder resolver a raiz dos problemas ou encontrar oportunidades de melhora, utilizando dados de análises de desempenho
O que é observabilidade? - IBM

Observabilidade

O que não é?

Uma forma mágica de resolver problemas, sem precisar saber como o sistema funciona

Observabilidade

E qual a diferença para Monitoramento?

O monitoramento usa conjuntos predefinidos de métricas e logs para rastrear erros e padrões de uso, (...) ajuda a responder a perguntas simples sobre utilização do servidor, tempos de resposta e taxa de transferência
O que é a observabilidade? - Elastic

Pilares da Observabilidade

Logs

Registros imutáveis de eventos que ocorrem na aplicação

Métricas

Uma certa medida de um serviço capturado em tempo de execução

Traces

Rastreamento de uma requisição dentro de (ou entre) sistemas

OpenTelemetry

OpenTelemetry

O OpenTelemetry é uma coleção de APIs, SDKs e ferramentas. Use-o para instrumentar, gerar, coletar e exportar dados de telemetria (métricas, logs e rastros) para ajudar você a analisar o desempenho e o comportamento do seu software.
OpenTelemetry

OpenTelemetry

OpenTelemetry OpenTelemetry

Conceitos de OpenTelemetry

Sinal

Entidades utilizadas pelo protocolo: logs, métricas, traces e baggage

Baggage

Armazenamento chave-valor utilizado no contexto para propagar dados

Contexto

Objeto que contém as informações necessárias para que os serviços relacionem sinais entre si

Propagação

Mecanismo que move o contexto entre processos ou serviços

Conceitos - OpenTelemetry

Conceitos de OpenTelemetry

Collector

Ferramenta que recebe, processa e exporta telemetria para os Backends

Backend

Solução de mercado que recebe os sinais do Collector, como Prometheus, Jaeger, Grafana...

OTLP (OpenTelemetry Protocol)

Protocolo usado para comunicação entre sua aplicação, o Collector e os Backends

Instrumentação

Configurações e bibliotecas para que um sistema emita sinais para o Collector

Conceitos - OpenTelemetry

Instrumentação

Manual

Através da invocação manual dos métodos do SDK para cada sinal que deseja emitir, permitindo maior controle sobre os atributos e contextos de cada um

Auto-instrumentação

Com a extensão opentelemetry instalada, é possível utilizar bibliotecas de auto-instrumentação que "interceptam" chamadas de diversos frameworks e pacotes para emitir automaticamente sinais

Zero-code instrumentation - OpenTelemetry

Arquitetura

Collector Collector - OpenTelemetry

Componentes dos Traces

Span

Uma "unidade de trabalho" individual que representa um fluxo no trace

Exemplo: em uma mesma requisição, podemos ter um span para o processamento "principal", um para cada chamada ao banco de dados e um para cada invocação de serviços externos

Traces - OpenTelemetry

Atributos

Propriedades de um span, que podem seguir convenções ou específicos de sua aplicação

Exemplos: URL da requisição, nome do usuário logado, browser do usuário, query sendo executada, hostname do servidor

General attributes - OpenTelemetry

Tipos de Métricas

Counter

Um valor que só aumenta ao longo do tempo

Exemplo: quantidade de pedidos feitos

UpDownCounter

Um valor que aumenta ou diminui com o tempo

Exemplo: quantidade de itens na fila

Gauge

Representa um valor em um determinado tempo

Exemplo: uso de memória RAM do servidor

Histograma

Agregação de valores com estatísticas relevantes

Exemplo: tempo de resposta das requisições

Protocolo OTLP

Especifica a codificação, transporte e entrega dos dados utilizando Protocol Buffers para o payload, utilizando uma das duas camadas de transporte disponíveis:

HTTP

Protocolo tradicional que permite envio dos dados do Protobuf  via JSON ou representação binária

gRPC

Framework RPC que utiliza HTTP/2 para maior performance, mas que precisa da extensão grpc

OTLP Specification - OpenTelemetry

Mãos na massa

Mãos na massa

Referências

Referências

Treinamentos in company

Workshops
Gostou? Então conheça meus treinamentos corporativos e sob demanda sobre Desenvolvimento, Segurança da Informação, DevOps, Arquitetura de Sistemas e diversos outros assuntos em viniciuscampitelli.com

Obrigado!