当前位置: 首页 > 知识库问答 >
问题:

使用spring sleuth向应用程序的每个范围添加标记

姬选
2023-03-14

我正在尝试在我的应用程序中添加一些标记到所有跟踪中。我尝试扩展DefaultMessageSpanCustomizer,但没有成功,如以下文档所示

@Component
class SpanCustomizerConfig extends DefaultMessageSpanCustomizer {

  @Value("${spring.application.name}")
  private String appName;

  @Override
  public Span customizeHandle(
      final Span spanCustomizer, final Message<?> message, final MessageChannel messageChannel) {
    return super.customizeHandle(spanCustomizer, message, messageChannel)
        .tag("app", this.appName)
        .tag("container", this.appName)
        .tag("component", "api")
        .tag("channelName", this.channelName(messageChannel));
  }

  @Override
  public Span.Builder customizeSend(
      final Span.Builder builder, final Message<?> message, final MessageChannel messageChannel) {
    return super.customizeSend(builder, message, messageChannel)
        .tag("app", this.appName)
        .tag("container", this.appName)
        .tag("component", "api")
        .tag("channelName", this.channelName(messageChannel));
  }
}

但不幸的是,我不能让它工作。是否有人成功地尝试为每个应用程序跟踪添加一些标记?

非常感谢你的帮助。

乔纳森。

共有1个答案

盖嘉庆
2023-03-14

如果您使用的是Sleuth with Brave(默认选项),您可以通过以下方式注册自己的span处理程序,为每个span添加一个标记

@Bean
SpanHandler mySpanHandler() {
    return new SpanHandler() {
        @Override
    
        public boolean end(TraceContext context, MutableSpan span, Cause cause) {
            span.tag("add this tag", "for every span");
            return super.end(context, span, cause);
        }
    };
}

如果您使用的是Spring Cloud Sleuth OTel,请注册一个类型为SpanExitter的bean并更改跨度。您可以检查https://github.com/spring-projects-experimental/spring-cloud-sleuth-otel/blob/v1.1.0-M4/spring-cloud-sleuth-otel/src/main/java/org/springframework/cloud/sleuth/otel/bridge/ArrayListSpanProcessor.java以供参考。您需要覆盖您可以访问ReadWriteSpanonStart方法。在那里,您可以在启动时修改所有跨度

 类似资料:
  • 或者 我还尝试在没有文件的情况下实现这一点,结果成功了。 如何添加带有文件的应用程序图标?

  • 我一直在探索构建我的ColdFusion应用程序的不同方法,我正在寻找一些关于提供应用范围UDF的最佳方式的意见。 对于我的每一个应用程序,我通常都会使用一些不属于任何特定对象的额外功能。主要是数据操作。我希望这些功能在我的整个应用程序中都可用,既可以在CFM模板中使用,也可以在应用程序实例化的CFC中使用。 在我看来,有各种各样的方法来实现这一点,但它们都有自己的局限性: > 创建一个基本的Ut

  • 我有一个java应用程序,需要部署在weblogic服务器中。我目前正在为该应用程序制作ear文件。我的ear文件中有一个ejb jar。我想将log4j2 jar添加到此应用程序中。所以我的文件夹结构是 目前,我已经将JAR放在APP-INF文件夹/lib和META-INF/application中。xml我把JAR放在了模块中。这是我的申请表。xml 但它不接受log4j罐子。有什么解决方案吗

  • 我在写R代码,其中有一个向量“x”,它包含1到100的值,我想创建另一个向量“y”,它在每n个范围内子集一个值的范围。我确信我可以使用rep()和seq(),但我无法找到获得所需的代码。下面是输出应该是什么样子 所以如果我有一个向量x 有什么想法吗?

  • 这与我的问题相反,在OpenDayLight中安装自定义功能或模块?。我希望使用Hello World应用程序并添加以下功能的: ODL-RestConf ODL-MDSal-APIDOCS ODL-openflowplugin-flow-services ODL-openflowplugin-app-table-miss-enforcer ODL-OpenFlowPlugin-NXM-Exten

  • 问题内容: 有没有一种方法可以在外部设置标头? 登录用户后,我从服务器获取了Auth-Token,我需要将其作为HTTP标头添加到以下所有请求中。 问题答案: 似乎规范了键名。