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 desempenhoO que é observabilidade? - IBM
O que não é?
Uma forma mágica de resolver problemas, sem precisar saber como o sistema funciona
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ênciaO que é a observabilidade? - Elastic
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
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
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
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
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
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 - OpenTelemetryAtributos
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 - OpenTelemetryCounter
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
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
docker compose up -d na pasta demo
postman_collection.json no
Postman e execute
as requisições presentes na coleção