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

Spring cloud sleuth添加标签

万俟承望
2023-03-14

我正在尝试使用spring cloud sleuth在我的kotlin应用程序中实现分布式跟踪。我正在把这些数据发送给数据狗。现在我可以跟踪日志了,但我想向span中添加一些额外的数据。假设我想添加关于用户的信息,并能够在datadog中看到它。span标签对它有好处吗?我正在将json格式的日志发送到datadog,但我不能在这里添加标记。(注入traceId和spanId)。登录配置:

        <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
            <providers>
                <timestamp/>
                <version/>
                <message/>
                <loggerName/>
                <threadName/>
                <logLevel/>
                <logLevelValue/>
                <callerData/>
                <stackTrace/>
                <rootStackTraceElement/>
                <context/>
                <mdc/>
                <tags/>
                <logstashMarkers/>
                <arguments/>
            </providers>
        </encoder>

格拉德尔:

implementation("org.jetbrains.kotlin:kotlin-reflect")
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
implementation("org.springframework.cloud:spring-cloud-starter-netflix-eureka-server")
implementation("org.springframework.cloud:spring-cloud-starter-vault-config")
implementation("org.springframework.cloud:spring-cloud-starter-sleuth")
implementation("org.springframework.boot:spring-boot-starter-actuator")
implementation("ch.qos.logback:logback-classic:1.2.3")
implementation("net.logstash.logback:logstash-logback-encoder:6.6")
implementation("org.zalando:logbook-spring-boot-starter:2.4.2")
developmentOnly("org.springframework.boot:spring-boot-devtools")
runtimeOnly("io.micrometer:micrometer-registry-datadog")
testImplementation("org.springframework.boot:spring-boot-starter-test")

加上我正在尝试的标签

@NewSpan
fun newSpanTest() {
    tracer.currentSpan()!!.tag("user", "123")
    log.info("other span")
    otherTestService.sameSpanTest()
}

日志示例:

{"@timestamp":"2021-03-09T21:04:46.953+01:00","@version":"1","message":"other span","logger_name":"com.microservices.text.rpg.servicediscovery.TestService","thread_name":"http-nio-8761-exec-3","level":"INFO","level_value":20000,"caller_class_name":"com.microservices.text.rpg.servicediscovery.TestService","caller_method_name":"newSpanTest","caller_file_name":"TestService.kt","caller_line_number":25,"traceId":"e61fd165d7c84776","spanId":"5e61f9b51b51619b"}

那个“用户”不应该被注入MDC,然后注入日志吗?

共有1个答案

柴浩大
2023-03-14

spring.sleuth.baggage。相关字段自动将行李值设置为Slf4j的MDC,因此您只需设置行李字段。

我想你使用现成的侦探(使用勇敢):

  1. 第一,熟悉标签、行李和它们的差异;你也可以在勇敢的文档中读到它们
  2. 检查Brave的ScopeDecoratorCor的ScopeDecoratorMDCScopeDecorator

spring.sleuth.baggage。相关字段属性自动将行李值设置为Slf4j的MDC,因此您只需设置行李字段。

此外,使用MDCScopeDecorator,您可以通过编程方式将baggage值设置为Slf4j的MDC,您可以在Sleuth文档中看到如何做到这一点:

// configuration
@Bean
BaggageField countryCodeField() {
    return BaggageField.create("country-code");
}

@Bean
ScopeDecorator mdcScopeDecorator() {
    return MDCScopeDecorator.newBuilder()
            .clear()
            .add(SingleCorrelationField.newBuilder(countryCodeField())
                    .flushOnUpdate()
                    .build())
            .build();
}

// service
@Autowired
BaggageField countryCodeField;

countryCodeField.updateValue("new-value");
 类似资料:
  • 我很难找到任何合适的例子来演示如何找到跟踪并将其存储在本地MySQL数据库中。我使用zipkin服务器来可视化我对微服务的分布式跟踪。如果有人在最新版本中与gradle一起使用Spring Cloud Sleuth,请提交一个可以帮助我的完美示例。 这里'我的代码: 建筑格拉德尔 应用性质 控制器。班 应用。班 我已经使用zipkin-server-2.23.2-exec jar在localhos

  • 标签通常用于帮助记录图表设计进程。例如,解释一组表对象。若要创建一个新的标签,点击工具栏的 “标签”按钮,并点击画布的任意位置。 在画布中标签对象的弹出式菜单选项包括: 选项 描述 编辑 更改标签的内容。 剪切 从图表移除标签并放它在剪贴板。 复制 从图表复制标签到剪贴板。 粘贴 将剪贴板的内容贴到图表。 选择全部标签 在图表中选择全部标签。 删除 从图表中删除标签。 调整适合大小 自动调整标签的

  • 标签通常用于帮助记录图表设计进程。例如,解释一组表对象。若要创建一个新的标签,点击工具栏的 “标签”按钮,并点击画布的任意位置。 在画布中标签对象的弹出式菜单选项包括: 选项 描述 编辑 更改标签的内容。 剪切 从图表移除标签并放它在剪贴板。 复制 从图表复制标签到剪贴板。 粘贴 将剪贴板的内容贴到图表。 选择全部标签 在图表中选择全部标签。 删除 从图表中删除标签。 调整适合大小 自动调整标签的

  • 标签通常用于帮助记录图表设计进程。例如,解释一组表对象。若要创建一个新的标签,点击工具栏的 按钮,并点击画布的任意位置。 在画布中标签对象的弹出式菜单选项包括: 选项 描述 编辑 更改标签的内容。 剪切 从图表移除标签并放它在剪贴板。 复制 从图表复制标签到剪贴板。 粘贴 将剪贴板的内容贴到图表。 选择全部标签 在图表中选择全部标签。 删除 从图表中删除标签。 调整适合大小 自动调整标签的大小以适

  • 标签通常用于帮助记录图表设计进程。例如,解释一组表对象。若要创建一个新的标签,点击工具栏的 按钮,并点击画布的任意位置。 在画布中标签对象的弹出式菜单选项包括: 选项 描述 编辑 更改标签的内容。 剪切 从图表移除标签并放它在剪贴板。 复制 从图表复制标签到剪贴板。 粘贴 将剪贴板的内容贴到图表。 选择全部标签 在图表中选择全部标签。 删除 从图表中删除标签。 调整适合大小 自动调整标签的大小以适

  • 标签通常用于帮助记录图表设计进程。例如,解释一组表对象。若要创建一个新的标签,点击工具栏的 按钮,并点击画布的任意位置。 在画布中标签对象的弹出式菜单选项包括: 选项 描述 编辑 更改标签的内容。 剪切 从图表移除标签并放它在剪贴板。 复制 从图表复制标签到剪贴板。 粘贴 将剪贴板的内容贴到图表。 选择全部标签 在图表中选择全部标签。 删除 从图表中删除标签。 调整适合大小 自动调整标签的大小以适

  • 使用tag命令来添加标签,在<tagname>执行标签的名称。 $ git tag <tagname> 在HEAD指向的提交里添加名为apple的标签,请执行以下的命令。 $ git tag apple 如果没有使用参数而执行tag,可以显示标签列表。 $ git tag apple 如果在log命令添加 --decorate选项执行,可以显示包含标签资料的历史记录。 $ git log --de

  • 文本标签通常用于帮助记录仪表板,例如添加仪表板标题、URL 链接。 添加一个文本标签 在仪表板选项卡中,点击 “添加文本”。 将其放在仪表板上。 输入标题。 属性 文本标签的可用属性: 选项 描述 位置 自定义标签的位置。 大小 自定义标签的大小。 标题 输入标签的标题。 对齐方式 指定标签标题的文本对齐方式。 字体 设置标签标题的字体样式。 粗体 将粗体样式应用于标签标题。 斜体 将斜体样式应用