春云侦探是如何工作的?

Posted

技术标签:

【中文标题】春云侦探是如何工作的?【英文标题】:How spring cloud sleuth works? 【发布时间】:2018-07-13 21:08:40 【问题描述】:

spring cloud sleuth 如何在幕后工作?它还能够跟踪库调用吗?我有一个使用库 B 的 Spring Boot 项目 A。对项目 A 中端点的任何命中都由侦探跟踪,但是当我尝试在库 B 上命中休息控制器时,侦探无法跟踪请求。有没有办法告诉侦探也跟踪库调用?

【问题讨论】:

【参考方案1】:

直到 2.0 版的 Spring Cloud Sleuth 都有自己的跟踪器,并且从 2.0 开始它正在重用 https://github.com/openzipkin/brave 。跟踪器负责传递跟踪上下文。这是什么意思?这意味着您必须传播跟踪信息:

当前跨度是多少(跨度是一个工作单元) 当前跟踪是什么(跟踪是构成单个业务操作的所有工作单元的 ID)

跟踪信息在进程内(不同库、线程等)和进程外(通过 Http 标头、消息传递等)传播,Sleuth 能够处理此信息并将其存储在本地以继续痕迹。

您需要使用 SpanInjectorSpanExtractor(在 Sleuth 2.0 之前)或 Brave 的处理程序机制来正确处理跨度的接收和发送。

【讨论】:

谢谢马尔辛!! 嗨,@Marcin-Grzejszczak,有什么方法可以查看在标题中设置了哪些值,以及在设置它们时,我们可以在日志中打印这些详细信息吗? 您可以打开调试日志记录,然后您可能会看到为给定的仪器设置了哪个跨度。但是最好的方法是使用 Wireshark 或类似的东西来检查包和标题,或者只是在接收方打印出来 谢谢,@Marcin-Grzejszczak。我们在 slueth 中是否有任何内置类来打印标题?在这种情况下,跟踪过滤器会有所帮助吗? 创建一个在跟踪过滤器之后运行的普通过滤器并打印出标题

以上是关于春云侦探是如何工作的?的主要内容,如果未能解决你的问题,请参考以下文章

Spring Cloud Sleuth 介绍

春云数据流和气流

如何从使用云侦探的跟踪中排除一些使用 Feign 的调用

Spring Cloud Sleuth的特点

春云 |假装Hytrix |首次通话超时

数据分析师:数据分析工作常见七种错误及其规避技巧(转自经管之家)