为 Ruby 设置 Cloud Debugger

概览

本页面介绍如何配置您的环境和 Ruby 应用以使用 Cloud Debugger。对于一些环境,您必须明确指定访问权限范围,以让 Cloud Debugger 代理发送数据。我们建议尽可能设置最广泛的访问权限范围,然后使用 Identity and Access Management 来限制访问权限。为符合此最佳做法,请使用 cloud-platform 选项将访问权限范围设置为所有 Cloud API。

语言版本和计算环境

Cloud Debugger 适用于 Ruby 2.2 和更高版本。

App Engine 标准环境 App Engine 柔性环境 Compute Engine Google Kubernetes Engine Cloud Run Cloud Run for Anthos on Google Cloud 在其他位置运行的虚拟机和容器 云端函数

设置 Cloud Debugger

要设置 Cloud Debugger,请完成以下任务:

  1. 验证是否为您的项目启用了 Cloud Debugger API。

  2. 在您正在使用的计算环境中安装并配置 Debugger。

  3. 选择您的源代码。

验证 Cloud Debugger API 是否已启用

要开始使用 Cloud Debugger,请确保已启用 Cloud Debugger API。默认情况下,系统会为大多数项目启用 Cloud Debugger。
启用 Cloud Debugger API

App Engine 柔性环境

  1. stackdriver gem 添加到您的 Gemfile 中:

    gem "stackdriver"
    
  2. 启用代理。

Rails

Bundler 会在启动时自动将库加载到您的应用中。无需进行任何配置。

Rack

使用库提供的 Rack Middleware:

require "google/cloud/debugger"

use Google::Cloud::Debugger::Middleware

其他

对于纯 Ruby 应用,请在入口点明确启动代理程序:

require "google/cloud/debugger"

Google::Cloud::Debugger.new.start

Debugger 现可用于您的应用。

Google Kubernetes Engine

GCLOUD

要使用 gcloud 启用 Debugger,请完成以下步骤:

  1. 创建集群,并为其指定以下访问权限范围之一:

    • https://www.googleapis.com/auth/cloud-platform 授予集群对所有 Google Cloud API 的访问权限。

    • https://www.googleapis.com/auth/cloud_debugger 仅授予集群对 Debugger API 的访问权限。使用此访问范围来强化集群的安全性

    gcloud container clusters create example-cluster-name \
           --scopes=https://www.googleapis.com/auth/cloud_debugger
    
  2. stackdriver gem 添加到您的 Gemfile 中:

    gem "stackdriver"
    
  3. 将下面一行代码添加到 Dockerfile 以添加 Debugger 代理:

    Run bundle install
    
  4. 启用 Debugger 代理:

    Rails

    Bundler 会在启动时自动将库加载到您的应用中。

    您可以选择通过 Ruby on Rails 配置界面提供服务和版本:

    # Add this to config/environments/*.rb
    Rails.application.configure do |config|
      config.google_cloud.debugger.service_name = "SERVICE-NAME"
      config.google_cloud.debugger.service_version = "SERVICE-VERSION"
    end
    

    其中:

    • SERVICE-NAME 是应用的名称,例如 MyAppBackendFrontend
    • SERVICE-VERSION 是版本,例如 v1.0build_147v20170714

    我们建议您在环境变量中设置这些变量,这样就无需在每次部署时更改源代码。

    如果 Rails 在生产模式下运行,则默认启用 Debugger。要在开发模式下启用 Debugger,请添加以下内容:

    # Add this to config/environments/development.rb
    Rails.application.configure do |config|
      config.google_cloud.use_debugger = true
    end

    Rack

    使用库提供的 Rack Middleware:

     require "google/cloud/debugger"
    
     Google::Cloud::Debugger.configure do |config|
       config.service_name = "SERVICE-NAME"
       config.service_version = "SERVICE-VERSION"
      end
    
     use Google::Cloud::Debugger::Middleware
    

    其中:

    • SERVICE-NAME 是应用的名称,例如 MyAppBackendFrontend
    • SERVICE-VERSION 是版本,例如 v1.0build_147v20170714

    我们建议您在环境变量中设置这些变量,这样就无需在每次部署时更改源代码。

    其他

    对于纯 Ruby 应用,请在入口点明确启动代理:

    require "google/cloud/debugger"
    
    Google::Cloud::Debugger.new(service_name: "SERVICE-NAME",
                        service_version: "SERVICE-VERSION").start
    

    其中:

    • SERVICE-NAME 是应用的名称,例如 MyAppBackendFrontend
    • SERVICE-VERSION 是版本,例如 v1.0build_147v20170714

    我们建议您在环境变量中设置这些变量,这样就无需在每次部署时更改源代码。

    您的应用现已启用 Debugger。

CONSOLE

如需使用 Google Cloud Console 启用 Debugger,请完成以下步骤:

  1. 节点池部分中,选择安全,然后选择针对每个 API 设置访问权限

  2. 启用 Debugger。

    为集群启用了 Debugger API。

  3. 选项:选择允许所有 Cloud API 的全面访问权限

Compute Engine

  1. 确保使用访问权限范围选项允许所有 Cloud API 的全面访问权限创建 Compute Engine 实例,或者您具有以下访问权限范围之一:

    • https://www.googleapis.com/auth/cloud-platform
    • https://www.googleapis.com/auth/cloud_debugger
  2. stackdriver gem 添加到您的 Gemfile 中:

    gem "stackdriver"
    
  3. 使用 Bundler 安装 gem:

    bundle install
    
  4. 启用代理。

Rails

Bundler 会在启动时自动将库加载到您的应用中。

您可以选择通过 Ruby on Rails 配置界面提供服务和版本:

# Add this to config/environments/*.rb
Rails.application.configure do |config|
  config.google_cloud.debugger.service_name = "SERVICE-NAME"
  config.google_cloud.debugger.service_version = "SERVICE-VERSION"
end

其中:

  • SERVICE-NAME 是应用的名称,例如 MyAppBackendFrontend
  • SERVICE-VERSION 是版本,例如 v1.0build_147v20170714

我们建议您在环境变量中设置这些变量,这样就无需在每次部署时更改源代码。

如果 Rails 在生产模式下运行,则默认启用 Debugger。要在开发模式下启用 Debugger,请添加以下内容:

# Add this to config/environments/development.rb
Rails.application.configure do |config|
  config.google_cloud.use_debugger = true
end

Rack

使用库提供的 Rack Middleware:

require "google/cloud/debugger"

Google::Cloud::Debugger.configure do |config|
  config.service_name = "SERVICE-NAME"
  config.service_version = "SERVICE-VERSION"
end

use Google::Cloud::Debugger::Middleware

其中:

  • SERVICE-NAME 是应用的名称,例如 MyAppBackendFrontend
  • SERVICE-VERSION 是版本,例如 v1.0build_147v20170714

我们建议您在环境变量中设置这些变量,这样就无需在每次部署时更改源代码。

其他

对于纯 Ruby 应用,请在入口点明确启动代理:

require "google/cloud/debugger"

Google::Cloud::Debugger.new(service_name: "SERVICE-NAME",
                            service_version: "SERVICE-VERSION").start

其中:

  • SERVICE-NAME 是应用的名称,例如 MyAppBackendFrontend
  • SERVICE-VERSION 是版本,例如 v1.0build_147v20170714

我们建议您在环境变量中设置这些变量,这样就无需在每次部署时更改源代码。

Debugger 现可用于您的应用。

本地和其他位置

  1. stackdriver gem 添加到您的 Gemfile 中:

    gem "stackdriver"
    
  2. 使用 Bundler 安装 gem:

    bundle install
    
  3. 下载服务帐号凭据。

    要在非 Google Cloud 托管的计算机上使用 Ruby 版 Cloud Debugger 代理,代理必须使用 Google Cloud 服务帐号凭据对 Cloud Debugger 服务进行身份验证。

    使用 Cloud Console 服务帐号页面为现有或新的服务帐号创建凭据文件。该服务帐号必须至少具有 Cloud Debugger Agent 角色。

  4. 使用下载的凭据配置和启用代理。

Rails

通过 Ruby on Rails 配置界面提供参数:

# Add this to config/environments/*.rb
Rails.application.configure do |config|
  config.google_cloud.project_id = "YOUR-PROJECT-ID"
  config.google_cloud.keyfile    = "/path/to/service-account.json"
  config.google_cloud.debugger.service_name = "SERVICE-NAME"
  config.google_cloud.debugger.service_version = "SERVICE-VERSION"
end

其中:

  • SERVICE-NAME 是应用的名称,例如 MyAppBackendFrontend
  • SERVICE-VERSION 是版本,例如 v1.0build_147v20170714

我们建议您在环境变量中设置这些变量,这样就无需在每次部署时更改源代码。

如果 Rails 在生产模式下运行,则默认启用 Debugger。要在开发模式下启用 Debugger,请添加以下内容:

# Add this to config/environments/development.rb
Rails.application.configure do |config|
  config.google_cloud.use_debugger = true
end

Rack

使用库提供的 Rack Middleware:

require "stackdriver"
require "google/cloud/debugger"

Google::Cloud.configure do |config|
  config.project_id = "YOUR-PROJECT-ID"
  config.keyfile    = "/path/to/service-account.json"
  config.service_name = "SERVICE-NAME"
  config.service_version = "SERVICE-VERSION"
end

use Google::Cloud::Debugger::Middleware

其中:

  • SERVICE-NAME 是应用的名称,例如 MyAppBackendFrontend
  • SERVICE-VERSION 是版本,例如 v1.0build_147v20170714

我们建议您在环境变量中设置这些变量,这样就无需在每次部署时更改源代码。

其他

对于纯 Ruby 应用,请在入口点明确启动代理:

require "google/cloud/debugger"

Google::Cloud::Debugger.new(project: "YOUR-PROJECT-ID",
                            keyfile: "/path/to/service-account.json",
                            service_name: "SERVICE-NAME",
                            service_version: "SERVICE-VERSION").start

其中:

  • SERVICE-NAME 是应用的名称,例如 MyAppBackendFrontend
  • SERVICE-VERSION 是版本,例如 v1.0build_147v20170714

我们建议您在环境变量中设置这些变量,这样就无需在每次部署时更改源代码。

现在,此调试程序便可与您的应用搭配使用。

Cloud Console 中的“调试”页面可以显示本地源文件(无需上传),以进行本地开发。请参阅手动选择源代码