Skip to content

Quarkus OpenTelemetry instrumentation

Quarkus has first-class OpenTelemetry support through the quarkus-opentelemetry extension. It builds the SDK and exporter into your application and configures them through Quarkus config, so there is no agent to attach. This is also the recommended path for Quarkus native images, where the Java agent cannot run.

  • A Quarkus application (Quarkus 3.x).
  • Your Osuite ingest endpoint (ingest.<region>.osuite.io:443) and token (<your-ingest-token>).
  • Outbound network access from the application host to the ingest endpoint on port 443.
Terminal window
quarkus extension add opentelemetry

Set the endpoint, protocol, and token in application.properties. Quarkus derives service.name from quarkus.application.name. Keep the token in an environment variable rather than in source control:

quarkus.application.name=catalog-service
quarkus.otel.exporter.otlp.endpoint=https://ingest.<region>.osuite.io:443
quarkus.otel.exporter.otlp.protocol=grpc
quarkus.otel.exporter.otlp.headers=x-osuite-ingest-token=${OSUITE_INGEST_TOKEN}
quarkus.otel.resource.attributes=service.environment=production

Traces are enabled by default. To also export logs and metrics, enable them:

quarkus.otel.logs.enabled=true
quarkus.otel.metrics.enabled=true

Supply the ingest token through OSUITE_INGEST_TOKEN. Every tab is a complete, self-contained path.

Terminal window
export OSUITE_INGEST_TOKEN="<your-ingest-token>"
java -jar target/quarkus-app/quarkus-run.jar

What you should see

Start the service and send it some traffic. It appears in APM within a minute, emitting request-rate, error-rate, and latency metrics, and its requests show up as traces in the trace explorer.

For native-image and exporter-connectivity problems, see Java troubleshooting.

No data in Osuite after a few minutes? Work through these checks.

  • Endpoint — confirm the exporter targets exactly ingest.<region>.osuite.io:443 for your region, over TLS.
  • Token — confirm the ingest header carries a valid <your-ingest-token> and has not been rotated.
  • Pipeline — confirm the signal you expect (traces, logs, or metrics) is wired into an active pipeline with the otlp/osuite exporter attached.
  • Export errors — check the application or Collector logs for OTLP export failures (auth, DNS, TLS, connection refused).
  • Network — confirm the host has outbound access to the ingest endpoint on port 443.
  • Timing — allow up to a minute for the first data to appear before assuming a failure.

Still stuck? Ask the Investigation Agent or contact support.