Spring Cloud Sleuth:将数据从远程系统导出到本地 Zipkin
Spring Cloud Sleuth: Export data from remote system to local Zipkin
在我的 Spring 启动应用程序中,我使用 spring-cloud-starter-sleuth(版本 Hoxton.SR10)进行跟踪。它(仍然)是一个整体应用程序,因此我广泛使用 @NewSpan
注释来创建新的跨度。
在我的开发环境中,我也使用 spring-cloud-starter-zipkin,效果很好。
但是在我们客户的服务器上,我无权访问任何 Zipkin 服务器,也不允许安装一个。是否有可能保存数据 Spring 发送到 Zipkin 并将其导入到我的本地 Zipkin 服务器?
解决方案感谢 Marcin 的启发:
@Configuration
@ConditionalOnProperty(name = "custom.property", havingValue = "true")
public class SleuthConfiguration {
@Bean("zipkinSender")
Sender restTemplateSender() {
return new Sender() {
public Encoding encoding() { return Encoding.JSON; }
public int messageMaxBytes() { return Integer.MAX_VALUE; }
public int messageSizeInBytes(List<byte[]> list) { return Integer.MAX_VALUE; }
@Override
public Call<Void> sendSpans(List<byte[]> list) {
String result = convertByteArrayToList(list);
saveToFile(result);
return new Call.Base<Void>() {...};
}
};
}
}
自己实现 convertByteArrayToList
和 saveToFile
,因为我的解决方案依赖于自定义库。
您可以创建自己的 SpanHandler
bean,将 FinishedSpan
转换为 JSON 并将其存储在驱动器上的某个位置。然后你可以迭代 jsons 并将它们上传到 Zipkin 服务器
在我的 Spring 启动应用程序中,我使用 spring-cloud-starter-sleuth(版本 Hoxton.SR10)进行跟踪。它(仍然)是一个整体应用程序,因此我广泛使用 @NewSpan
注释来创建新的跨度。
在我的开发环境中,我也使用 spring-cloud-starter-zipkin,效果很好。
但是在我们客户的服务器上,我无权访问任何 Zipkin 服务器,也不允许安装一个。是否有可能保存数据 Spring 发送到 Zipkin 并将其导入到我的本地 Zipkin 服务器?
解决方案感谢 Marcin 的启发:
@Configuration
@ConditionalOnProperty(name = "custom.property", havingValue = "true")
public class SleuthConfiguration {
@Bean("zipkinSender")
Sender restTemplateSender() {
return new Sender() {
public Encoding encoding() { return Encoding.JSON; }
public int messageMaxBytes() { return Integer.MAX_VALUE; }
public int messageSizeInBytes(List<byte[]> list) { return Integer.MAX_VALUE; }
@Override
public Call<Void> sendSpans(List<byte[]> list) {
String result = convertByteArrayToList(list);
saveToFile(result);
return new Call.Base<Void>() {...};
}
};
}
}
自己实现 convertByteArrayToList
和 saveToFile
,因为我的解决方案依赖于自定义库。
您可以创建自己的 SpanHandler
bean,将 FinishedSpan
转换为 JSON 并将其存储在驱动器上的某个位置。然后你可以迭代 jsons 并将它们上传到 Zipkin 服务器