Java
<!-- status: ga language: java -->
Java
Send traces from a Java service to Watchtower over OTLP/HTTP with the standard OpenTelemetry SDK. Nothing Watchtower-specific is installed: the SDK reads the standard OTEL_* variables.
Create a project, then an ingestion key (
wti_...) with theingest:tracesscope. The key is shown once.Point the SDK at the gateway and pass the key in the
x-watchtower-keyheader (Authorization: Bearer wti_...works too):
export OTEL_EXPORTER_OTLP_ENDPOINT=https://ingest.example.com
export OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf
export OTEL_EXPORTER_OTLP_HEADERS=x-watchtower-key=wti_YOUR_KEY
export OTEL_SERVICE_NAME=my-serviceAdd the SDK and run this once. The endpoint above is the gateway's base URL; the SDK appends
/v1/traces.
implementation("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure")
implementation("io.opentelemetry:opentelemetry-exporter-otlp")import io.opentelemetry.api.trace.Tracer;
import io.opentelemetry.sdk.OpenTelemetrySdk;
import io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdk;
public class Onboarding {
public static void main(String[] args) {
// reads OTEL_EXPORTER_OTLP_*
OpenTelemetrySdk sdk = AutoConfiguredOpenTelemetrySdk.initialize().getOpenTelemetrySdk();
Tracer tracer = sdk.getTracer("onboarding");
tracer.spanBuilder("hello-watchtower").startSpan().end();
sdk.close();
}
}Open the project's onboarding screen. It polls
GET /v1/projects/{prj}/onboarding/first-eventand turns green when the first span arrives. Then open the trace in the trace explorer.
For an existing app you can skip the code: run it with the OpenTelemetry Java agent (-javaagent:opentelemetry-javaagent.jar) and the same variables.