设置 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. 启用Stackdriver Logging API。

    启用 API

  5. 安装 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
需要帮助?请访问我们的支持页面