13. 将 Span 发送到 Zipkin
默认情况下,如果您作为依赖项添加到项目中,则当 span 关闭时,它将通过 HTTP 发送到 Zipkin。
通信是异步的。
您可以通过设置属性来配置 URL,如下所示:spring-cloud-starter-zipkin
spring.zipkin.baseUrl
spring.zipkin.baseUrl: https://192.168.99.100:9411/
如果要通过服务发现查找 Zipkin,可以在 URL 中传递 Zipkin 的服务 ID,如以下示例中的服务 ID 所示:zipkinserver
spring.zipkin.baseUrl: https://zipkinserver/
默认情况下,api 路径将设置为或取决于编码器版本。如果要使用自定义 api 路径,可以使用以下属性(空大小写,设置 “”)进行配置:api/v2/spans
api/v1/spans
spring.zipkin.apiPath: v2/path2
要禁用此功能,只需设置为 'false.spring.zipkin.discoveryClientEnabled
启用 Discovery Client 功能后,Sleuth 用于查找 Zipkin 服务器的 URL。这意味着
,您可以设置负载平衡配置,例如通过 Ribbon。LoadBalancerClient
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
要自定义通过 HTTP 向 Zipkin 发送 span 的 span,您可以注册
豆子。RestTemplate
ZipkinRestTemplateCustomizer
@Configuration
class MyConfig {
@Bean ZipkinRestTemplateCustomizer myCustomizer() {
return new ZipkinRestTemplateCustomizer() {
@Override
void customize(RestTemplate restTemplate) {
// customize the RestTemplate
}
};
}
}
但是,如果要控制创建对象的整个过程,则必须创建一个 type 为 的 bean。RestTemplate
zipkin2.reporter.Sender
@Bean Sender myRestTemplateSender(ZipkinProperties zipkin,
ZipkinRestTemplateCustomizer zipkinRestTemplateCustomizer) {
RestTemplate restTemplate = mySuperCustomRestTemplate();
zipkinRestTemplateCustomizer.customize(restTemplate);
return myCustomSender(zipkin, restTemplate);
}