在 proxy/zuul-gateway 中托管 zipkin

hosting zipkin inside proxy/zuul-gateway

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

在项目中添加如下依赖

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 与 propertis 一起使用为:

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

我找到的解决 zipkin through gateway 损坏的 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/*

然后使用 follwing url

访问 zipkin

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

注意配置中的小细节,不要忘记在 url

中的 zipkin 后面加上尾随的“/”