13. 将Span发送到Zipkin
默认情况下,如果你将spring-cloud-starter-zipkin作为依赖添加到项目中,当span关闭时,会通过HTTP发送到Zipkin。
通信是异步的。
你可以通过设置spring.zipkin.baseUrl属性来配置URL,如下所示:
spring.zipkin.baseUrl: https://192.168.99.100:9411/
如果你想通过服务发现找到Zipkin,可以在URL中传递Zipkin的服务ID,如下面为zipkinserver服务ID的例子所示:
spring.zipkin.baseUrl: https://zipkinserver/
默认情况下,api path 将设置为 0 或 1,具体取决于编码器版本。如果要使用自定义 api 路径,可以使用以下属性进行配置(空情况,设置为空):
spring.zipkin.apiPath: v2/path2
要禁用此功能,请将spring.zipkin.discoveryClientEnabled设置为`false。
当启用发现客户端功能时,Sleuth 使用 LoadBalancerClient 来查找 Zipkin 服务器的 URL。这意味着您可以使用 Ribbon 等方式设置负载均衡配置。
zipkinserver:
ribbon:
ListOfServers: host1,host2
如果您的类路径中同时具有 web、rabbit、activemq 或 kafka,则可能需要选择您希望将跨度发送到 zipkin 的方式。
为此,请设置属性 4。。
下面的示例展示了如何为 web 设置发送器类型:
spring.zipkin.sender.type: web
要通过 HTTP 将跨度发送到 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);
}