gradle
compile 'io.opentelemetry:opentelemetry-api:0.2.0'
compile 'io.opentelemetry:opentelemetry-sdk:0.2.0'
<dependency>
<groupId>io.opentelemetry</groupId>
<artifactId>opentelemetry-api</artifactId>
<version>0.2.0</version>
</dependency>
<dependency>
<groupId>io.opentelemetry</groupId>
<artifactId>opentelemetry-sdk</artifactId>
<version>0.2.0</version>
</dependency>
import io.opentelemetry.exporters.logging.LoggingSpanExporter;
import io.opentelemetry.sdk.OpenTelemetrySdk;
import io.opentelemetry.sdk.trace.export.SimpleSpansProcessor;
public class OpenTelemetryConfig {
public static void configureOpenTelemetry() {
LoggingSpanExporter exporter = new LoggingSpanExporter();
SimpleSpansProcessor spansProcessor = SimpleSpansProcessor.newBuilder(exporter).build();
OpenTelemetrySdk.builder()
.setTracerProvider(DefaultTracerProvider.builder()
.addSpanProcessor(spansProcessor)
.build())
.build();
}
}
import io.opentelemetry.api.metrics.DoubleCounter;
import io.opentelemetry.api.metrics.LongCounter;
import io.opentelemetry.api.metrics.Meter;
import io.opentelemetry.exporters.logging.LoggingMetricExporter;
public class PerformanceMetrics {
private static final Meter meter = OpenTelemetrySdk.getMeterProvider().get("my-library");
public static final LongCounter requestCounter = meter.longCounterBuilder("requests")
.setDescription("Total requests")
.setUnit("1")
.build();
public static final DoubleCounter latencyCounter = meter.doubleCounterBuilder("latency")
.setDescription("Request latency")
.setUnit("ms")
.build();
public static void recordRequest() {
requestCounter.add(1);
}
public static void recordLatency(double latency) {
latencyCounter.add(latency);
}
public static void exportMetrics() {
LoggingMetricExporter exporter = new LoggingMetricExporter();
meter.collectAllMetrics().forEach(exporter::export);
}
}
public class MyLibrary {
public void performOperation() {
Span span = OpenTelemetrySdk.getTracerProvider()
.get("my-library")
.spanBuilder("performOperation")
.startSpan();
try (Scope scope = span.makeCurrent()) {
PerformanceMetrics.recordRequest();
} finally {
span.end();
}
}
}