基于 Ruby 的 Span Profiles 与 Traces to profiles
Span Profiles 代表着性能分析方法学的重大转变,支持对追踪和性能分析数据进行更深入的分析。传统的持续性能分析在固定时间间隔内提供应用程序范围的视图。相比之下,Span Profiles 提供对应用程序内特定执行范围(例如单个请求或特定追踪 Span)的集中、动态分析。
这一转变使得性能视图更加精细,通过将 Profiles 直接与 Traces 关联,增强了 Profiles 的实用性,有助于全面理解应用程序行为。因此,工程团队可以更有效地识别和解决性能瓶颈。
要详细了解 Span Profiles,请参阅结合追踪和性能分析增强可观测性:Span Profiles 介绍。
Pyroscope 集成了支持 OpenTelemetry 标准的分布式追踪系统。通过此集成,您可以将 Traces 与性能分析数据关联起来,并查找特定代码行在其追踪 Span 中的资源使用情况。
注意
- 目前仅支持 CPU 性能分析。
- 由于采样性能分析器的工作方式,短于采样间隔的 Span 可能不会被捕获。
要使用 Span Profiles,您需要
- 配置 Pyroscope 发送性能分析数据
- 配置客户端软件包以关联 Traces 和 Profiles:Ruby
- 在 Grafana 或 Grafana Cloud 中配置 Tempo 数据源以发现关联的 traces 和 profiles
开始之前
在使用 span profiles 之前,您的应用程序必须已进行性能分析和追踪插桩。
- 性能分析:您的应用程序必须已使用 Pyroscope 的 Ruby SDK 进行插桩。请参阅Ruby 指南获取说明。
- 追踪:您的应用程序必须已使用 OpenTelemetry traces 进行插桩。请参阅OpenTelemetry 指南获取说明。
配置 otel-profiling-ruby 软件包
要开始为您的 Ruby 应用程序收集 Span Profiles,您需要在代码中包含 otel-profiling-ruby。
这个软件包是一个 TracerProvider
实现,它使用 span ID 标记性能分析数据,使得在 Grafana Tempo UI 中查询特定于 Span 的性能分析数据成为可能。
# Add to your Gemfile
gem install pyroscope-otel
接下来,您需要创建和配置 Tracer Provider
Pyroscope.configure do |config|
# Configure pyroscope as described https://pyroscope.io/docs/ruby/
end
OpenTelemetry::SDK.configure do |config|
config.add_span_processor Pyroscope::Otel::SpanProcessor.new(
"#{app_name}.cpu", # your app name with ".cpu" suffix, for example rideshare-ruby.cpu
pyroscope_endpoint # link to your pyroscope server, for example "https://:4040"
)
# Configure the rest of opentelemetry as described https://github.com/open-telemetry/opentelemetry-ruby
end
在 Grafana Tempo 中查看 Span Profiles
要在 Grafana Tempo 中查看 Span Profiles,您需要运行 Grafana 实例并配置一个数据源来关联 trace spans 和 profiles。
请参阅数据源配置文档,了解如何配置可视化以关联 trace spans 和 profiles。
要使用简单配置,请按照以下步骤操作
从数据源下拉菜单中选择一个 Pyroscope 数据源。
可选:选择要在查询中使用的任何标签。如果留空,将使用
service.name
和service.namespace
的默认值。
您配置的标签必须存在于 span 属性或资源中,才能显示 trace to profiles span 链接。您可以选择为标签配置一个新名称。例如,如果标签名称中包含点,而目标数据源不允许在标签中使用点,这会很有用。在这种情况下,您可以将 service.name 重映射为 service_name。
- 在查询中选择一个或多个 profile 类型。选择下拉菜单并从菜单中选择选项。
必须选择 profile 类型或应用程序,查询才有效。如果在运行查询时未选择 profile 类型或应用程序,Grafana 将不会显示任何数据。
示例
查看示例目录中的完整演示应用程序,了解追踪集成功能。
示例
查看这些用于 span profiles 的演示应用程序