Zipkin
This example demonstrates a basic example of Dubbo integrating Zipkin for end-to-end tracing.
This example demonstrates a basic example of Dubbo integrating Zipkin for end-to-end tracing. For the complete code, please refer to dubbo-samples-tracing-zipkin, which consists of three parts:
- dubbo-samples-spring-boot3-tracing-provider
- dubbo-samples-spring-boot3-tracing-consumer
- dubbo-samples-spring-boot3-tracing-interface
Quick Start
Install & Launch Zipkin
Refer to Zipkin’s quick start to install Zipkin.
Here we use Docker to demonstrate how to quickly start the Zipkin service.
docker run -d -p 9411:9411 --name zipkin openzipkin/zipkin
Next, you can confirm that Zipkin is working properly through the following link: [http://localhost:9411](http://localhost:9411)
Install & Launch Nacos
Follow Nacos’s quick start to quickly install and launch Nacos.
Start Example Provider
Run org.apache.dubbo.springboot.demo.provider.ProviderApplication
directly in the IDE.
Start Example Consumer
Run org.apache.dubbo.springboot.demo.consumer.ConsumerApplication
directly in the IDE.
Check Monitoring Effects
Open http://localhost:9411/zipkin/
in your browser to see the effects.
How to Use Dubbo Tracing in SpringBoot Projects
1. Add Dubbo Tracing Related Starter Dependencies
Choose one from the two starters below to add to your project, with differences in the choice of Tracer, one is Opentelemetry, and the other is Brave:
<!-- Opentelemetry as Tracer, Zipkin as exporter -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-tracing-otel-zipkin-starter</artifactId>
</dependency>
<!-- Brave as Tracer, Zipkin as exporter -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-tracing-brave-zipkin-starter</artifactId>
</dependency>
2. Configuration
Add the following configuration in application.yml:
dubbo:
tracing:
enabled: true # Default is false
sampling:
probability: 0.5 # Sampling rate, default is 0.1
propagation:
type: W3C # Propagator type: W3C/B3, default is W3C
tracing-exporter:
zipkin-config:
endpoint: http://localhost:9411/api/v2/spans
connect-timeout: 1s # Connection timeout, default is 1s
read-timeout: 10s # Data transmission timeout, default is 10s
# Output tracing information to logging
logging:
pattern:
level: '%5p [${spring.application.name:},%X{traceId:-},%X{spanId:-}]'
Extension
Choose the Right Sender
The Sender in Zipkin is a client implementation for the Exporter to report the traced data, all implementations can be referenced here.
There are many implementations of Sender:
- URLConnectionSender reports via Java’s built-in HTTP client
- OkHttpSender reports via OKHttp3
- KafkaSender reports via Kafka messaging queue
- ActiveMQSender reports via ActiveMQ messaging queue
- RabbitMQSender reports via RabbitMQ messaging queue
Currently, the default starter for Dubbo Tracing uses OKHttpSender and also supports URLConnectionSender. If you want to send Spans to Zipkin via URLConnectionSender, you can directly add the following dependency in your pom:
<dependency>
<groupId>io.zipkin.reporter2</groupId>
<artifactId>zipkin-sender-urlconnection</artifactId>
</dependency>
Configure Zipkin’s endpoint, connectTimeout, readTimeout.
dubbo:
tracing:
enabled: true # Default is false
tracing-exporter:
zipkin-config:
endpoint: http://localhost:9411/api/v2/spans
connect-timeout: 1s # Connection timeout, default is 1s
read-timeout: 10s # Data transmission timeout, default is 10s
If you want to use other types of Sender, you will need to manually inject the corresponding Bean in your project and configure the corresponding properties, such as KafkaSender:
@Configuration
public class KafkaSenderConfiguration {
@Bean
KafkaSender kafkaSender(){
KafkaSender.Builder builder = KafkaSender.newBuilder();
builder.bootstrapServers("127.0.0.0.1:9092");
builder.topic("zipkin");
builder.encoding(Encoding.JSON);
return builder.build();
}
}
SpringBoot2 Example
The usage of dubbo-tracing remains largely the same between SpringBoot2 and 3, the example for SpringBoot2 can be referenced at code address.
Non-SpringBoot Project Example
For non-SpringBoot projects, tracing can also be used through the Dubbo Bootstrap API method, detailed examples can be referenced at code address
Feedback
Was this page helpful?
Yes No
Last modified September 30, 2024: Update & Translate Overview Docs (#3040) (d37ebceaea7)