设置 Ruby 版 Cloud Logging

通过使用 Ruby 版 Cloud Logging 库,或者直接使用 Ruby 版 Cloud Logging Cloud 客户端库,您可以从 Ruby 应用向 Cloud Logging 写入日志。

无需安装 Cloud Logging 代理即可在 Compute Engine 虚拟机实例上使用 Ruby 版 Cloud 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. 启用 Cloud Logging 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. 启用 Cloud Logging API。

    启用 API

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

安装库

我们提供了 Ruby 版 Cloud Logging 库,该库为基于 Rack 的 Ruby 网络框架提供了一种易于使用的日志记录器实现:

  1. 将 Google Cloud Observability gem 添加到您的 Gemfile 中:

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

    bundle install
    

启用库

如果您正在使用 Ruby on Rails,Bundler 会在启动时自动将库加载到您的应用中,这会将默认的 Rails.logger 设置为 Cloud Logging 日志记录器的实例。

如果您的网络框架支持 Rack 日志记录器,则其他基于 Rack 的应用可以使用 Rack Middleware 将 Rack 日志记录器替换为 Cloud Logging 日志记录器:

require "google/cloud/logging"

use Google::Cloud::Logging::Middleware

配置库

您可以自定义 Ruby 版 Cloud Logging 库的行为。请参阅库的配置 了解可能的配置选项列表。

使用 Cloud Logging 日志记录器

启用 Ruby 版 Cloud Logging 库之后,您就可以在应用中使用日志记录器:

logger.info "Hello World!"
logger.error "Oh No!"

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

使用 Cloud Logging 客户端库写入日志

如需了解如何使用 Cloud Logging 客户端库, Ruby,请参阅 Cloud Logging 客户端库

在 Google Cloud 上运行

为了让应用使用 Ruby 版 Cloud Logging 库写入日志, 服务账号必须具有 Logs Writer (roles/logging.logWriter) IAM 角色。 大多数 Google Cloud 环境都会自动配置默认的 拥有此角色的服务账号。

App Engine

系统会自动为 App Engine 启用 Cloud Logging,并且应用的默认服务账号默认拥有 IAM 权限以写入日志条目。

如需了解详情,请参阅写入和查看日志

Google Kubernetes Engine (GKE)

GKE 会自动授予默认服务账号 Logs Writer (roles/logging.logWriter) IAM 角色。 如果您使用 Workload Identity 此默认服务账号,以允许工作负载 Google Cloud API,则不需要其他配置。 但是,如果您将 Workload Identity 与 自定义 IAM 服务账号,请确保自定义服务 账号具有 Logs Writer (roles/logging.logWriter) 角色。

如果需要,您还可以在创建集群时使用以下命令添加 logging.write 访问权限范围:

gcloud container clusters create example-cluster-name \
    --scopes https://www.googleapis.com/auth/logging.write

Compute Engine

使用 Compute Engine 虚拟机实例时,请为每个实例添加 cloud-platform 访问权限范围。通过 Google Cloud 控制台,您可以在身份和 API 访问权限部分执行此操作 点击创建实例面板。请使用 Compute Engine 默认服务账号或您选用的其他服务账号,并在身份和 API 访问权限部分勾选允许所有 Cloud APIs 的全面访问权限。任何服务 请确保已向其授予 IAM 和管理控制台的 Google Cloud 控制台。

在本地和其他位置运行

如需在 Google Cloud 外部使用 Ruby 版 Cloud Logging 库, 包括在您自己的工作站、数据中心的 或其他云服务提供商的虚拟机实例上,则必须 提供您的 Google Cloud 项目 ID 和相应的 服务账号 将凭据直接传送至 Ruby 版 Cloud Logging 库。

对于现有服务账号,请执行以下操作:

  1. 向服务账号授予 IAM Logs Writer (roles/logging.logWriter) IAM 角色。 如需详细了解 IAM 请参阅访问权限控制

  2. 设置应用默认凭据

如果您没有服务账号,请创建一个。有关 此过程,请参阅创建服务账号

如需了解有关可用于身份验证的方法的一般信息,请参阅 术语:服务账号

使用 Ruby on Rails 配置界面:

如果您使用的是 Ruby on Rails 框架,请通过 Ruby on Rails 配置界面提供参数:

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

您还可以使用以下代码为所有 Google Cloud Observability 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 在生产模式下运行,则默认启用 Logging。要在开发模式下启用 Logging,请添加以下内容:

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

使用 instrumentation 配置界面:

在基于 Rack 的其他应用中使用时,请通过配置界面提供参数:

require "google/cloud/logging"

Google::Cloud.configure do |config|
  # Stackdriver Logging specific parameters
  config.logging.project_id = "YOUR-PROJECT-ID"
  config.logging.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 控制台中,转到 Logs Explorer 页面。

前往 Logs Explorer

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

在日志浏览器中,您必须指定一个或多个资源,但资源的选择并不那么显而易见。以下是帮助您上手的一些提示:

  • 如果您将把应用部署到 App Engine 或者您使用的是 App Engine 专用的库,请将资源设置为 GAE 应用

  • 如果您将在 Compute Engine 上部署应用,请将资源设置为 GCE 虚拟机实例

  • 如果您要在 Google Kubernetes Engine 上部署应用,则集群的日志记录配置将确定日志条目的资源类型。有关 关于旧版 Google Cloud 可观测性与 Google Cloud 可观测性 Kubernetes Monitoring 解决方案,以及这些选项将如何影响 资源类型,请参阅 迁移到 Google Cloud Observability Kubernetes Monitoring

  • 如果您的应用直接使用 Cloud Logging API,则资源取决于该 API 和您的配置。例如,在您的应用中,您可以指定资源或使用默认资源。

  • 如果您在日志浏览器中没有看到任何日志,若要查看所有日志条目,请切换到高级查询模式并使用空查询。

    1. 如需切换到高级查询模式,请点击日志浏览器顶部的菜单 (▾),然后选择转换为高级过滤条件
    2. 清除过滤条件框中显示的内容。
    3. 点击提交过滤条件

    您可以检查各个条目以找出您的资源。

如需了解详情,请参阅使用日志浏览器