13. 将Span发送到Zipkin

默认情况下,如果你将spring-cloud-starter-zipkin作为依赖添加到项目中,当span关闭时,会通过HTTP发送到Zipkin。 通信是异步的。 你可以通过设置spring.zipkin.baseUrl属性来配置URL,如下所示:spring-doc.cadn.net.cn

spring.zipkin.baseUrl: https://192.168.99.100:9411/

如果你想通过服务发现找到Zipkin,可以在URL中传递Zipkin的服务ID,如下面为zipkinserver服务ID的例子所示:spring-doc.cadn.net.cn

spring.zipkin.baseUrl: https://zipkinserver/

默认情况下,api path 将设置为 0 或 1,具体取决于编码器版本。如果要使用自定义 api 路径,可以使用以下属性进行配置(空情况,设置为空):spring-doc.cadn.net.cn

spring.zipkin.apiPath: v2/path2

要禁用此功能,请将spring.zipkin.discoveryClientEnabled设置为`false。spring-doc.cadn.net.cn

当启用发现客户端功能时,Sleuth 使用 LoadBalancerClient 来查找 Zipkin 服务器的 URL。这意味着您可以使用 Ribbon 等方式设置负载均衡配置。spring-doc.cadn.net.cn

zipkinserver:
  ribbon:
    ListOfServers: host1,host2

如果您的类路径中同时具有 web、rabbit、activemq 或 kafka,则可能需要选择您希望将跨度发送到 zipkin 的方式。 为此,请设置属性 4。。 下面的示例展示了如何为 web 设置发送器类型:spring-doc.cadn.net.cn

spring-doc.cadn.net.cn

spring-doc.cadn.net.cn

spring.zipkin.sender.type: web

要通过 HTTP 将跨度发送到 Zipkin 来自定义 RestTemplate,您可以注册 ZipkinRestTemplateCustomizer bean。spring-doc.cadn.net.cn

@Configuration
class MyConfig {
    @Bean ZipkinRestTemplateCustomizer myCustomizer() {
        return new ZipkinRestTemplateCustomizer() {
            @Override
            void customize(RestTemplate restTemplate) {
                // customize the RestTemplate
            }
        };
    }
}

如果,但是,您希望完全控制创建RestTemplate对象的过程,则必须创建zipkin2.reporter.Sender类型的bean。spring-doc.cadn.net.cn

    @Bean Sender myRestTemplateSender(ZipkinProperties zipkin,
            ZipkinRestTemplateCustomizer zipkinRestTemplateCustomizer) {
        RestTemplate restTemplate = mySuperCustomRestTemplate();
        zipkinRestTemplateCustomizer.customize(restTemplate);
        return myCustomSender(zipkin, restTemplate);
    }