Uma métrica é uma medição de um serviço capturada em tempo de execução. O momento de captura dessas medições é conhecido como evento de métrica, que consiste não apenas na medição em si, mas também no momento em que ela foi capturada e os metadados associados.
Métricas de aplicação e de requisição são indicadores importantes de disponibilidade e desempenho. Métricas personalizadas podem fornecer insights sobre como os indicadores de disponibilidade impactam a experiência do usuário ou o negócio. Os dados coletados podem ser usados para alertar sobre uma interrupção ou desencadear decisões de escalonamento para aumentar automaticamente uma implantação em caso de alta demanda.
Para entender como as métricas no OpenTelemetry funcionam, vamos analisar uma lista de componentes que farão parte da instrumentação do nosso código.
Um Meter Provider (às vezes chamado de MeterProvider
) é uma fábrica de
medidores
. Na maioria das aplicações, um meter provider é inicializado uma vez
e seu ciclo de vida corresponde ao ciclo de vida da aplicação. A inicialização
do meter provider também inclui a inicialização do resource e do exporter. Esse
é tipicamente o primeiro passo para metrificar com o OpenTelemetry. Em alguns
SDKs, um meter provider global já é inicializado para sua aplicação.
Um medidor cria instrumentos de métrica, que serão responsáveis por capturar dados e medir um serviço em tempo de execução. Métricas são criadas a partir de Meter Providers (Medidores).
Metric Exporters enviam dados de métricas para um consumidor. Esse consumidor pode ser a saída padrão para depuração durante o desenvolvimento, uma instância do OpenTelemetry Collector ou qualquer outro backend, seja de código aberto ou um fornecedor de sua escolha.
Com o OpenTelemetry, as medições são capturadas através de instrumentos de métrica. Um instrumento de métrica é definido por:
O nome, unidade e descrição podem ser escolhidos pelo desenvolvedor ou definidos através da convenção semântica no caso de métricas comuns, como por exemplo métricas de requisições e processos.
O tipo de instrumento deve ser um dos seguintes:
Para visualizar mais instrumentos síncronos, assíncronos, e entender qual dos tipos melhor se encaixa no seu caso de uso, veja Diretrizes Suplementares.
Além dos instrumentos de métrica, também é importante entendermos o conceito de agregações. Uma agregação é uma técnica pela qual um grande número de medições é combinado em estatísticas exatas ou estimadas sobre eventos de métricas que ocorreram durante uma janela de tempo. O protocolo OTLP transporta essas métricas agregadas. A API do OpenTelemetry fornece uma agregação padrão para cada instrumento de medição, que podem ser sobrescritas com o uso de Views. Por padrão, o projeto OpenTelemetry visa fornecer agregações que sejam suportadas por diferentes visualizadores e backends de telemetria.
Ao contrário dos rastros, que são destinados a capturar os ciclos de vida das requisições e fornecer o contexto para as partes individuais de uma requisição, as métricas são destinadas a fornecer informações estatísticas em forma de dados agregados. Alguns exemplos de caso de uso para as métricas incluem:
Uma view oferece aos usuários a flexibilidade de personalizar a emissão das métricas fornecidas pelo SDK. Você pode personalizar quais instrumentos de métrica devem ser processados ou ignorados. Você também pode customizar a agregação e quais atributos deseja reportar em suas métricas.
As métricas são sinais estáveis nas especificações do OpenTelemetry. Para uma implementação individual ou específica das Métricas através do SDK ou API, os status são os seguintes:
Language | Metrics |
---|---|
C++ | Stable |
C#/.NET | Stable |
Erlang/Elixir | Development |
Go | Stable |
Java | Stable |
JavaScript | Stable |
PHP | Stable |
Python | Stable |
Ruby | Development |
Rust | Alpha |
Swift | Development |
Para aprender mais sobre as métricas no OpenTelemetry, veja as especificações de métricas.
Was this page helpful?
Thank you. Your feedback is appreciated!
Please let us know how we can improve this page. Your feedback is appreciated!