SpringCloud 将跨度发送到Zipkin
默认情况下,如果将spring-cloud-starter-zipkin
作为依赖项添加到项目,则关闭跨度后,跨度将通过HTTP发送到Zipkin。通信是异步的。您可以通过设置spring.zipkin.baseUrl
属性来配置URL,如下所示:
spring.zipkin.baseUrl: https://192.168.99.100:9411/
如果您想通过服务发现来找到Zipkin,则可以在URL内传递Zipkin的服务ID,如以下zipkinserver
服务ID的示例所示:
spring.zipkin.baseUrl: http://zipkinserver/
要禁用此功能,只需将spring.zipkin.discoveryClientEnabled
设置为`false。
启用发现客户端功能后,Sleuth使用LoadBalancerClient
查找Zipkin服务器的URL。这意味着您可以设置负载平衡配置,例如通过Ribbon。
zipkinserver: ribbon: ListOfServers: host1,host2
如果在类路径上一起有web,rabbit或kafka,则可能需要选择将spans发送到zipkin的方式。为此,请将web
,rabbit
或kafka
设置为spring.zipkin.sender.type
属性。以下示例显示了为web
设置发件人类型:
spring.zipkin.sender.type: web
要自定义通过HTTP发送spans到Zipkin的RestTemplate
,可以注册ZipkinRestTemplateCustomizer
bean。
@Configuration class MyConfig { @Bean ZipkinRestTemplateCustomizer myCustomizer() { return new ZipkinRestTemplateCustomizer() { @Override void customize(RestTemplate restTemplate) { // customize the RestTemplate } }; } }
但是,如果您想控制创建RestTemplate
对象的整个过程,则必须创建zipkin2.reporter.Sender
类型的bean。
@Bean Sender myRestTemplateSender(ZipkinProperties zipkin, ZipkinRestTemplateCustomizer zipkinRestTemplateCustomizer) { RestTemplate restTemplate = mySuperCustomRestTemplate(); zipkinRestTemplateCustomizer.customize(restTemplate); return myCustomSender(zipkin, restTemplate); }
更多建议: