1

Linkerd 的文档解释了如何使用该命令跟踪失败的请求tap,但在某些情况下成功率可能非常高,大约每小时只有一个失败的请求。如何追踪那些被认为“不成功”的请求?也许一种在某处记录它们的方法?

4

1 回答 1

0

听起来您正在寻找一种方法来配置 Linkerd 以捕获失败的请求并将请求数据转储到某处,目前 Linkerd 不支持这种方法。

您确实有几个使用当前功能的选项来获取您正在寻找的一些信息。Linkerd 代理将错误率记录为 Prometheus 指标,Grafana 使用这些指标来呈现仪表板。当您观察到这些罕见错误之一时,您可以使用 Grafana 中的时间窗口功能来查找错误发生的准确时间,然后参考服务日志以查看那里是否有任何相应的错误消息。如果错误来自服务本身,那么您可以添加尽可能多的有关请求的日志信息,以帮助解决问题。

另一个我自己没有尝试过的选项是集成linkerd tap到您的监控系统中以收集请求信息并保存失败请求的数据。这里有一个警告,您需要小心不要让 tap 命令运行,因为它会不断地从 tap 控制平面组件收集数据,这将增加该服务的负载。

也许更直接的方法是确保将所有代理日志和服务日志写入 Splunk、ELK(Elasticsearch、Logstash 和 Kibana)或 Loki 等长期存储。然后您可以设置警报(例如 Prometheus alert-manager)在请求失败时发送通知,然后您可以将失败的时间与已收集的日志相匹配。

您还可以考虑将分布式跟踪添加到您的环境中。根据您使用的实现(jaeger、zipkin 等),我认为该界面将允许您检查每个跟踪的请求的详细信息。

最后一个想法:由于 Linkerd 是一个开源项目,我建议打开一个功能请求,其中包含您希望看到的行为的细节,并与社区合作以实现它。我知道路线图包括能够看到请求主体使用的计划linkerd tap,这听起来像是拥有这些主体的一个很好的用例。

于 2020-12-09T05:31:12.813 回答