春云侦探是如何工作的?
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 能够处理此信息并将其存储在本地以继续痕迹。
您需要使用 SpanInjector
和 SpanExtractor
(在 Sleuth 2.0 之前)或 Brave 的处理程序机制来正确处理跨度的接收和发送。
【讨论】:
谢谢马尔辛!! 嗨,@Marcin-Grzejszczak,有什么方法可以查看在标题中设置了哪些值,以及在设置它们时,我们可以在日志中打印这些详细信息吗? 您可以打开调试日志记录,然后您可能会看到为给定的仪器设置了哪个跨度。但是最好的方法是使用 Wireshark 或类似的东西来检查包和标题,或者只是在接收方打印出来 谢谢,@Marcin-Grzejszczak。我们在 slueth 中是否有任何内置类来打印标题?在这种情况下,跟踪过滤器会有所帮助吗? 创建一个在跟踪过滤器之后运行的普通过滤器并打印出标题以上是关于春云侦探是如何工作的?的主要内容,如果未能解决你的问题,请参考以下文章