Spring Boot执行器为千分尺提供了依赖性管理和自动配置,该级别为许多不同的监视系统提供了方便的外观。其中之一是Opentelemetry。
Spring Boot Developers可以通过添加Spring Boot执行器和专用的OpentElemetry依赖性从微米到他们的项目来使其应用程序通过OTLP协议通过OTLP协议导出指标。
dependencies {
implementation ' org.springframework.boot:spring-boot-starter-actuator '
runtimeOnly ' io.micrometer:micrometer-registry-otlp '
.. .
}
千分尺注册表提供的出口商OTLP是HTTP出口商,可以通过属性配置,这要归功于OpentElemetry的自动配置。
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客户端。这种方法的好处是,该模块是轻量级的,并且不需要对OpenTelemetry SDK的任何依赖性。它仅使用io.opentelemetry.proto
库,该库为OpentElemetry提供了ProtoBuf配置。
另一方面,这种方法意味着:
Spring Boot 3.2 AutoConconfiguration中新的通用OpenTelemetryAutoConfiguration
使用OpenTelemetry
bean,并使配置SdkMeterProvider
Bean成为可能。如果千分尺可以将其用于设置OpenTelemetry指标出口商怎么办?
可能的解决方案:
OpenTelemetry
对象进行配置的MeterRegistry
(类似于OpentElemetry Java Instrumentation库中使用的OpenTelemetryMeterRegistry
)。如果需要向后兼容性,则新实现将需要与现有的实现共存(也许功能标志可以在两者之间切换?);我已经向缩影项目提交了一个问题,并分享了这些建议。建筑物(或更新)这样的模块可以重新使用Spring Boot 3.2中引入的相同的OpenTelemetryAutoConfiguration
,用于指标和痕迹(以及将来的日志)。
SdkMeterProvider
Bean,并且通常将指标与OpenTElemetry一起使用。但是,在此之前,我们缺少千分尺的支撑。OtlpHttpMetricExporter
或OtlpGrpcMetricExporter
)。有关当前挑战的更多背景,请参阅Spring Boot项目上的此问题。
Spring Boot执行器为千分尺跟踪提供了依赖性管理和自动配置,可在几个不同的分布式跟踪后端提供方便的外墙。其中之一是Opentelemetry。
Spring Boot开发人员可以通过添加Spring Boot执行器,千分尺跟踪和专用的OpentElemetry依赖性从千分尺添加Spring Boot执行器,从而使其应用程序通过OTLP协议通过OTLP协议将其导出到OpenTelemetry后端。
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 Exporter( OtlpHttpSpanExporter
BEAN),并且可以通过属性配置,这要归功于OtlpAutoConfiguration
中的跟踪配置。
management :
otlp :
tracing :
endpoint : http://localhost:4318/v1/traces
OpentElemetry支持将包含在遥测数据中的其他密钥/值对(称为resource attributes
)。 Spring Boot执行器为它们提供自动配置,并可以通过属性添加新的资源属性。标准的OpenTelemetry service.name
资源属性自动配置为spring.application.name
(如果定义)或默认application
值的值。
management :
opentelemetry :
resource-attributes :
cluster : local
我做了一个演示应用程序来展示此设置。
在Spring Boot项目上的此问题中,已经添加了OtlpHttpSpanExporter
bean的自动配置,通过HTTP导出痕迹。
一个常见的要求是通过GRPC(Opentelemetry中最常用的方法)导出轨迹。当前,开发人员可以自己配置OtlpGrpcSpanExporter
BEAN。如果Spring Boot执行器为此提供自动配置,从而增强现有的OtlpAutoConfiguration
那将是很好的。
Spring Boot项目已经有一个问题来添加这种自动配置。
总体而言,这些是我到目前为止一直在描述的问题和建议。
千分尺
MeterRegistry
实现,并通过其标准方法进行配置,以便可以在指标和痕迹之间共享配置。春季启动执行器
OpenTelemetry
和Resource
Bean。除此之外,自动配置还应定义SdkMeterProvider
, OtlpHttpMetricExporter
和OtlpGrpcMetricExporter
的默认值。OtlpGrpcSpanExporter
BEAN引入通过GRPC导出OpenTelemetry Trace的自动配置。春季初始化
春季启动执行器
OpenTelemetry
和Resource
Bean。除此之外,自动配置还应定义SdkLoggerProvider
, OtlpHttpLogRecordExporter
和OtlpGrpcLogRecordExporter
的默认值。OpenTelemetryAutoConfiguration
中当前可用的可配置bean的数量(一旦删除了跟踪特定的特定者,就可以考虑使用全局OpenTelemetryAutoConfiguration
)。