跟踪传播

了解如何跨应用程序和服务连接事件。

如果您希望使用 Sentry 观察的整体应用程序景观不仅包括单个服务或应用程序,分布式跟踪可以带来很大的价值。

在分布式系统中跟踪事件的上下文中,分布式跟踪充当强大的调试工具。想象您的应用程序是一个庞大且相互连接的部分网络。例如,您的系统可能分布在不同的服务器上,或者您的应用程序可能分为不同的后端和前端服务,每个服务可能有自己的技术栈。

当发生错误或性能问题时,由于系统的复杂性,很难确定根本原因。分布式跟踪帮助您跟踪事件在其复杂网络中的路径,记录每一步。通过检查这些跟踪,您可以重建导致问题的事件序列,识别涉及的具体组件,并理解它们的交互。这种详细的可见性使您能够更有效地诊断和解决问题,最终提高分布式系统的可靠性和性能。

以下是一个在 Sentry 中显示的分布式跟踪示例:

A full distributed trace in Sentry

此分布式跟踪显示了一个 Vue 应用程序的 pageload 向 Python 后端发出请求,然后该后端调用 Ruby 微服务的 /api 端点。

在后台,Sentry 通过在应用程序之间读取和传播两个 HTTP 头来实现这一点:

  • sentry-trace
  • baggage

如果您在分布式系统中运行任何 JavaScript 应用程序,请确保将这两个头添加到 CORS 允许列表中,并且不会被代理服务器、网关或防火墙阻止或剥离。

如果你使用的是我们当前版本的 Python SDK,分布式跟踪对以下框架开箱即用:

  • Django
  • FastAPI
  • Flask
  • Bottle
  • Falcon
  • Pyramid
  • Quart
  • Starlette
  • Tornado

但是,如果你使用的是版本 1.25.x 或更低版本,则需要启用我们的跟踪功能才能使分布式跟踪工作。如果你不想启用跟踪,你也可以设置自定义仪器

请记住,为了在整个分布式系统中传播跟踪信息,您必须在所有涉及的服务和应用程序中使用 Sentry。请查看相应 SDK 的文档,了解如何为每个平台启用分布式跟踪。