spring - 在代理/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
解决方案
我找到的解决 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 后面加上尾随“/”
推荐阅读
- eclipse-hono - 如何使用客户端证书对 Hono 进行身份验证?
- wordpress - 在单元格中包含当前日期的整行突出显示或加粗字体
- android - Firebase 动态链接 PendingDynamicLinkData 返回 null android
- google-apps-script - 将电子邮件自动定向到 Google 表单提交上的特定地址
- python - 无法在另一个 Python 脚本中使用来自 Python 函数的属性
- laravel - 随时随地在 Laravel 中保存关系
- google-maps - 超出此 API 错误的请求配额
- python-3.x - Scrapy 不使用来自 settings.py 的参数
- android - 如何将当前触地的焦点从视图 A 切换到视图 B?
- c++ - 正态分布的逆生存函数和PPF(ICDF)?