13. 将 Span 发送到 Zipkin

默认情况下,如果添加spring-cloud-starter-zipkin作为项目的依赖项,当 span 关闭时,它会通过 HTTP 发送到 Zipkin。 通信是异步的。 您可以通过设置spring.zipkin.baseUrl属性,如下所示: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 将设置为api/v2/spansapi/v1/spans取决于编码器版本。如果要使用自定义 api 路径,可以使用以下属性(空大小写,设置 “”)进行配置:spring-doc.cadn.net.cn

spring.zipkin.apiPath: v2/path2

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

启用 Discovery Client 功能后,Sleuth 使用LoadBalancerClient以查找 Zipkin 服务器的 URL。这意味着 ,您可以设置负载平衡配置,例如通过 Ribbon。spring-doc.cadn.net.cn

zipkinserver:
  ribbon:
    ListOfServers: host1,host2

如果您在 Classpath 上同时拥有 web、rabbit、activemq 或 kafka,则可能需要选择要将 span 发送到 zipkin 的方法。 为此,请将web,rabbit,activemqkafkaspring.zipkin.sender.type财产。 以下示例显示了如何设置web:spring-doc.cadn.net.cn

spring.zipkin.sender.type: web

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

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

但是,如果您想控制创建RestTemplateObject 中,您必须创建一个zipkin2.reporter.Sender类型。spring-doc.cadn.net.cn

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