13. 将 Span 发送到 Zipkin
默认情况下,如果添加spring-cloud-starter-zipkin
作为项目的依赖项,当 span 关闭时,它会通过 HTTP 发送到 Zipkin。
通信是异步的。
您可以通过设置spring.zipkin.baseUrl
属性,如下所示:
spring.zipkin.baseUrl: https://192.168.99.100:9411/
如果要通过服务发现查找 Zipkin,可以在 URL 中传递 Zipkin 的服务 ID,如以下示例所示zipkinserver
服务 ID:
spring.zipkin.baseUrl: https://zipkinserver/
默认情况下,api path 将设置为api/v2/spans
或api/v1/spans
取决于编码器版本。如果要使用自定义 api 路径,可以使用以下属性(空大小写,设置 “”)进行配置:
spring.zipkin.apiPath: v2/path2
要禁用此功能,只需将spring.zipkin.discoveryClientEnabled
设置为 'false。
启用 Discovery Client 功能后,Sleuth 使用LoadBalancerClient
以查找 Zipkin 服务器的 URL。这意味着
,您可以设置负载平衡配置,例如通过 Ribbon。
zipkinserver:
ribbon:
ListOfServers: host1,host2
如果您在 Classpath 上同时拥有 web、rabbit、activemq 或 kafka,则可能需要选择要将 span 发送到 zipkin 的方法。
为此,请将web
,rabbit
,activemq
或kafka
到spring.zipkin.sender.type
财产。
以下示例显示了如何设置web
:
spring.zipkin.sender.type: web
要自定义RestTemplate
通过 HTTP 将 span 发送到 Zipkin,您可以注册
这ZipkinRestTemplateCustomizer
豆。
@Configuration
class MyConfig {
@Bean ZipkinRestTemplateCustomizer myCustomizer() {
return new ZipkinRestTemplateCustomizer() {
@Override
void customize(RestTemplate restTemplate) {
// customize the RestTemplate
}
};
}
}
但是,如果您想控制创建RestTemplate
Object 中,您必须创建一个zipkin2.reporter.Sender
类型。
@Bean Sender myRestTemplateSender(ZipkinProperties zipkin,
ZipkinRestTemplateCustomizer zipkinRestTemplateCustomizer) {
RestTemplate restTemplate = mySuperCustomRestTemplate();
zipkinRestTemplateCustomizer.customize(restTemplate);
return myCustomSender(zipkin, restTemplate);
}