<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(); } } }


上一篇:
下一篇:
切换中文