【发布时间】:2021-12-25 07:04:09
【问题描述】:
如果服务的流量很大,跟踪每次调用并保存相应的链接日志成本很高,但是一旦设置了采样率,可能会错过一些有错误的跟踪。如果我想保留一些费率收集,并且必须跟踪有错误的跟踪,这在spring-cloud-sleuth 中是否可能?如果没有,有解决办法吗?
【问题讨论】:
标签: trace spring-cloud-sleuth zipkin
如果服务的流量很大,跟踪每次调用并保存相应的链接日志成本很高,但是一旦设置了采样率,可能会错过一些有错误的跟踪。如果我想保留一些费率收集,并且必须跟踪有错误的跟踪,这在spring-cloud-sleuth 中是否可能?如果没有,有解决办法吗?
【问题讨论】:
标签: trace spring-cloud-sleuth zipkin
Spring Cloud Sleuth 将采样决策下推至跟踪器实现,您需要创建 SamplerFunction 或 Sampler 来执行此操作,请参阅文档:
更新:
采样是一个早期的决定,因为跟踪有一些开销,而早期采样可以让你的应用程序免于这种开销。
如果您想在最后过滤掉您的跨度,您可以设置一个始终采样器和一个SpanHandler,您可以在其中访问Span(error、tags 等),您还可以保留/删除它们基于此(您可以将采样器注入到您的处理程序并将其逻辑应用于其余的跨度)。
【讨论】:
head-based采样器,看来只有tail-based采样器才能采集到故障痕迹。
spanhandler ,我只会报告发生错误的日志(例如报告给 zipkin)。 Service 1 将远程呼叫services 2 和service 3。调用service 2时出错,调用service 3时正常。但是service 3无法感知其他服务的错误,所以此时service 3节点上这个span的日志会被丢弃。那么整个链接是不完整的。有问题吗?
brave 不再维护了吗? Adrian Cole去哪儿了,好像在2021年突然消失了一样。我问这个是因为spring-cloud-sleuth使用brave作为跟踪库......@Jonatan Ivanov