Das Tracing des jadice web toolkit wird durch OpenTelemetry ermöglicht, somit können verteilte Traces in Echtzeit erfasst und analysiert werden. Dies ermöglicht eine tiefgehende Überwachung und Performance-Analyse der Anwendung.
Konfiguration der application.yml
Die Konfiguration von OpenTelemetry und der Verbindung zum Tracing-Endpoint (hier Jaeger) erfolgt über die application.yml
:
otel:
exporter:
otlp:
protocol: http/protobuf
traces:
endpoint: http://localhost:4318/v1/traces
sdk:
disabled: false # Aktiviert das Tracing, Metriken und Logs (Metriken und Logs werden hierbei aktuell noch nicht über OpenTelemetry abgebildet
traces:
disabled: false # Aktiviert das Tracing
exporter: otlp
metrics:
exporter: none
logs:
exporter: none
resource:
attributes:
service.name=otel-jwt
service.namespace=jadice
Diese Konfiguration aktiviert OpenTelemetry-Tracing mit OTLP (OpenTelemetry Protocol) über HTTP und richtet die Endpunkte für das Senden der Traces ein. Die Ressourcenattribute service.name
und service.namespace
helfen dabei, die Traces spezifisch der Anwendung zuzuordnen.
Weitere Konfigurationsmöglichkeiten können in der Dokumentation des OpenTelemetry SDK Autoconfigure Moduls nachgeschlagen werden (Bis jetzt nur Tracing unterstützt): https://github.com/open-telemetry/opentelemetry-java/blob/main/sdk-extensions/autoconfigure/README.md
Beispielhafte Einrichtung einer Jaeger All-in-one Distribution mittels Docker
Um diese Traces entgegenzunehmen, setzen wir hier beispielhaft eine Jaeger-Instanz auf, die die Traces über den Http-Endpunkt http://localhost:4318/v1/traces entgegennimmt.
docker run --rm -it --name jaeger\
-e COLLECTOR_OTLP_ENABLED=true \
-p 4318:4318 \
-p 16686:16686 \
jaegertracing/all-in-one:1.39
Nachdem die Traces an Jaeger gesendet wurden, können diese über die Jaeger UI (http://localhost:16686) analysiert werden. Die Jaeger UI bietet eine grafische Oberfläche zur Visualisierung der Traces und zur Durchführung von tiefgreifenden Analysen zur Performance und Fehlerdiagnose.