设置 Ruby 版 Stackdriver Logging

要将日志从 Ruby 应用写入 Stackdriver Logging,您可以使用 Ruby 版 Stackdriver Logging 库,也可以直接使用 Ruby 版 Stackdriver Logging Cloud 客户端库。

无需安装 Stackdriver Logging 代理即可在 Compute Engine 虚拟机实例上使用 Ruby 版 Stackdriver Logging 库。

准备工作

  1. 登录您的 Google 帐号。

    如果您还没有 Google 帐号,请注册新帐号

  2. 选择或创建 Google Cloud Platform 项目。

    转到“管理资源”页面

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

    了解如何启用结算功能

  4. {% dynamic if "no_credentials" in setvar.task_params %}{% dynamic setvar credential_type %}NO_AUTH{% dynamic endsetvar %}{% dynamic if not setvar.redirect_url %}{% dynamic setvar redirect_url %}https://console.cloud.google.com{% dynamic endsetvar %}{% dynamic endif %}{% dynamic endif %}{% dynamic if setvar.in_henhouse_no_auth_whitelist %}{% dynamic if not setvar.credential_type %}{% dynamic setvar credential_type %}NO_AUTH{% dynamic endsetvar %}{% dynamic endif %}{% dynamic elif setvar.in_henhouse_service_account_whitelist %}{% dynamic if not setvar.credential_type %}{% dynamic setvar credential_type %}SERVICE_ACCOUNT{% dynamic endsetvar %}{% dynamic endif %}{% dynamic endif %}{% dynamic if not setvar.service_account_roles and setvar.credential_type == "SERVICE_ACCOUNT" %}{% dynamic setvar service_account_roles %}{% dynamic endsetvar %}{% dynamic endif %}{% dynamic setvar console %}{% dynamic if "no_steps" not in setvar.task_params %}
  5. {% dynamic endif %}{% dynamic if setvar.api_list %}{% dynamic if setvar.in_henhouse_no_auth_whitelist or setvar.in_henhouse_service_account_whitelist %}设置 GCP Console 项目。

    设置项目

    点击即可执行以下操作:

    • 创建或选择项目。
    • 为该项目启用{% dynamic if setvar.api_names %}{% dynamic print setvar.api_names %}{% dynamic else %}所需的{% dynamic endif %}{% dynamic if "," in setvar.api_list %} API{% dynamic elif "API" in setvar.api_names %}{% dynamic else %} API{% dynamic endif %}。
    • {% dynamic if setvar.credential_type == 'SERVICE_ACCOUNT' %}
    • 创建服务帐号。
    • 下载 JSON 格式的私钥。
    • {% dynamic endif %}

    您可以随时在 GCP Console 中查看和管理这些资源。

    {% dynamic else %}{% dynamic if "no_text" not in setvar.task_params %}启用{% dynamic if setvar.api_names %}{% dynamic print setvar.api_names %}{% dynamic else %}所需的{% dynamic endif %}{% dynamic if "," in setvar.api_list %} API{% dynamic elif "API" in setvar.api_names %}{% dynamic else %} API{% dynamic endif %}。 {% dynamic endif %}

    启用{% dynamic if "," in setvar.api_list %} API{% dynamic else %} API{% dynamic endif %}

    {% dynamic endif %}{% dynamic endif %}{% dynamic if "no_steps" not in setvar.task_params %}
  6. {% dynamic endif %}{% dynamic endsetvar %}{% dynamic print setvar.console %}
  7. 安装 Ruby 2.2+ 或更高版本。

安装库

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

  1. 将 Stackdriver gem 添加到 Gemfile:

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

    bundle install
    

启用库

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

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

require "google/cloud/logging"

use Google::Cloud::Logging::Middleware

配置库

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

使用 Stackdriver Logging 日志记录器

Ruby 版 Stackdriver Logging 库一旦启用,您便可以在应用中使用日志记录器:

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

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

直接使用 Cloud 客户端库

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

在 Google Cloud Platform 上运行

要使用 Ruby 版 Stackdriver Logging 库,您需要具有 GCP 的 Cloud IAM Logs Writer 角色。大多数 GCP 环境默认提供此角色。

App Engine

App Engine 默认授予 Logs Writer 角色

无需明确提供凭据即可使用 Ruby 版 Stackdriver Logging 库。

系统会自动为 App Engine 应用启用 Stackdriver Logging。无需进行额外设置。

Google Kubernetes Engine

Google Kubernetes Engine 上,您必须在创建集群时添加 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 Platform Console 创建新实例时,您可以在创建实例面板的身份和 API 访问权限部分中执行此操作。请使用 Compute Engine 默认服务帐号或所选的其他服务帐号,并在身份和 API 访问权限部分中勾选允许所有 Cloud API 的全面访问权限。无论您选择哪个服务帐号,都请确保已在 GCP Console 的 IAM 和管理部分中向该服务帐号授予 Logs Writer 角色

在本地和其他位置运行

要在 Google Cloud Platform 之外(包括您自己的工作站、您数据中心的计算机或另一家云提供商的虚拟机实例上)使用 Ruby 版 Stackdriver Logging 库,您必须直接向 Ruby 版 Stackdriver Logging 库提供您的 GCP 项目 ID 和相应的服务帐号凭据。

您可以手动创建和获取服务帐号凭据。指定角色字段时,请使用 Logs Writer 角色。要详细了解 Cloud Identity and Access Management 角色,请转到访问控制指南

* 使用 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

您还可以使用以下代码为所有 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 在生产模式下运行,则默认启用 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

您还可以使用以下代码为所有 Stackdriver 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

查看日志

部署后,您可以在 GCP Console 日志查看器中查看日志。

转到“日志查看器”

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

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

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

  • 如果您将在 Google Kubernetes Engine 上部署应用,则集群的日志记录配置将确定日志条目的资源类型。如需关于旧版 Stackdriver 和 Stackdriver Kubernetes Monitoring 解决方案以及这些选项如何影响资源类型的详细讨论,请参阅迁移到 Stackdriver Kubernetes Monitoring

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

  • 如果您在“日志查看器”中没有看到任何日志,要查看所有日志条目,请切换到高级过滤条件模式并使用空过滤条件。

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

    您可以检查各个条目以识别您的资源。

如需了解其他信息,请参阅查看日志高级日志过滤条件

此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页
Stackdriver Logging
需要帮助?请访问我们的支持页面