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:發(fā)生的特定操作的ID。
    • appname:記錄跨度的應用程序的名稱。
    • traceId:包含跨度的延遲圖的ID。
    • exportable:是否應將日志導出到Zipkin。您何時希望跨度不可導出?當您要將某些操作包裝在Span中并且僅將其寫入日志時。
  • 提供對常見的分布式跟蹤數據模型的抽象:跟蹤,spans(形成DAG),注釋和鍵值注釋。Spring Cloud Sleuth大致基于HTrace,但與Zipkin(Dapper)兼容。
  • Sleuth記錄計時信息以幫助進行延遲分析。通過使用偵探,您可以查明應用程序中延遲的原因。
  • 編寫Sleuth時不要過多記錄日志,也不會導致生產應用程序崩潰。為此,Sleuth:

    • 在帶內傳播有關調用圖的結構數據,并在帶外傳播其余數據。
    • 包括對諸如HTTP之類的層的自覺檢測。
    • 包括用于管理數量的采樣策略。
    • 可以向Zipkin系統(tǒng)報告以進行查詢和可視化。
  • 從Spring應用程序(servlet過濾器,異步端點,休息模板,計劃的操作,消息通道,Zuul過濾器和Feign客戶端)中檢測常見的入口和出口點。
  • Sleuth包含默認邏輯以跨HTTP或消息傳遞邊界加入跟蹤。例如,HTTP傳播適用于Zipkin兼容的請求標頭。
  • 偵查可以在進程之間傳播上下文(也稱為行李)。因此,如果您在Span上設置了行李元素,則該元素將通過HTTP或消息傳遞被下游發(fā)送到其他進程。
  • 提供一種創(chuàng)建或繼續(xù)spans以及通過注釋添加標簽和日志的方法。
  • 如果spring-cloud-sleuth-zipkin在類路徑上,則該應用生成并收集Zipkin兼容的跟蹤。默認情況下,它通過HTTP將它們發(fā)送到本地主機(端口9411)上的Zipkin服務器。您可以通過設置spring.zipkin.baseUrl來配置服務的位置。

    • 如果您依賴spring-rabbit,則您的應用會將跟蹤發(fā)送到RabbitMQ代理,而不是HTTP。
    • 如果您依賴spring-kafka并設置為spring.zipkin.sender.type: kafka,則您的應用會將跟蹤發(fā)送到Kafka代理而不是HTTP。

 

spring-cloud-sleuth-stream已過時,不應再使用。

 如果使用Zipkin,請通過設置spring.sleuth.sampler.probability(默認值:0.1,即10%)來配置spans導出的概率。否則,您可能會認為Sleuth無法正常工作,因為它忽略了一些spans。

 始終設置SLF4J MDC,并且按先前顯示的示例,登錄用戶可以立即在日志中看到跟蹤和跨度ID。其他日志記錄系統(tǒng)必須配置自己的格式化程序才能獲得相同的結果。默認值如下: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

公眾號
微信公眾號

編程獅公眾號