<dependency>
<groupId>io.opentelemetry</groupId>
<artifactId>opentelemetry-api</artifactId>
<version>1.0.1</version>
</dependency>
<dependency>
<groupId>io.opentelemetry</groupId>
<artifactId>opentelemetry-exporter-otlp</artifactId>
<version>1.0.1</version>
</dependency>
<dependency>
<groupId>io.opentelemetry</groupId>
<artifactId>opentelemetry-sdk</artifactId>
<version>1.0.1</version>
</dependency>
import io.opentelemetry.exporter.otlp.metrics.OtlpGrpcMetricExporter;
import io.opentelemetry.exporter.otlp.trace.OtlpGrpcSpanExporter;
import io.opentelemetry.exporter.otlp.trace.OtlpGrpcSpanExporterBuilder;
import io.opentelemetry.sdk.OpenTelemetrySdk;
import io.opentelemetry.sdk.metrics.SdkMeterProvider;
import io.opentelemetry.sdk.metrics.export.IntervalMetricReader;
import io.opentelemetry.sdk.trace.SdkTracerProvider;
import io.opentelemetry.sdk.trace.export.BatchSpanProcessor;
public class MyApp {
public static void main(String[] args) {
OtlpGrpcSpanExporter spanExporter = OtlpGrpcSpanExporter.builder()
.setEndpoint("your-export-endpoint")
.build();
OtlpGrpcMetricExporter metricExporter = OtlpGrpcMetricExporter.builder()
.setEndpoint("your-export-endpoint")
.build();
BatchSpanProcessor spanProcessor = BatchSpanProcessor.builder(spanExporter).build();
SdkMeterProvider meterProvider = SdkMeterProvider.builder().build();
IntervalMetricReader metricReader = IntervalMetricReader.builder()
.setMetricExporter(metricExporter)
.setMetricProducers(Collections.singletonList(meterProvider.get()))
.build();
SdkTracerProvider tracerProvider = SdkTracerProvider.builder()
.addSpanProcessor(spanProcessor)
.build();
OpenTelemetrySdk.builder()
.setTracerProvider(tracerProvider)
.setMeterProvider(meterProvider)
.buildAndRegisterGlobal();
// ...
}
}
import io.opentelemetry.api.metrics.LongCounter;
import io.opentelemetry.api.metrics.Meter;
import io.opentelemetry.api.metrics.MeterProvider;
import io.opentelemetry.api.metrics.common.Labels;
import io.opentelemetry.api.trace.Span;
import io.opentelemetry.api.trace.Tracer;
public class MyService {
private static final Tracer tracer = OpenTelemetry.getTracerFactory().get("my-service");
private static final Meter meter = OpenTelemetry.getMeterFactory().get("my-service-metrics");
private static final LongCounter requestCounter = meter
.longCounterBuilder("requests_count")
.setDescription("Total number of requests")
.setUnit("1")
.build();
public void doSomething() {
// Start a span
Span span = tracer
.spanBuilder("doSomething")
.setSpanKind(Span.Kind.SERVER)
.startSpan();
// Record a span event
span.addEvent("Processing started");
try {
// Do some work
requestCounter.add(1, Labels.of("status", "success"));
} catch (Exception e) {
// Record an error
span.recordException(e);
requestCounter.add(1, Labels.of("status", "error"));
} finally {
// End the span
span.end();
}
}
}