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