菜单
开源

用于 Python 的 Span profiles 与 Traces to profiles 功能

Span Profiles 代表着性能分析方法学的重大转变,能够对追踪和分析数据进行更深入的分析。传统的持续性能分析提供应用程序在固定时间间隔内的全局视图。相比之下,Span Profiles 则专注于应用程序内特定执行范围(例如单个请求或特定追踪跨度)的动态分析。

这一转变提供了更精细的性能视图,通过将分析数据直接与追踪关联,从而全面了解应用程序行为,增强了分析数据的实用性。因此,工程团队可以更高效地识别和解决性能瓶颈。

要了解更多关于 Span Profiles 的信息,请参考结合追踪和性能分析增强可观测性:Span Profiles 介绍

span-profiles screenshot

Pyroscope 与支持 OpenTelemetry 标准的分布式追踪系统集成。这种集成使您可以将追踪与性能分析数据关联起来,并找到追踪跨度中特定代码行的资源使用情况。

注意

  • 目前仅支持 CPU 性能分析。
  • 由于采样分析器的工作原理,短于采样间隔的跨度可能无法捕获。

要使用 Span Profiles,您需要

开始之前

您的应用程序必须先进行性能分析和追踪的埋点,然后才能使用 span profiles。

  • 性能分析:您的应用程序必须使用 Pyroscope 的 Python 埋点库进行埋点。参考Python指南获取说明。
  • 追踪:您的应用程序必须使用 OpenTelemetry traces 进行埋点。参考OpenTelemetry指南获取 isntructions。

配置 pyroscope-otel 软件包

要开始收集 Python 应用程序的 Span Profiles,您需要在代码中包含 pyroscope-otel

此软件包提供了一个 SpanProcessor 实现,它将两种遥测信号(追踪和性能分析)关联在一起。

shell
pip install pyroscope-otel

接下来,创建并注册 PyroscopeSpanProcessor

python
# import span processor
from pyroscope-otel import PyroscopeSpanProcessor

# obtain a OpenTelemetry tracer provider
from opentelemetry import trace
from opentelemetry.sdk.trace import TracerProvider
provider = TracerProvider()

# register the span processor
provider.add_span_processor(PyroscopeSpanProcessor())

# register the tracer provider
trace.set_tracer_provider(provider)

注册 span processor 后,自动创建的(例如 HTTP 处理程序)和手动创建的 span 都将关联性能分析数据。

在 Grafana Tempo 中查看 span profiles

要在 Grafana Tempo 中查看 span profiles,您需要运行一个 Grafana 实例并配置一个数据源来关联追踪和分析数据。

参考数据源配置文档查看如何配置可视化以关联追踪和分析数据。

示例

查看这些 span profiles 演示应用程序