Привод Spring Boot обеспечивает управление зависимостями и автоконфигурацию для микрометра, который предлагает удобный фасад для многих различных систем мониторинга. Одним из них является Opentelemetry.
Разработчики Spring Boot могут позволить своим приложениям для экспортных метрик через протокол OTLP в бэкэнд Opentelemetry, добавив привод Spring Boot и выделенную зависимость Openelemetry от микрометра до своих проектов.
dependencies {
implementation ' org.springframework.boot:spring-boot-starter-actuator '
runtimeOnly ' io.micrometer:micrometer-registry-otlp '
.. .
}
Экспортер, предоставленный реестрами микрометра, является экспортером HTTP и может быть настроен с помощью свойств благодаря автоконфигурации для OpenElemetry.
management :
otlp :
metrics :
export :
url : http://localhost:4318/v1/metrics
step : 5s
Opentelemetry поддерживает дополнительные пары ключей/значения (называемые resource attributes
), которые будут включены в данные телеметрии. Привод Spring Boot обеспечивает автоконфигурацию для них и позволяет добавлять новые атрибуты ресурса с помощью свойств.
management :
opentelemetry :
resource-attributes :
cluster : local
" service.name " : ${spring.application.name}
Я сделал демонстрационное приложение, чтобы продемонстрировать эту настройку.
В реестре микрометра OTLP-модуль использует OTLP-совместимый клиент HTTP для экспорта метрик в бэкэнд Opentelemetry. Внутренне, OtlpMeterRegistry
использует частный объект HttpSender
для настройки клиента HTTP. Преимущество этого подхода заключается в том, что модуль является легким и не нуждается в зависимости от SDK Opentelemetry. Он использует только библиотеку io.opentelemetry.proto
, которая обеспечивает конфигурацию Protobuf для Opentelemetry.
С другой стороны, такой подход означает, что:
Новый общий OpenTelemetryAutoConfiguration
в Spring Boot 3.2 Автоконфигурирование OpenTelemetry
Bean и позволяет настроить бобы SdkMeterProvider
. Что если микрометр мог бы использовать это для настройки экспортера метрик Openelemetry?
Возможные решения:
MeterRegistry
, который принимает объект OpenTelemetry
для конфигурации (аналогично OpenTelemetryMeterRegistry
используемому в библиотеке инструментов Java Opentelemetry). Если необходима обратная совместимость, новая реализация должна будет сосуществовать с существующей (возможно, флаг объекта может переключаться между ними?); Я представил проблему в проект микрометра и поделился этими предложениями. Создание (или обновления) такого модуля позволит повторному использованию одной и той же OpenTelemetryAutoConfiguration
, введенной в Spring Boot 3.2 как для метрик, так и для следов (и, в будущем, также для журналов).
SdkMeterProvider
и, как правило, для использования метрик с OpenElemetry. Но нам не хватает поддержки микрометра, прежде чем это будет выполнено.OtlpHttpMetricExporter
, либо OtlpGrpcMetricExporter
).Для получения дополнительного контекста о текущих проблемах обратитесь к этому вопросу о проекте Spring Boot.
Привод Spring Boot обеспечивает управление зависимостями и автоконфигурацию для трассировки микрометра, которое предлагает удобный фасад в течение нескольких различных распределенных бэкэндов трассировки. Одним из них является Opentelemetry.
Разработчики Spring Boot могут включить свои приложения для экспортных трассов через протокол OTLP в бэкэнд Opentelemetry, добавив привод пружинных загрузков, трассировку микрометра и выделенную зависимость Openelemetry от микрометра к своим проектам.
dependencies {
implementation ' org.springframework.boot:spring-boot-starter-actuator '
implementation ' io.micrometer:micrometer-tracing-bridge-otel '
implementation ' io.opentelemetry:opentelemetry-exporter-otlp '
.. .
}
Экспортер, предоставленный автоконфигурацией привода Spring Boot, является экспортером HTTP (бон OtlpHttpSpanExporter
) и может быть настроен с помощью свойств благодаря конфигурации трассировки в OtlpAutoConfiguration
.
management :
otlp :
tracing :
endpoint : http://localhost:4318/v1/traces
Opentelemetry поддерживает дополнительные пары ключей/значения (называемые resource attributes
), которые будут включены в данные телеметрии. Привод Spring Boot обеспечивает автоконфигурацию для них и позволяет добавлять новые атрибуты ресурса с помощью свойств. application
атрибут ресурса service.name
spring.application.name
.
management :
opentelemetry :
resource-attributes :
cluster : local
Я сделал демонстрационное приложение, чтобы продемонстрировать эту настройку.
В этом выпуске в рамках проекта Spring Boot AutoConfiguration для бобов OtlpHttpSpanExporter
была добавлена в экспортные следы через HTTP.
Распространенным требованием является экспорт трассы через GRPC (наиболее используемый подход в Opentelemetry). В настоящее время разработчики могут самостоятельно настроить боб OtlpGrpcSpanExporter
. Было бы неплохо, если бы привод Spring Boot обеспечит для этого автоконфигурацию, улучшая существующую OtlpAutoConfiguration
.
В проекте Spring Boot уже есть проблема, чтобы добавить такую автоконфигурацию.
В целом, это проблемы и предложения, которые я описывал до сих пор.
Микрометр
MeterRegistry
созданную поверх OpenteLemetry и настраиваемой с помощью его стандартных подходов, чтобы можно было поделиться конфигурацией между показателями и следами.Привод весеннего ботинка
OpenTelemetry
и Resource
бобы могут быть повторно использованы из существующей конфигурации Opentelemetry. Кроме того, автоконфигурация должна определять по умолчанию по умолчанию для SdkMeterProvider
, OtlpHttpMetricExporter
и OtlpGrpcMetricExporter
.OtlpGrpcSpanExporter
.Пружина инициализа
Привод весеннего ботинка
OpenTelemetry
и Resource
бобы могут быть повторно использованы из существующей конфигурации Opentelemetry. Кроме того, автоконфигурация должна определять по умолчанию по умолчанию для SdkLoggerProvider
, OtlpHttpLogRecordExporter
и OtlpGrpcLogRecordExporter
.OpenTelemetryAutoConfiguration
(эта проблема может быть рассмотрена для глобальной OpenTelemetryAutoConfiguration
после того, как отслеживание конкретной из них будет удалено).