繁体   English   中英

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>() {...};
           }
        };
     }
}

自己实现convertByteArrayToListsaveToFile ,因为我的解决方案依赖于自定义库。

您可以创建自己的SpanHandler bean,它采用FinishedSpan ,转换为 JSON 并将其存储在驱动器的某个位置。 然后你可以遍历 jsons 并将它们上传到 Zipkin 服务器

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM