菜单
文档breadcrumb arrow Grafana Pyroscopebreadcrumb arrow 配置客户端发送 Profilesbreadcrumb arrow 关联 Traces 和 Profilesbreadcrumb arrow 基于 Ruby 的 Span Profiles 与 Traces to profiles
开源

基于 Ruby 的 Span Profiles 与 Traces to profiles

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

这一转变使得性能视图更加精细,通过将 Profiles 直接与 Traces 关联,增强了 Profiles 的实用性,有助于全面理解应用程序行为。因此,工程团队可以更有效地识别和解决性能瓶颈。

要详细了解 Span Profiles,请参阅结合追踪和性能分析增强可观测性:Span Profiles 介绍

span-profiles screenshot

Pyroscope 集成了支持 OpenTelemetry 标准的分布式追踪系统。通过此集成,您可以将 Traces 与性能分析数据关联起来,并查找特定代码行在其追踪 Span 中的资源使用情况。

注意

  • 目前仅支持 CPU 性能分析。
  • 由于采样性能分析器的工作方式,短于采样间隔的 Span 可能不会被捕获。

要使用 Span 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 的性能分析数据成为可能。

shell
# Add to your Gemfile
gem install pyroscope-otel

接下来,您需要创建和配置 Tracer Provider

ruby
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。

要使用简单配置,请按照以下步骤操作

  1. 从数据源下拉菜单中选择一个 Pyroscope 数据源。

  2. 可选:选择要在查询中使用的任何标签。如果留空,将使用 service.nameservice.namespace 的默认值。

您配置的标签必须存在于 span 属性或资源中,才能显示 trace to profiles span 链接。您可以选择为标签配置一个新名称。例如,如果标签名称中包含点,而目标数据源不允许在标签中使用点,这会很有用。在这种情况下,您可以将 service.name 重映射为 service_name。

  1. 在查询中选择一个或多个 profile 类型。选择下拉菜单并从菜单中选择选项。

必须选择 profile 类型或应用程序,查询才有效。如果在运行查询时未选择 profile 类型或应用程序,Grafana 将不会显示任何数据。

span-profiles configuration

示例

查看示例目录中的完整演示应用程序,了解追踪集成功能。

示例

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