codecamp

SpringCloud 将跨度发送到Zipkin

默认情况下,如果将spring-cloud-starter-zipkin作为依赖项添加到项目,则关闭跨度后,跨度将通过HTTP发送到Zipkin。通信是异步的。您可以通过设置spring.zipkin.baseUrl属性来配置URL,如下所示:

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

如果您想通过服务发现来找到Zipkin,则可以在URL内传递Zipkin的服务ID,如以下zipkinserver服务ID的示例所示:

spring.zipkin.baseUrl: http://zipkinserver/

要禁用此功能,只需将spring.zipkin.discoveryClientEnabled设置为`false。

启用发现客户端功能后,Sleuth使用LoadBalancerClient查找Zipkin服务器的URL。这意味着您可以设置负载平衡配置,例如通过Ribbon。

zipkinserver:
  ribbon:
    ListOfServers: host1,host2

如果在类路径上一起有web,rabbit或kafka,则可能需要选择将spans发送到zipkin的方式。为此,请将webrabbitkafka设置为spring.zipkin.sender.type属性。以下示例显示了为web设置发件人类型:

spring.zipkin.sender.type: web

要自定义通过HTTP发送spans到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);
	}
SpringCloud 主机定位器
SpringCloud Zipkin流Span消费者
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

三、Spring Cloud Netflix

SpringCloud Hystrix超时和Ribbon客户

SpringCloud 重试失败的请求

五、Spring Cloud Stream

六、SpringCloud Binder实现

SpringCloud 重试RabbitMQ Binder

SpringCloud Dead-Letter队列处理

八、Spring Cloud Sleuth

SpringCloud 当前Span

十二、Spring Cloud for Cloud Foundry

十三、Spring Cloud Contract

Spring Cloud Contract验证程序设置

SrpingCloud Gradle项目

十五、Spring Cloud网关

Spring Cloud 配置路由谓词工厂和网关过滤工厂

Spring Cloud TLS / SSL

Spring Cloud网关配置

SpringCloud 故障排除

十八、Spring Cloud GCP

Spring Cloud GCP Spring资源

Spring Cloud Spring JDBC

Spring Cloud Redis的Cloud Memorystore

Spring Cloud 云身份识别代理(IAP)身份验证

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }