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

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

  • 包含日志条目的日志存储桶采用客户管理的加密 密钥 (CMEK)
  • 日志存储桶满足以下任一条件:
    • 日志存储桶存储在日志条目所在的项目中 来源。
    • 日志条目已路由到某个项目,而该项目随后存储了 管理日志存储桶中的日志条目。
  • 您想要报告自定义错误事件。

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

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

准备工作

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Error Reporting API .

    Enable the API

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

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Error Reporting API .

    Enable the 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. 点击启动/恢复

Cloud Functions

Cloud Run 函数Error Reporting Writer 角色 (roles/errorreporting.writer) 您的默认服务账号

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

Cloud Run 函数已配置为使用 Error Reporting 。未处理 JavaScript 异常将出现在 Logging 中,并由 而不必使用 Ruby 版 Error Reporting 库。

使用 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. Install the Google Cloud CLI.
  2. To initialize the gcloud CLI, run the following command:

    gcloud init
  3. If you're using a local shell, then create local authentication credentials for your user account:

    gcloud auth application-default login

    You don't need to do this if you're using Cloud Shell.

如需了解详情,请参阅 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

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

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