我的公司有定制的分布式追踪解决方案。我已经为它准备好了Java客户机/代理库,它能够向服务器发送跟踪/跨度。
然而,我想将其与Spring Boot Sleuth/Brave集成,以便从Brave实现某种桥接,因此Brave将使用我的客户机/代理库发送跟踪/跨度。
如何在Brave中定制仅发送部分?
另一种方法是从头开始实现所有Sleuth api接口(Tracer、Span、TraceContext等),这是一项巨大的任务。
我想使用勇敢的实现,只是为了注入某种桥/适配器,它将使用我的定制客户机/代理。
我不建议实现所有的Sleuth接口,在这种情况下,您正在编写跟踪库(您正在重写Brave)。
您可以实现zipkin2。记者发送方
接口并从中创建一个@Bean
,下面是一个示例:
public class SoutSender extends Sender {
@Override
public Encoding encoding() {
return JSON;
}
@Override
public int messageMaxBytes() {
return 500 * 1024; //500 KiB
}
@Override
public int messageSizeInBytes(List<byte[]> encodedSpans) {
return encodedSpans.stream()
.mapToInt(encodedSpan -> encodedSpan.length)
.sum();
}
@Override
public Call<Void> sendSpans(List<byte[]> encodedSpans) {
encodedSpans.stream()
.map(String::new)
.forEach(System.out::println);
return Call.create(null);
}
}
你需要创建一个报告程序
@Bean
Reporter<Span> soutReporter(SoutSender soutSender) {
return AsyncReporter.create(soutSender);
}
@Bean
Sender soutSender(SoutSender sender) {
return new SoutSender();
}
这将注册一个额外的报告者,如果您只想保留自己的报告者,而不想向zipkin和您自己的系统报告,您需要相应地命名bean,请参阅文档:https://docs.spring.io/spring-cloud-sleuth/docs/current/reference/html/project-features.html#overriding-zipkin的自动配置
我想在日志文件的开头写入自定义头行。自定义头是日期/时间,XML文件名, 在log4j中,我可以通过扩展PatternLayout来创建自定义头。 我为自定义头包含了PatternLayout的log4j属性config和子类CustomFileHeaderLayout。工作很好。 log4j.属性
我正在使用侦探2.0.x,我想添加我自己的跟踪ID,除了它自己的。 我正在浏览给定的链接 https://cloud.spring.io/spring-cloud-static/spring-cloud-sleuth/2.0.0.RC2/single/spring-cloud-sleuth.html#_propagation 我想修改跟踪如下代码:-公共静态最终字符串TAG _ NAME = "
问题内容: 问题 我希望某些观点仅适用于网站的高级用户。 在项目中的各种应用程序中如何使用此装饰器? 问题答案: 你不必为此编写自己的装饰器,就像中已经包含的那样。 还有一个扩展此装饰器的代码段(),该代码段非常适合你的用例。 而且,要(重新)使用装饰器,只需将装饰器放在路径中的模块中,即可从任何其他模块导入它。
我想为Atom编写一个命令,它由两个或多个预先存在的命令组成,比如“Select Line”和“Cut”。我该怎么做?
我正在使用SpringBoot 2.4.8(它使用logback classic 1.2.3),我想配置一个自定义转换器,将多行堆栈跟踪折叠为一行(与这个问题相同)。 假设我有一段代码片段,出于测试目的故意抛出一个异常: 当我定义了转换规则并将符号添加到模式中时,logback只会忽略错误日志: logback.xml: CompressedStackTraceConverter.java: 当我
问题内容: 假设您执行 e.printStackTrace() ,则捕获到一个异常并在标准输出(例如控制台)上获得以下内容: 现在,我想将其发送给log4j之类的记录器,以获取以下信息: 我怎样才能做到这一点? 问题答案: 您将异常直接传递给记录器,例如 取决于log4j来呈现堆栈跟踪。