首页 > 解决方案 > 在代理/zuul-gateway 中托管 zipkin

问题描述

zipkin 是一种用于跟踪请求以及跟踪服务处理请求所花费的时间跨度的工具,在多服务项目中很有用它不需要太多的设置你只需要在你的服务中添加 zipkin 依赖项并定义一个采样器豆。

在项目中添加以下依赖项

compile group: 'org.springframework.cloud', name: 'spring-cloud-starter-zipkin', version: '1.3.2.RELEASE'

在你的项目中添加采样器 bean

`    @Value("${spring.sleuth.sampler.percentage}")
  String percentage;

  @Bean 
  public PercentageBasedSampler defaultSampler() { 
    SamplerProperties configuration= new SamplerProperties();
    configuration.setPercentage(Float.parseFloat(percentage));
    return new PercentageBasedSampler(configuration); 
  }  

`

当您只想将您的请求跟踪的一部分发送到 zipkin 时添加上面的 bean 否则定义一个 bean

` @Bean 
  public AlwaysSampler defaultSampler() { return new AlwaysSampler();
  }  
`

添加 spring.zipkin.base-url=localhost:9411你的属性文件并在上面定义的相同端口上托管 zipkin 服务器。

但是,如果您使用 api-gateway 访问 zipkin(在云中部署的情况下)或内部代理,您可能会在通过网关访问时遇到损坏的 ui 元素的问题,在这种情况下,我使用带有属性的 zuul:

zuul.routes.zipkin.path=/zipkin/* zuul.routes.zipkin.url=http://localhost:9411

标签: springnetflix-zuulzipkin

解决方案


我找到的解决 zipkin thru 网关损坏 ui 的最简单解决方案是更改 zipkin 服务器内 zipkin-server-shared.yml 文件的以下属性

zipkin: ui: base-path: /zipkin 将上述属性更改为

zipkin: ui: base-path: /api/tracing/zipkin

并将您的zuul路径更改为以下 zuul.routes.zipkin.path=/api/tracing/*

而不是使用以下网址访问 zipkin

https://gatewayhost:port/api/tracing/zipkin/

注意配置中的小细节,不要忘记在 url 中的 zipkin 后面加上尾随“/”


推荐阅读