Ruby 用 Cloud Logging の設定

Ruby 用 Cloud Logging ライブラリを使用するか、Ruby 用 Cloud Logging クラウド クライアント ライブラリを直接使用して、Ruby アプリケーションから Cloud Logging にログを書き込むことができます。

Ruby 用 Cloud Logging ライブラリを Compute Engine VM インスタンスで使用するために、Cloud 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 Cloud Logging 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 Cloud Logging API.

    Enable the API

  8. Ruby 2.2 以降をインストールします。

ライブラリのインストール

Google が提供する Ruby 用 Cloud Logging ライブラリでは、ラックベース Ruby ウェブ フレームワーク向けに、使いやすいロガー実装が公開されています。

  1. Gemfile に Google Cloud Observability gem を追加します。

    gem "stackdriver"
  2. Bundler を使用して gem をインストールします。

    bundle install
    

ライブラリの有効化

Ruby on Rails を使用している場合、Bundler が起動するときにライブラリがアプリケーションに自動的に読み込まれ、デフォルトの Rails.logger が Cloud Logging ロガーのインスタンスに設定されます。

他のラックベースのアプリケーションでは、ウェブ フレームワークでラックロガーがサポートされる場合、ラック ミドルウェアを使用して、ラックロガーを 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 クライアント ライブラリを使用してログを書き込む

Ruby 用 Cloud Logging クライアント ライブラリを直接使用する方法については、Cloud Logging クライアント ライブラリをご覧ください。

Google Cloud での実行

Ruby 用 Cloud Logging ライブラリを使用してログを書き込むアプリでは、基盤となるリソースのサービス アカウントにログ書き込み(roles/logging.logWriter IAMのロールが必要です。ほとんどの Google Cloud 環境では、このロールを持つようにデフォルトのサービス アカウントが自動的に構成されます。

App Engine

App Engine では Cloud Logging が自動的に有効になり、アプリのデフォルトのサービス アカウントにログエントリを書き込む IAM 権限がデフォルトで付与されます。

詳細については、ログの書き込みと表示をご覧ください。

Google Kubernetes Engine(GKE)

GKE は、デフォルトのサービス アカウントにログ書き込み(roles/logging.logWriter IAM ロールを自動的に付与します。このデフォルトのサービス アカウントで Workload Identity Federation for GKE を使用して、ワークロードが特定の Google Cloud API にアクセスできるようにする場合、追加の構成は必要ありません。ただし、カスタム IAM サービス アカウントで Workload Identity Federation for GKE を使用する場合は、カスタム サービス アカウントにログ書き込みロール(roles/logging.logWriter)があることを確認してください。

必要に応じて、クラスタの作成時に次のコマンドを使用して logging.write アクセス スコープを追加することもできます。

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

Compute Engine

Compute Engine VM インスタンスを使用する場合は、各インスタンスに cloud-platform アクセス スコープを追加します。Google Cloud Console から新しいインスタンスを作成する場合は、[インスタンスの作成] パネルの [ID と API へのアクセス] のセクションで行います。Compute Engine のデフォルト サービス アカウントまたは別のサービス アカウントを使用し、[ID と API へのアクセス] セクションの [すべての Cloud API に完全アクセス権を許可] を選択します。どのサービス アカウントを選択する場合でも、Google Cloud コンソールの [IAM と管理] でログ書き込みロールが付与されていることを確認してください。

ローカルやその他の場所で実行する

自分のワークステーション、データセンターのコンピュータ、別のクラウド プロバイダの VM インスタンスでライブラリを実行するなど、Google Cloud の外部で Ruby 用 Cloud Logging ライブラリを使用するには、Google Cloud プロジェクト ID と適切なサービス アカウント認証情報を Ruby 用 Cloud Logging ライブラリに直接提供する必要があります。

既存のサービス アカウントの場合は、次の操作を行います。

  1. サービス アカウントに IAM のログ書き込み(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 を本番環境で稼働する場合、ロギングはデフォルトで有効になります。開発モードでロギングを有効にするには、次のとおり追加します。

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

インストルメンテーション構成インターフェースの使用:

その他のラックベースのアプリケーションで使用する場合は、構成インターフェースを介してパラメータを指定します。

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 コンソールで、[ログ エクスプローラ] ページに移動します。

[ログ エクスプローラ] に移動

検索バーを使用してこのページを検索する場合は、小見出しが [Logging] である結果を選択します。

ログ エクスプローラでは 1 つ以上のリソースを指定する必要がありますが、リソースの選択が明確でない場合があります。その場合は、次のヒントを参考にしてください。

  • アプリケーションを App Engine にデプロイしている場合や、App Engine 固有のライブラリを使用している場合は、リソースを GAE アプリケーションに設定します。

  • アプリケーションを Compute Engine にデプロイしている場合は、リソースを GCE VM インスタンスに設定します。

  • アプリケーションを Google Kubernetes Engine にデプロイしている場合は、クラスタのロギング構成に応じてログエントリのリソースタイプが異なります。レガシー Google Cloud Observability と Google Cloud Observability Kubernetes Monitoring ソリューションに関する詳細な論議、およびどのようにこれらのオプションがリソースタイプに影響を与えるかについては、Google Cloud Observability Kubernetes Monitoring をご覧ください。

  • アプリケーションが Cloud Logging API を直接使用している場合、リソースは API と構成に依存します。たとえば、アプリケーションでリソースを指定することも、デフォルトのリソースを使用することもできます。

  • ログ エクスプローラにログが表示されない場合に、すべてのログエントリを表示するには、高度なクエリモードに切り替えて空のクエリを使用します。

    1. 高度なクエリモードに切り替えるには、ログ エクスプローラの上部にあるメニュー(▾)をクリックし、[高度なフィルタに変換] を選択します。
    2. フィルタ ボックスに表示されているコンテンツをクリアします。
    3. [フィルタを送信] をクリックします。

    個々のエントリを調べてリソースを特定します。

詳細については、ログ エクスプローラの使用をご覧ください。