对 Ruby 应用进行插桩处理以进行 Error Reporting

您可以将错误报告从 Ruby 发送到 Error Reporting 如何使用 Google Cloud 中的 Ruby 版 Error Reporting 库。 使用 Ruby 版 Error Reporting 库针对以下情况创建错误组:

  • 您的日志存储桶包含客户管理的加密密钥 (CMEK)
  • 您的日志存储分区不在 global 区域中。
  • 您想要报告自定义错误事件。

Error Reporting 已与某些 Google Cloud 服务集成,例如 App EngineCompute EngineGoogle Kubernetes Engine。Error Reporting 可显示在这些服务上运行的应用记录到 Cloud Logging 中的错误。如需了解详情,请参阅 在 Google Cloud 上运行 页面。

您还可以使用 Logging 将错误数据发送到 Error Reporting。如需了解数据格式设置要求,请参阅设置 Logging 中的错误消息格式

准备工作

  1. 登录您的 Google Cloud 账号。如果您是 Google Cloud 新手,请创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. 确保您的 Google Cloud 项目已启用结算功能

  4. 启用 Error Reporting API 。

    启用 API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. 确保您的 Google Cloud 项目已启用结算功能

  7. 启用 Error Reporting API 。

    启用 API

  8. 安装 Ruby 2.2+ 或更高版本。

安装客户端库

借助 Ruby 版 Error Reporting 库,您可以监控和查看 几乎在任何位置运行的 Ruby 应用。

  1. google-cloud-error_reporting gem 添加到您的 Gemfile 中:

    gem "google-cloud-error_reporting"

  2. 使用 Bundler 安装 gem:

    bundle install

启用库

如果您正在使用 Ruby on Rails,Bundler 会在启动时自动将库加载到您的应用中。

其他基于 Rack 的应用可以使用库提供的 Rack Middleware:

require "google/cloud/error_reporting"

use Google::Cloud::ErrorReporting::Middleware

如需详细了解如何安装,请参阅 Ruby 版 Error Reporting 库的文档。您还可以使用问题跟踪器来报告问题。

配置客户端库

您可以自定义 Ruby 版 Error Reporting 库的行为。如需查看可能的配置选项的列表,请参阅库的配置

在 Google Cloud 上运行应用

要使用以下方法创建错误组: projects.events.report,您的服务账号需要 Error Reporting 写入者角色 (roles/errorreporting.writer)。

某些 Google Cloud 服务会自动 Error Reporting Writer 角色 (roles/errorreporting.writer) 服务账号。但是,您必须将此角色授予相应的服务 使用部分服务

App Engine 柔性环境

App Engine 会将 Error Reporting Writer 角色 (roles/errorreporting.writer) 您的默认服务账号

您无需明确提供凭据即可使用 Ruby 版 Error Reporting 库。

系统会自动为 App Engine 柔性环境应用启用 Error Reporting。 无需进行额外设置。

Google Kubernetes Engine

如需将 Error Reporting 与 Google Kubernetes Engine 搭配使用, 执行以下操作:

  1. 确保容器要使用的服务账号已 授予了 Error Reporting 写入者角色 (roles/errorreporting.writer)。

    您可以使用 Compute Engine 默认服务账号 或自定义服务账号

    如需了解如何授予角色,请参阅 管理对项目、文件夹和组织的访问权限

  2. 创建集群并向该集群授予 cloud-platform 访问权限范围

    例如,以下 create 命令指定了 cloud-platform 访问权限范围和服务账号:

    gcloud container clusters create CLUSTER_NAME --service-account  SERVICE_ACCT_NAME --scopes=cloud-platform
    

Compute Engine

如需将 Error Reporting 与 Compute Engine 虚拟机实例搭配使用,请执行以下操作: 执行以下操作:

  1. 确保已为您的虚拟机实例使用服务账号 授予了 Error Reporting 写入者角色 (roles/errorreporting.writer)。

    您可以使用 Compute Engine 默认服务账号 或自定义服务账号

    如需了解如何授予角色,请参阅 管理对项目、文件夹和组织的访问权限

  2. 在 Google Cloud 控制台中,转到虚拟机实例页面:

    前往虚拟机实例

    如果您使用搜索栏查找此页面,请选择子标题为 Compute Engine 的结果。

  3. 选择要接收 cloud-platform 访问权限范围

  4. 点击停止,然后点击修改

  5. 身份和 API 访问权限部分,选择服务账号 具有 Error Reporting Writer 角色 (roles/errorreporting.writer)。

  6. 访问权限范围部分中, 选择允许所有 Cloud API 的全面访问权限,然后保存更改。

  7. 点击启动/恢复

使用 Ruby on Rails 配置界面

要在 Ruby on Rails 框架中使用 Ruby 版 Error Reporting 库,请通过 Ruby on Rails 配置界面提供如下参数:

# Add this to config/environments/*.rb
Rails.application.configure do |config|
  # Stackdriver Error Reporting specific parameters
  config.google_cloud.error_reporting.project_id = "YOUR-PROJECT-ID"
  config.google_cloud.error_reporting.keyfile    = "/path/to/service-account.json"
end

您还可以使用以下代码为所有 Stackdriver gem 设置共享配置:

# Add this to config/environments/*.rb
Rails.application.configure do |config|
  # Stackdriver Shared parameters
  config.google_cloud.project_id = "YOUR-PROJECT-ID"
  config.google_cloud.keyfile    = "/path/to/service-account.json"
end

如果 Rails 在生产模式下运行,则 Error Reporting 默认处于启用状态。要在开发模式下启用 Error Reporting,请添加以下代码:

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

使用 instrumentation 配置界面

如需在其他基于 Rack 的应用中使用 Ruby 版 Error Reporting 库,请通过配置界面提供如下参数:

require "google/cloud/error_reporting"

Google::Cloud.configure do |config|
  # Stackdriver Error Reporting specific parameters
  config.error_reporting.project_id = "YOUR-PROJECT-ID"
  config.error_reporting.keyfile    = "/path/to/service-account.json"
end

您还可以为所有 Google Cloud Observability gem 设置共享配置 使用以下代码:

require "stackdriver"

Google::Cloud.configure do |config|
  # Stackdriver Shared parameters
  config.project_id = "YOUR-PROJECT-ID"
  config.keyfile    = "/path/to/service-account.json"
end

示例

报告基于 Rack 的框架中的错误

通过 Ruby 版 Error Reporting 库,您可以将 Error Reporting 轻松集成到常用的基于 Rack 的 Ruby Web 框架中,例如 Ruby on Rails 和 Sinatra。该库启用后,它会自动报告从应用的 Rack 堆栈捕获的异常。

手动报告错误

您可以调用 report 方法来手动报告错误,如以下示例所示:

require "google/cloud/error_reporting"

begin
  raise "Something went wrong"
rescue StandardError => e
  Google::Cloud::ErrorReporting.report e
end

在本地开发环境中运行应用

要在本地开发环境中使用适用于 Ruby 的 Error Reporting 库,请执行以下操作: 例如在自己的工作站上运行库,则必须提供 带有本地应用默认凭据的 Ruby 版 Error Reporting 库。 如需了解详情,请参阅向 Error Reporting 进行身份验证

如需在本地开发环境中使用本页面上的 Ruby 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭据设置应用默认凭据。

  1. 安装 Google Cloud CLI。
  2. 如需初始化 gcloud CLI,请运行以下命令:

    gcloud init
  3. 为您的 Google 账号创建本地身份验证凭据:

    gcloud auth application-default login

如需了解详情,请参阅 Set up authentication for a local development environment

projects.events.report 方法也支持 API 密钥。 如果您要使用 API 密钥进行身份验证,则无需设置本地应用默认凭据文件。如需了解详情,请参阅 在 Google Cloud 身份验证文档中创建 API 密钥

使用 Ruby on Rails 配置界面

要在 Ruby on Rails 框架中使用 Ruby 版 Error Reporting 库,请通过 Ruby on Rails 配置界面提供如下参数:

# Add this to config/environments/*.rb
Rails.application.configure do |config|
  # Stackdriver Error Reporting specific parameters
  config.google_cloud.error_reporting.project_id = "YOUR-PROJECT-ID"
  config.google_cloud.error_reporting.keyfile    = "/path/to/service-account.json"
end

您还可以使用以下代码为所有 Stackdriver gem 设置共享配置:

# Add this to config/environments/*.rb
Rails.application.configure do |config|
  # Stackdriver Shared parameters
  config.google_cloud.project_id = "YOUR-PROJECT-ID"
  config.google_cloud.keyfile    = "/path/to/service-account.json"
end

如果 Rails 在生产模式下运行,则 Error Reporting 默认处于启用状态。要在开发模式下启用 Error Reporting,请添加以下代码:

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

使用 instrumentation 配置界面

如需在其他基于 Rack 的应用中使用 Ruby 版 Error Reporting 库,请通过配置界面提供如下参数:

require "google/cloud/error_reporting"

Google::Cloud.configure do |config|
  # Stackdriver Error Reporting specific parameters
  config.error_reporting.project_id = "YOUR-PROJECT-ID"
  config.error_reporting.keyfile    = "/path/to/service-account.json"
end

您还可以为所有 Google Cloud Observability gem 设置共享配置 使用以下代码:

require "stackdriver"

Google::Cloud.configure do |config|
  # Stackdriver Shared parameters
  config.project_id = "YOUR-PROJECT-ID"
  config.keyfile    = "/path/to/service-account.json"
end

查看错误报告

在 Google Cloud 控制台中,转到 Error Reporting 页面:

前往 Error Reporting

您也可以使用搜索栏查找此页面。

如需了解详情,请参阅查看错误