Spring Boot Actuatorは、マイクロメートルの依存関係管理とオートコンテンションを提供します。これは、さまざまな監視システムにわたって便利なファサードを提供します。それらの1つはOpentelemetryです。
Spring Boot Developersは、Spring Boot Actuatorとマイクロメートルからプロジェクトまでの専用オペンテレメトリー依存性を追加することにより、OTLPプロトコルを介してOTLPプロトコルを介してメトリックをエクスポートできるようにすることができます。
dependencies {
implementation ' org.springframework.boot:spring-boot-starter-actuator '
runtimeOnly ' io.micrometer:micrometer-registry-otlp '
.. .
}
Micromer Registry OTLPが提供する輸出業者はHTTP輸出業者であり、オペンテレメトリー用のAutoconfigurationのおかげでプロパティを介して構成できます。
management :
otlp :
metrics :
export :
url : http://localhost:4318/v1/metrics
step : 5s
Opentelemetryは、テレメトリデータに含まれる追加のキー/値ペア( resource attributes
と呼ばれる)をサポートします。 Spring Boot Actuatorは、それらにAutoconfigurationを提供し、プロパティを介して新しいリソース属性を追加することを可能にします。
management :
opentelemetry :
resource-attributes :
cluster : local
" service.name " : ${spring.application.name}
このセットアップを紹介するためにデモアプリケーションを作成しました。
Micromer Registry OTLPモジュールは、OTLP互換のHTTPクライアントを使用して、メトリックをOpentelemetryバックエンドにエクスポートします。内部的には、 OtlpMeterRegistry
プライベートHttpSender
オブジェクトを使用してHTTPクライアントを構成します。このアプローチの利点は、モジュールが軽量であり、Opentelemetry SDKに依存する必要がないことです。 io.opentelemetry.proto
ライブラリのみを使用します。これは、OpentelemetryにProtobuf構成を提供します。
一方、そのようなアプローチは、次のことを意味します。
Spring Boot 3.2の新しいジェネリックOpenTelemetryAutoConfiguration
は、 OpenTelemetry
BeanをAutoconfigsureで構成し、 SdkMeterProvider
Beanを構成することを可能にします。マイクロメーターがそれを使用してOpentelemetry Metrics Exporterをセットアップできる場合はどうなりますか?
可能な解決策:
OpenTelemetry
オブジェクトを受け入れるMeterRegistry
を実装します(Opentelemetry Java Instrumentation Libraryで使用されるOpenTelemetryMeterRegistry
と同様)。後方互換性が必要な場合、新しい実装は既存の実装と共存する必要があります(機能フラグは2つを切り替えることができますか?)。私は問題をMicrometerプロジェクトに提出し、これらの提案を共有しました。このようなモジュールの構築(または更新)により、メトリックとトレースの両方でSpring Boot 3.2に導入された同じOpenTelemetryAutoConfiguration
を再利用できるようになります(および将来、ログについても)。
SdkMeterProvider
BeanをAutoconfigureと、一般的にはOpentelemetryを使用してメトリックを使用するための問題がすでに存在しています。しかし、それが実行可能になる前にマイクロメーターのサポートが欠けています。OtlpHttpMetricExporter
またはOtlpGrpcMetricExporter
いずれかを構成します)。現在の課題に関するより多くのコンテキストについては、Spring Boot Projectのこの問題を参照してください。
Spring Boot Actuatorは、マイクロメートルトレースの依存関係管理と自動構成を提供します。これは、いくつかの異なる分散トレースバックエンドにわたって便利なファサードを提供します。それらの1つはOpentelemetryです。
Spring Boot Developersは、Spring Boot Actuator、Micrometer Tracing、およびMicrometerからMicrometerからプロジェクトへの専用のオペンテレメトリー依存性を追加することにより、OTLPプロトコルを介してOTLPプロトコルを介してトレースをエクスポートできるようにすることができます。
dependencies {
implementation ' org.springframework.boot:spring-boot-starter-actuator '
implementation ' io.micrometer:micrometer-tracing-bridge-otel '
implementation ' io.opentelemetry:opentelemetry-exporter-otlp '
.. .
}
Spring Boot Actuator Autoconfigurationが提供する輸出業者は、HTTP Exporter( OtlpHttpSpanExporter
Bean)であり、 OtlpAutoConfiguration
のトレース構成のおかげでプロパティを介して構成できます。
management :
otlp :
tracing :
endpoint : http://localhost:4318/v1/traces
Opentelemetryは、テレメトリデータに含まれる追加のキー/値ペア( resource attributes
と呼ばれる)をサポートします。 Spring Boot Actuatorは、それらにAutoconfigurationを提供し、プロパティを介して新しいリソース属性を追加することを可能にします。標準のOpenteleMetry service.name
リソース属性はapplication
spring.application.name
(定義されている場合)の値に自動的に構成されます。
management :
opentelemetry :
resource-attributes :
cluster : local
このセットアップを紹介するためにデモアプリケーションを作成しました。
Spring Boot Projectのこの号では、 OtlpHttpSpanExporter
BeanのAutoconfigurationがHTTPを介してトレースをエクスポートするために追加されました。
一般的な要件は、GRPC(Opentelemetryで最も使用されるアプローチ)を介してトレースをエクスポートすることです。現在、開発者はOtlpGrpcSpanExporter
Beanを自分で構成できます。 Spring Boot Actuatorがそのために自動構成を提供し、既存のOtlpAutoConfiguration
強化するといいでしょう。
Spring Boot Projectには、このような自動構成を追加する問題がすでにあります。
全体として、これらは私がこれまでに説明してきた問題と提案です。
マイクロメーター
MeterRegistry
実装を紹介します。スプリングブートアクチュエータ
OpenTelemetry
とResource
Beansは、既存のOpentelemetry構成から再利用できます。それに加えて、autoconfigurationは、 SdkMeterProvider
、 OtlpHttpMetricExporter
、 OtlpGrpcMetricExporter
のデフォルトを定義する必要があります。OtlpGrpcSpanExporter
BEANを定義することにより、GRPCを介してOpentelemetryトレースをエクスポートするためのオートコンチュレーションを導入します。Spring Intializr
スプリングブートアクチュエータ
OpenTelemetry
とResource
Beansは、既存のOpentelemetry構成から再利用できます。それに加えて、autoconfigurationは、 SdkLoggerProvider
、 OtlpHttpLogRecordExporter
、 OtlpGrpcLogRecordExporter
のデフォルトを定義する必要があります。OpenTelemetryAutoConfiguration
で現在利用可能な構成可能な豆の数を制限する方法を調査するために問題が開かれました(この問題は、トレース固有のものが削除されると、グローバルなOpenTelemetryAutoConfiguration
について考慮される可能性があります)。