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
)。