This case shows using OpenTelemetry(otlp) as the Tracer in the Dubbo project to report the Trace information to the Otlp Collector, which then forwards it to Zipkin and Jagger. Code address
It consists of three parts:
Follow OpenTelemetry Collector Quick Start to start the otlp collector.
Run org.apache.dubbo.springboot.demo.provider.ProviderApplication
directly from IDE.
Start org.apache.dubbo.springboot.demo.consumer.ConsumerApplication
directly from IDE.
Open the zipkin dashboard http://localhost:9411/zipkin/
in the browser:
Open the Jaeger dashboard http://localhost:16686/search
in the browser:
For Spring Boot projects, you can use dubbo-spring-boot-tracing-otel-otlp-starter
:
<!-- OpenTelemetry as Tracer, Otlp as exporter --> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-spring-boot-tracing-otel-otlp-starter</artifactId> </dependency>
dubbo: tracing: enabled: true # default is false sampling: probability: 0.5 # sampling rate, default is 0.1 propagation: type: W3C # W3C/B3 default is W3C tracing-exporter: otlp-config: endpoint: http://localhost:4317 timeout: 10s # default is 10s compression-method: none # none/gzip The method used to compress payloads, default is "none" headers: # customized added headers, default is empty auth: admin # tracing info output to logging logging: level: root: info pattern: console: '[%d{dd/MM/yy HH:mm:ss:SSS z}] %t %5p %c{2} [%X{traceId:-}, %X{spanId:-}]: %m%n'
<!-- Required, dubbo-tracing core dependency --> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-tracing</artifactId> </dependency> <!-- Opentelemetry as Tracer --> <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-tracing-bridge-otel</artifactId> </dependency> <!-- OTlp as exporter --> <dependency> <groupId>io.opentelemetry</groupId> <artifactId>opentelemetry-exporter-otlp</artifactId> </dependency>
TracingConfig tracingConfig = new TracingConfig(); // Enable dubbo tracing tracingConfig.setEnabled(true); // Set the sampling tracingConfig.setSampling(new SamplingConfig(1.0f)); // Set Propagation, default is W3C, optional W3C/B3 tracingConfig.setPropagation(new PropagationConfig("W3C")); // Set trace reporting ExporterConfig exporterConfig = new ExporterConfig(); // Set up trace reporting to Zipkin exporterConfig.setZipkin(new ExporterConfig.OtlpConfig("http://localhost:4317", Duration.ofSeconds(10), "none")); tracingConfig.setExporter(exporterConfig);