implementation 'io.opentelemetry:opentelemetry-api:1.4.0'
implementation 'io.opentelemetry:opentelemetry-sdk:1.4.0'
import io.opentelemetry.api.GlobalOpenTelemetry;
import io.opentelemetry.api.trace.Tracer;
public class Application {
private static final Tracer TRACER = GlobalOpenTelemetry.getTracer("my-library");
public static void main(String[] args) {
GlobalOpenTelemetry.setTracerProvider(SdkTracerProvider.builder().build());
// ...
}
}
import io.opentelemetry.context.Scope;
import io.opentelemetry.api.trace.Span;
import io.opentelemetry.api.trace.StatusCode;
import io.opentelemetry.api.trace.Tracer;
import io.opentelemetry.api.trace.TracerProvider;
import io.opentelemetry.api.trace.attributes.SemanticAttributes;
public class MyLibraryClass {
private static final Tracer TRACER = GlobalOpenTelemetry.getTracer("my-library");
public void myMethod() {
Span span = TRACER.spanBuilder("mySpan").setAttribute(SemanticAttributes.HTTP_METHOD, "GET").startSpan();
try (Scope ignored = TRACER.withSpan(span)) {
// ...
span.setStatus(StatusCode.OK);
} catch (Exception e) {
span.setStatus(StatusCode.ERROR);
} finally {
span.end();
}
}
}
implementation 'io.opentelemetry.exporter:opentelemetry-exporter-zipkin:1.4.0'
import io.opentelemetry.exporter.zipkin.ZipkinSpanExporter;
import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor;
import io.opentelemetry.sdk.trace.export.SpanExporter;
public class Application {
public static void main(String[] args) {
GlobalOpenTelemetry.setTracerProvider(SdkTracerProvider.builder().build());
SpanExporter exporter = ZipkinSpanExporter.builder()
.setEndpoint("http://localhost:9411/api/v2/spans")
.build();
SimpleSpanProcessor spanProcessor = SimpleSpanProcessor.builder(exporter).build();
GlobalOpenTelemetry.getTracerProvider().addSpanProcessor(spanProcessor);
// ...
}
}