Spring Cloud Sleuth 特点

2023-11-30 16:02 更新
  • 将跟踪和跨度ID添加到Slf4J MDC,因此您可以在日志聚合器中从给定的跟踪或跨度提取所有日志,如以下示例日志所示:

    2016-02-02 15:30:57.902  INFO [bar,6bfd228dc00d216b,6bfd228dc00d216b,false] 23030 --- [nio-8081-exec-3] ...
    2016-02-02 15:30:58.372 ERROR [bar,6bfd228dc00d216b,6bfd228dc00d216b,false] 23030 --- [nio-8081-exec-3] ...
    2016-02-02 15:31:01.936  INFO [bar,46ab0d418373cbc9,46ab0d418373cbc9,false] 23030 --- [nio-8081-exec-4] ...

    请注意来自MDC的[appname,traceId,spanId,exportable]条目:

    • spanId:发生的特定操作的ID。
    • appname:记录跨度的应用程序的名称。
    • traceId:包含跨度的延迟图的ID。
    • exportable:是否应将日志导出到Zipkin。您何时希望跨度不可导出?当您要将某些操作包装在Span中并且仅将其写入日志时。
  • 提供对常见的分布式跟踪数据模型的抽象:跟踪,spans(形成DAG),注释和键值注释。Spring Cloud Sleuth大致基于HTrace,但与Zipkin(Dapper)兼容。
  • Sleuth记录计时信息以帮助进行延迟分析。通过使用侦探,您可以查明应用程序中延迟的原因。
  • 编写Sleuth时不要过多记录日志,也不会导致生产应用程序崩溃。为此,Sleuth:

    • 在带内传播有关调用图的结构数据,并在带外传播其余数据。
    • 包括对诸如HTTP之类的层的自觉检测。
    • 包括用于管理数量的采样策略。
    • 可以向Zipkin系统报告以进行查询和可视化。
  • 从Spring应用程序(servlet过滤器,异步端点,休息模板,计划的操作,消息通道,Zuul过滤器和Feign客户端)中检测常见的入口和出口点。
  • Sleuth包含默认逻辑以跨HTTP或消息传递边界加入跟踪。例如,HTTP传播适用于Zipkin兼容的请求标头。
  • 侦查可以在进程之间传播上下文(也称为行李)。因此,如果您在Span上设置了行李元素,则该元素将通过HTTP或消息传递被下游发送到其他进程。
  • 提供一种创建或继续spans以及通过注释添加标签和日志的方法。
  • 如果spring-cloud-sleuth-zipkin在类路径上,则该应用生成并收集Zipkin兼容的跟踪。默认情况下,它通过HTTP将它们发送到本地主机(端口9411)上的Zipkin服务器。您可以通过设置spring.zipkin.baseUrl来配置服务的位置。

    • 如果您依赖spring-rabbit,则您的应用会将跟踪发送到RabbitMQ代理,而不是HTTP。
    • 如果您依赖spring-kafka并设置为spring.zipkin.sender.type: kafka,则您的应用会将跟踪发送到Kafka代理而不是HTTP。

 

spring-cloud-sleuth-stream已过时,不应再使用。

 如果使用Zipkin,请通过设置spring.sleuth.sampler.probability(默认值:0.1,即10%)来配置spans导出的概率。否则,您可能会认为Sleuth无法正常工作,因为它忽略了一些spans。

 始终设置SLF4J MDC,并且按先前显示的示例,登录用户可以立即在日志中看到跟踪和跨度ID。其他日志记录系统必须配置自己的格式化程序才能获得相同的结果。默认值如下:logging.pattern.level设置为%5p [${spring.zipkin.service.name:${spring.application.name:-}},%X{X-B3-TraceId:-},%X{X-B3-SpanId:-},%X{X-Span-Export:-}](这是Logback用户的Spring Boot功能)。如果您不使用SLF4J,则不会自动应用此模式。

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号