O Spring Boot Atuator fornece gerenciamento de dependência e configuração automática para o micrômetro, que oferece uma fachada conveniente em relação a muitos sistemas de monitoramento diferentes. Um deles é o Opentelemetria.
Os desenvolvedores de inicialização da primavera podem permitir que seus aplicativos exportem métricas por meio do protocolo OTLP para um back -end de OpenElemetria adicionando o atuador de inicialização da mola e a dependência dedicada do Opentelemetria do micrômetro para seus projetos.
dependencies {
implementation ' org.springframework.boot:spring-boot-starter-actuator '
runtimeOnly ' io.micrometer:micrometer-registry-otlp '
.. .
}
O exportador fornecido pelo OTLP do Registro de Micrômetro é um exportador HTTP e pode ser configurado por meio de propriedades, graças à configuração automática da OpenElemetria.
management :
otlp :
metrics :
export :
url : http://localhost:4318/v1/metrics
step : 5s
O OpenTelemetria suporta pares de chave/valor adicionais (chamados de resource attributes
) a serem incluídos nos dados de telemetria. O Spring Boot Atuator fornece uma configuração automática para eles e permite adicionar novos atributos de recursos por meio de propriedades.
management :
opentelemetry :
resource-attributes :
cluster : local
" service.name " : ${spring.application.name}
Fiz um aplicativo de demonstração para mostrar essa configuração.
O módulo OTLP do Registro de Micrômetro usa um cliente HTTP compatível com OTLP para exportar métricas para um back-end de OpenElemetria. Internamente, o OtlpMeterRegistry
usa um objeto HttpSender
privado para configurar o cliente HTTP. O benefício dessa abordagem é que o módulo é leve e não precisa de nenhuma dependência do SDK Opentelemetria. Ele usa apenas a biblioteca io.opentelemetry.proto
, que fornece a configuração do Protobuf para o OpenElemetria.
Por outro lado, essa abordagem significa que:
O novo OpenTelemetryAutoConfiguration
Genérico de Autoconfiguração na Botagem de Primavera 3.2 Autoconfiguras Um Bean OpenTelemetry
e possibilita a configuração de um Bean SdkMeterProvider
. E se o micrômetro pudesse usá -lo para configurar o exportador de métricas de OpenElemetria?
Possíveis soluções:
MeterRegistry
que aceita um objeto OpenTelemetry
para configuração (semelhante à OpenTelemetryMeterRegistry
usada pela biblioteca de instrumentação Java Opentelemetria). Se for necessária compatibilidade com versões anteriores, a nova implementação precisaria coexistir com a existente (talvez um sinalizador de recursos possa alternar entre os dois?); Eu enviei um problema ao projeto Micômetro e compartilhei essas sugestões. Construir (ou atualizar) esse módulo possibilitaria reutilizar a mesma OpenTelemetryAutoConfiguration
introduzida no Spring Boot 3.2 para métricas e traços (e, no futuro, também para logs).
SdkMeterProvider
e, em geral, para usar métricas com o Opentelemetria. Mas estamos perdendo o suporte ao micrômetro antes que isso seja factível.OtlpHttpMetricExporter
ou OtlpGrpcMetricExporter
).Para obter mais contexto sobre os desafios atuais, consulte este problema no projeto de inicialização da primavera.
O Spring Boot Atuator fornece gerenciamento de dependência e configuração automática para rastreamento de micrômetros, que oferece uma fachada conveniente em alguns back -ends de rastreamento distribuídos diferentes. Um deles é o Opentelemetria.
Os desenvolvedores de botas de primavera podem permitir que seus aplicativos exportem traços por meio do protocolo OTLP para um back -end de Opentelemetria adicionando o atuador de inicialização da mola, o rastreamento do micrômetro e a dependência dedicada do Opentelemetria do micrômetro para seus projetos.
dependencies {
implementation ' org.springframework.boot:spring-boot-starter-actuator '
implementation ' io.micrometer:micrometer-tracing-bridge-otel '
implementation ' io.opentelemetry:opentelemetry-exporter-otlp '
.. .
}
O exportador fornecido pelo Autoconfiguration do Atuador de inicialização é um exportador HTTP (um bean OtlpHttpSpanExporter
) e pode ser configurado por meio de propriedades graças à configuração de rastreamento na OtlpAutoConfiguration
.
management :
otlp :
tracing :
endpoint : http://localhost:4318/v1/traces
O OpenTelemetria suporta pares de chave/valor adicionais (chamados de resource attributes
) a serem incluídos nos dados de telemetria. O Spring Boot Atuator fornece uma configuração automática para eles e permite adicionar novos atributos de recursos por meio de propriedades. O atributo de recurso de nome service.name
Opentelemetria padrão é configurado automaticamente para o valor de spring.application.name
(se definido) ou então para um valor application
padrão.
management :
opentelemetry :
resource-attributes :
cluster : local
Fiz um aplicativo de demonstração para mostrar essa configuração.
Nesta edição, no projeto de inicialização da primavera, foi adicionado uma configuração automática para um feijão OtlpHttpSpanExporter
para exportar rastreios via HTTP.
Um requisito comum é exportar traços via GRPC (a abordagem mais usada na Opentelemetria). Atualmente, os desenvolvedores podem configurar um feijão OtlpGrpcSpanExporter
sozinho. Seria bom se o atuador de inicialização da primavera fornecesse uma configuração automática para isso, aprimorando a OtlpAutoConfiguration
.
Já existe um problema no projeto de inicialização da primavera para adicionar essa configuração automática.
No geral, esses são os problemas e sugestões que tenho descrito até agora.
Micrômetro
MeterRegistry
construída sobre o OpenElemetria e configurável por meio de suas abordagens padrão, para que seja possível compartilhar a configuração entre métricas e traços.Atuador de inicialização da primavera
OpenTelemetry
e os grãos Resource
podem ser reutilizados a partir da configuração existente do OpenElemetria. Além disso, a configuração automática deve definir padrões para SdkMeterProvider
, OtlpHttpMetricExporter
e OtlpGrpcMetricExporter
.OtlpGrpcSpanExporter
.Spring Initializr
Atuador de inicialização da primavera
OpenTelemetry
e os grãos Resource
podem ser reutilizados a partir da configuração existente do OpenElemetria. Além disso, a configuração automática deve definir padrões para SdkLoggerProvider
, OtlpHttpLogRecordExporter
e OtlpGrpcLogRecordExporter
.OpenTelemetryAutoConfiguration
(esse problema pode ser considerado para o OpenTelemetryAutoConfiguration
global, afiguração depois que o rastreamento específico é excluído).