Observabilidade no Quarkus
A observabilidade pode ser definida como a capacidade de permitir que um ser humano faça e responda perguntas sobre um sistema.
Ao longo do tempo, muitas extensões foram desenvolvidas para fornecer recursos de observabilidade aos aplicativos Quarkus. Este guia fornecerá uma visão geral das extensões de observabilidade disponíveis no Quarkus e que podem ser usadas para fornecer observabilidade de acordo com as necessidades do seu aplicativo Quarkus.
Telemetria
A telemetria contém dados sobre o estado interno do sistema e pode ser dividida em categorias ou sinais :
-
Logging , logs clássicos locais ou centralizados
-
Métricas , métricas calculadas em cada instância do aplicativo Quarkus
-
Rastreamento , rastreamento distribuído entre aplicativos
-
Criação de perfil , para analisar e monitorar o desempenho do aplicativo, o uso de recursos e o comportamento do tempo de execução
-
Eventos , o sinal mais genérico. É uma representação de algo significativo que acontece durante a execução de um programa.
Diretrizes
Há apenas uma diretriz importante na observabilidade do Quarkus:
-
O protocolo OpenTelemetry OTLP é a maneira recomendada de enviar telemetria de um aplicativo Quarkus. Isso fornece uma saída unificada para a telemetria do aplicativo.
Visão geral
Algumas extensões têm funcionalidade sobreposta e há extensões recomendadas para cada tipo de sinal.
A tabela a seguir apresenta uma visão geral das extensões de observabilidade disponíveis no Quarkus, os sinais que elas fornecem e qual é a extensão recomendada para cada sinal.
| Extensão | Logging | Métricas | Rastreamento | Criação de perfil | Verificação de saúde | Eventos |
|---|---|---|---|---|---|---|
O, R |
O, R |
R |
X |
|||
R |
||||||
X |
R |
R |
X |
|||
R |
X |
|||||
X |
||||||
X |
||||||
D |
-
R - recomendado
-
X - suporta
-
D - obsoleto
-
O - desligado por padrão
Os sinais
Logs e eventos
Podemos dizer que uma linha de log é um tipo de evento que inclui uma classificação de gravidade. O projeto OpenTelemetry reconhece essa abordagem, resultando em uma API OpenTelemetry para logs e eventos que é praticamente a mesma.
Log é um conceito muito mais antigo e ainda é amplamente usado no setor, por isso a tabela de visão geral acima tem colunas diferentes para logs e eventos.
No futuro, veremos uma convergência desses dois conceitos, à medida que as pessoas começarem a adotar o OpenTelemetry Logs.
Extensões de Quarkus logging
O Quarkus usa o backend de logs do JBoss Log Manager para publicar logs de aplicativos e frameworks no console ou em arquivos. Esses logs também podem ser encaminhados para um sistema de log centralizado, usando a extensão legada quarkus-logging-gelf ou a extensão recomendada quarkus-opentelemetry ou quarkus-micrometer-opentelemetry recomendada.
Os logs do OpenTelemetry são desativados por padrão na extensão quarkus-opentelemetry , mas ativados por padrão na extensão quarkus-micrometer-opentelemetry .
Outros eventos
Não há uma maneira recomendada de gerar eventos de observabilidade no Quarkus porque a API OpenTelemetry Events ainda está em desenvolvimento e seu uso ainda não é recomendado.
A extensão quarkus-jfr pode gerar eventos relacionados à observabilidade.
Métricas
Quarkus has been using Micrometer to collect metrics from the application for a long time. Almost all the out-of-the-box metrics instrumentation in Quarkus are implemented with the Micrometer extension.
Mais recentemente, o OpenTelemetry Metrics ficou disponível na extensão quarkus-opentelemetry mas está desativada por padrão porque as convenções semânticas de métricas ainda não são estáveis.
A solução é usar a extensão quarkus-micrometer-opentelemetry para permitir o uso de métricas do Micrometer e logs e rastreamento do OpenTelemetry ao mesmo tempo com uma saída unificada usando o protocolo OTLP. As métricas manuais do OpenTelemetry também podem ser criadas com essa extensão e todos os sinais são ativados por padrão, por conveniência.
Rastreamento
O Quarkus usa o OpenTelemetry Tracing para fornecer recursos de rastreamento ao aplicativo. A extensão quarkus-opentelemetry e as extensões quarkus-micrometer-opentelemetry são a maneira recomendada de usar o rastreamento.
Criação de perfil
O Quarkus usa o Java Flight Recorder (JFR) para fornecer recursos de criação de perfil ao aplicativo. A extensão quarkus-jfr é a maneira recomendada de gerar os eventos necessários para criar o perfil do aplicativo.
O sinal de perfil OpenTelemetry, ainda em desenvolvimento, poderá estar disponível no futuro.
Ver telemetria
A extensão Grafana LGTM Dev Service está disponível para visualizar os dados de telemetria para logs, métricas e rastreamentos no Grafana.