特征

优质
小牛编辑
141浏览
2023-12-01
  • 将跟踪和跨度添加到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
    • 导出 -日志是否应该被导出到Zipkin与否。你什么时候希望跨度不能出口?在这种情况下,你想在Span中包装一些操作,并将它写入日志。
  • 提供对共同分布式跟踪数据模型的抽象:trace,spans(形成DAG),注释,键值注释。松散地基于HTrace,但Zipkin(Dapper)兼容。
  • Sleuth记录定时信息以辅助延迟分析。使用窃贼,您可以精确定位应用程序中的延迟原因。Sleuth被写入不会记录太多,并且不会导致您的生产应用程序崩溃。

    • 传播有关您的呼叫图表带内的结构数据,其余的是带外。
    • 包括有意见的层次测试,如HTTP
    • 包括采样策略来管理卷
    • 可以向Zipkin系统报告查询和可视化
  • 仪器来自Spring应用程序(servlet过滤器,异步终结点,休息模板,调度操作,消息通道,zuul过滤器,假客户端)的通用入口和出口点。
  • Sleuth包括在http或消息传递边界上加入跟踪的默认逻辑。例如,http传播通过Zipkin兼容的请求标头工作。该传播逻辑是通过SpanInjectorSpanExtractor实现来定义和定制的。
  • Sleuth可以在进程之间传播上下文(也称为行李)。这意味着如果您设置了Span行李元素,那么它将通过HTTP或消息传递到其他进程发送到下游。
  • 提供创建/继续spans并通过注释添加标签和日志的方法。
  • 提供接受/删除spans的简单指标。
  • 如果spring-cloud-sleuth-zipkin,则应用程序将生成并收集Zipkin兼容的跟踪。默认情况下,它通过HTTP将其发送到localhost上的Zipkin服务器(端口9411)。使用spring.zipkin.baseUrl配置服务的位置。
  • 如果spring-cloud-sleuth-stream,则该应用将通过Spring Cloud Stream生成和收集跟踪。您的应用程序自动成为通过您的代理商发送的跟踪消息的生产者(例如RabbitMQ,Apache Kafka,Redis))。
重要如果使用Zipkin或Stream,请使用spring.sleuth.sampler.percentage(默认0.1,即10%)配置spans的百分比。否则你可能认为Sleuth不工作,因为它省略了一些spans。
注意始终设置SLF4J MDC,并且Logback用户将立即按照上述示例查看日志中的跟踪和跨度ID。其他日志记录系统必须配置自己的格式化程序以获得相同的结果。默认值为logging.pattern.level设置为%5p [${spring.zipkin.service.name:${spring.application.name:-}},%X{X-B3-TraceId:-},%X{X-B3-SpanId:-},%X{X-Span-Export:-}](这是回访用户的Spring Boot功能)。 这意味着如果您不使用SLF4J,则不会自动应用此模式