In Cloud-Anwendungen – aber durchaus nicht nur dort – interessieren wir uns dafür, wie die Anwendungen laufen, ob es ihnen „gut“ geht und wie sie sich untereinander aufrufen. Technisch sind das die Aspekte Metrics und Tracing.
Die CNCF (Cloud Native Computing Foundation) hat dafür schon seit Jahren ein Open-Source-Projekt namens Open Telemery, das u. a. APIs bereitstellt, mit denen diese sog. Telemetriedaten in Anwendungen erfasst und exportiert werden können. Für Java nimmt sich nun MicroProfile Telemetry des Themas an und für Quarkus gibt es passende Extensions!
Die Extension quarkus-opentelemetry
unterstützt u. a. Tracing, d. h. die Verfolgung von Requests über ggf. mehrere Anwendungen hinweg. Solange man sich im Bereich von RESTful Services befindet, die mit Jakarta RESTful Webservices implementiert sind und die andere Services bei Bedarf mit MicroProfile Rest Client aufrufen, muss die Anwendung dafür kaum konfiguriert werden. Einzig die Adresse des Tracing Collectors ist (bspw. in application.properties
) anzugeben:
quarkus.otel.exporter.otlp.endpoint=http://localhost:4317
Noch bequemer wird es während der Entwicklung, wenn man den für Quarkus ebenfalls verfügbaren Dev Service nutzt, d. h. die Adresse im Dev Mode nicht definiert und mittels der Extension quarkus-observability-devservices-lgtm
einen Telemetry Collector aus dem Grafana-Projekt in einem Container hochfahren lässt. Grafana LGTM ist eine All-in-One-Lösung für L(ogging), G(rafana), T(races) und M(etrics), die aus einem Open Telemetry Collector, den Backends Loki für Logging, Tempo für Tracing und Prometeus für Metrics, sowie Grafana zur Visualisierung besteht.

Sind in derart ausgerüstenen Anwendungen einige Requests durchgelaufen, kann man sich diese in ihrem zeitlichen Zusammenhang in Grafana aus der angebundenen Tempo-Datenbank visualisieren lassen.

Die Spezifikation MicroProfile Telemetry verlangt derzeit nur die Implementierung von Tracing, aber Quarkus unterstützt auch Metrics und Logging. Bei der oben genannten Extension müssen diese Aspekte in der Konfiguration eingeschaltet werden:
quarkus.otel.metrics.enabled=true
quarkus.otel.logs.enabled=true
Die von den Anwendungen exportierten Daten können dann in Grafana in den Datenbanken Prometeus bzw. Loki zentral eingesehen werden.


Schon ohne wesentliche Konfiguration und ganz ohne spezielle Programmierung werden Quarkus-Anwendungen so mit ganz niedriger Einstiegshürde „observable“. Man kann aber auch recht leicht Tracing-Daten anreichern oder eigene sog. Spans einbringen. Ebenso lassen sich anwendungsspezifische Metriken bspw. als Counter oder Histogramme programmieren.
Mehr Details finden Sie in Open Telemetry und MicroProfile Telemetry – oder noch besser: Kommen Sie doch zu einem unserer Quarkus-Seminare!