Spring Boot Actuator bietet ein Abhängigkeitsmanagement und eine Autokonfiguration für Micrometer, die eine bequeme Fassade über viele verschiedene Überwachungssysteme bietet. Einer von ihnen ist Opentelemetrie.
Spring -Boot -Entwickler können ihre Anwendungen ermöglichen, Metriken über das OTLP -Protokoll in ein OpenTelemetry -Backend zu exportieren, indem Spring -Boot -Aktuator und die dedizierte OpenTelemetry -Abhängigkeit vom Mikrometer zu ihren Projekten hinzugefügt werden.
dependencies {
implementation ' org.springframework.boot:spring-boot-starter-actuator '
runtimeOnly ' io.micrometer:micrometer-registry-otlp '
.. .
}
Der vom Micrometer Registry OTLP bereitgestellte Exporteur ist ein HTTP -Exporteur und kann dank der Autokonfiguration für Opentelemetrie über Eigenschaften konfiguriert werden.
management :
otlp :
metrics :
export :
url : http://localhost:4318/v1/metrics
step : 5s
OpenTelemetry unterstützt zusätzliche Schlüssel-/Wertpaare (als resource attributes
), die in die Telemetriedaten aufgenommen werden. Spring Boot Actuator bietet für diese eine Autokonfiguration und ermöglicht es, neue Ressourcenattribute über Eigenschaften hinzuzufügen.
management :
opentelemetry :
resource-attributes :
cluster : local
" service.name " : ${spring.application.name}
Ich habe eine Demo -Bewerbung gestellt, um dieses Setup zu präsentieren.
Das OTLP-Modul von Micrometer Registry verwendet einen OTLP-kompatiblen HTTP-Client, um Metriken in ein OpenTelemetry-Backend zu exportieren. Intern verwendet die OtlpMeterRegistry
ein privates HttpSender
-Objekt, um den HTTP -Client zu konfigurieren. Der Vorteil dieses Ansatzes besteht darin, dass das Modul leicht ist und keine Abhängigkeit von der Opentelemetrie -SDK benötigt. Es verwendet nur die Bibliothek io.opentelemetry.proto
, die die Protobuf -Konfiguration für Opentelemetry bietet.
Andererseits bedeutet ein solcher Ansatz::
Die neue generische OpenTelemetryAutoConfiguration
in Spring Boot 3.2 kann eine OpenTelemetry
-Bohne automatisch vorstellt und es ermöglicht, eine SdkMeterProvider
-Bohne zu konfigurieren. Was wäre, wenn Mikrometer das verwenden könnte, um den Opentelemetry -Metriken -Exporteur einzurichten?
Mögliche Lösungen:
MeterRegistry
zu implementieren, die ein OpenTelemetry
-Objekt für die Konfiguration akzeptiert (ähnlich der OpenTelemetryMeterRegistry
die von der Opentelemetry Java Instrumentation Library verwendet wird). Wenn die Rückwärtskompatibilität erforderlich ist, müsste die neue Implementierung mit dem vorhandenen nebeneinander existieren (möglicherweise ein Feature-Flag könnte zwischen den beiden wechseln?). Ich habe ein Problem an das Micometer -Projekt eingereicht und diese Vorschläge geteilt. Aufbau (oder Aktualisierung) eines solchen Moduls würde es ermöglichen, dieselbe OpenTelemetryAutoConfiguration
wiederzuverwenden, die sowohl für Metriken als auch für Spuren (und in Zukunft auch für Protokolle) in Spring Boot 3.2 eingeführt wurden.
SdkMeterProvider
-Bohne und im Allgemeinen zur Verwendung von Metriken mit Opentelemetrie zu automatisieren. Wir fehlen jedoch den Mikrometerunterstützung, bevor dies machbar ist.OtlpHttpMetricExporter
oder OtlpGrpcMetricExporter
).Weitere Kontext über die aktuellen Herausforderungen finden Sie in diesem Problem im Spring Boot -Projekt.
Spring Boot Actuator bietet eine Abhängigkeitsmanagement und Autokonfiguration für die Micrometer -Verfolgung, die eine bequeme Fassade über einige verschiedene verteilte Spuren -Backends bietet. Einer von ihnen ist Opentelemetrie.
Spring -Boot -Entwickler können ihre Anwendungen ermöglichen, Spuren über das OTLP -Protokoll zu einem OpenTelemetry -Backend zu exportieren, indem Federschuh -Aktuator, Mikrometerverfolgung und die dedizierte OpenTelemetrie -Abhängigkeit von Mikrometer zu ihren Projekten hinzugefügt werden.
dependencies {
implementation ' org.springframework.boot:spring-boot-starter-actuator '
implementation ' io.micrometer:micrometer-tracing-bridge-otel '
implementation ' io.opentelemetry:opentelemetry-exporter-otlp '
.. .
}
Der vom Spring Boot Actuator Autoconfiguration bereitgestellte Exporteur ist ein HTTP -Exporteur (ein OtlpHttpSpanExporter
-Bean) und kann dank der Verfolgungskonfiguration in OtlpAutoConfiguration
über Eigenschaften konfiguriert werden.
management :
otlp :
tracing :
endpoint : http://localhost:4318/v1/traces
OpenTelemetry unterstützt zusätzliche Schlüssel-/Wertpaare (als resource attributes
), die in die Telemetriedaten aufgenommen werden. Spring Boot Actuator bietet für diese eine Autokonfiguration und ermöglicht es, neue Ressourcenattribute über Eigenschaften hinzuzufügen. Das Standard -Attribut für OpenTelemetry service.name
Resource -Attribut wird automatisch für den Wert von spring.application.name
(falls definiert) oder an einem Standard application
konfiguriert.
management :
opentelemetry :
resource-attributes :
cluster : local
Ich habe eine Demo -Bewerbung gestellt, um dieses Setup zu präsentieren.
In dieser Ausgabe im Spring Boot -Projekt wurde eine Autokonfiguration für eine OtlpHttpSpanExporter
-Bean über HTTP zu exportieren.
Eine häufige Anforderung besteht darin, Spuren über GRPC zu exportieren (der am häufigsten verwendete Ansatz in der Opentelemetrie). Derzeit können Entwickler eine OtlpGrpcSpanExporter
-Bean selbst konfigurieren. Es wäre schön, wenn der Spring -Boot -Aktuator dafür eine Autokonfiguration liefern würde und die vorhandene OtlpAutoConfiguration
verbessert würde.
Es gibt bereits ein Problem im Spring Boot -Projekt, um eine solche Autokonfiguration hinzuzufügen.
Insgesamt sind dies die Probleme und Vorschläge, die ich bisher beschrieben habe.
Mikrometer
MeterRegistry
-Implementierung ein, die auf OpenTelemetry basiert und über ihre Standardansätze konfiguriert werden kann, damit die Konfiguration zwischen Metriken und Spuren freigegeben werden kann.Federschuh Aktuator
OpenTelemetry
und Resource
können aus der vorhandenen Opentelemetriekonfiguration wiederverwendet werden. Außerdem sollte die Autokonfiguration Standardeinstellungen für SdkMeterProvider
, OtlpHttpMetricExporter
und OtlpGrpcMetricExporter
definieren.OtlpGrpcSpanExporter
-Bean definiert wird.Spring Initializr
Federschuh Aktuator
OpenTelemetry
und Resource
können aus der vorhandenen Opentelemetriekonfiguration wiederverwendet werden. Außerdem sollte die Autokonfiguration Standardeinstellungen für SdkLoggerProvider
, OtlpHttpLogRecordExporter
und OtlpGrpcLogRecordExporter
definieren.OpenTelemetryAutoConfiguration
derzeit verfügbaren konfigurierbaren Bohnen begrenzt werden kann (dieses Problem könnte für die globale OpenTelemetryAutoConfiguration
berücksichtigt werden, sobald die nachverfolgte Spezifikation gelöscht wird).