菜单
开源

Ruby

Ruby性能分析器革新了Ruby应用程序的性能调优。与Pyroscope集成后,它提供实时性能数据,使开发者能够深入了解其Ruby代码库。此工具对于识别性能问题、优化代码效率以及提高Ruby应用程序的整体速度和可靠性至关重要。

注意

请参阅可用的分析类型以获取Ruby支持的列表。

开始之前

要捕获和分析分析数据,您需要一个托管的Pyroscope OSS服务器或一个带有Grafana Cloud Profiles的托管Pyroscope实例(需要免费Grafana Cloud账户)。

Pyroscope服务器可以是用于开发的本地服务器或用于生产使用的远程服务器。

将Ruby分析添加到您的应用程序

pyroscopegem添加到您的Gemfile

bash
bundle add pyroscope

配置Ruby客户端

将以下代码添加到您的应用程序中。如果您使用Rails,请将其放入config/initializers目录。此代码将初始化Pyroscope分析器并开始分析

ruby
require 'pyroscope'

Pyroscope.configure do |config|
  config.application_name = "my.ruby.app" # replace this with some name for your application
  config.server_address   = "http://my-pyroscope-server:4040" # replace this with the address of your Pyroscope server
end

如何将分析标签添加到Ruby应用程序中

Pyroscope Ruby集成提供了一些标记分析数据的方式。例如,您可以在初始化分析器时提供标签

ruby
require 'pyroscope'

Pyroscope.configure do |config|
  config.application_name = "my.ruby.app"
  config.server_address   = "http://my-pyroscope-server:4040"

  config.tags = {
    "hostname" => ENV["HOSTNAME"],
  }
end

或者您可以动态地标记代码的某些部分

ruby
Pyroscope.tag_wrapper({ "controller": "slow_controller_i_want_to_profile" }) do
  slow_code
end

Rails分析自动标记

默认情况下,如果您将Pyroscope添加到Rails应用程序中,它将自动使用action="<controller_name>/<action_name>"标签标记您的操作。

要禁用Rails自动标记,请将autoinstrument_rails设置为false

ruby
Pyroscope.configure do |config|
  config.autoinstrument_rails = false
  # more configuration
end

使用Ruby SDK通过Pyroscope发送数据

ruby
require "pyroscope"

Pyroscope.configure do |config|
  config.application_name = "example.ruby.app"
  config.server_address = "<URL>"
  config.basic_auth_username='<User>'
  config.basic_auth_password='<Password>'
  # Optional Pyroscope tenant ID (only needed if using multi-tenancy). Not needed for Grafana Cloud.
  # config.tenant_id='<TenantID>'
end

要配置Ruby SDK以发送数据到Pyroscope,将<URL>占位符替换为适当的服务器URL。这可能是一致的Grafana Cloud URL或您自己的自定义Pyroscope服务器URL。

如果您需要将数据发送到Grafana Cloud,您必须配置HTTP基本身份验证。将<User>替换为您Grafana Cloud堆栈用户,将<Password>替换为您Grafana Cloud API密钥。

如果您的Pyroscope服务器启用了多租户,您需要配置一个租户ID。将<TenantID>替换为您Pyroscope租户ID。

Ruby分析示例

查看以下资源以了解有关Ruby分析的更多信息