Error Reporting 用 Ruby アプリのインストルメント化

Ruby アプリケーションから Error Reporting にエラーイベントを送信するには、 Ruby 用 Error Reporting ライブラリを使用します。 次の場合は、Ruby 用 Error Reporting ライブラリを使用してエラーグループを作成します。

  • ログエントリを含むログバケットに、顧客管理の暗号鍵(CMEK)がある。
  • ログバケットが次のいずれかの条件を満たしている。
    • ログバケットがログエントリの元のプロジェクトに保存されている。
    • ログエントリがプロジェクトに転送され、そのプロジェクトがそれらのログエントリを、所有するログバケットに保存した。
  • カスタム エラーイベントを報告する場合。

Error Reporting は、Cloud Run functions、App Engine、Compute Engine、Google Kubernetes Engine などの一部の Google Cloud サービスに統合されています。Error Reporting は、こうしたサービスで実行されるアプリケーションによって Cloud Logging に記録されたエラーイベントを表示します。 詳細については、このページの での実行 Google Cloudをご覧ください。

Logging を使用して、エラーイベントを Error Reporting に送信することもできます。データ形式の 要件については、 ログエントリの形式を設定してエラーイベントを報告するをご覧ください。

始める前に

  1. アカウントにログインします。 Google Cloud を初めて使用する場合は、 アカウントを作成して、実際のシナリオで Google プロダクトのパフォーマンスを評価してください。 Google Cloud新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Error Reporting API .

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

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

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Error Reporting API .

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    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 ミドルウェアを使用できます。

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 書き込みロール(roles/errorreporting.writer)が適切な サービス アカウントに自動的に付与されます。ただし、一部のサービスでは、適切なサービス アカウントにこのロールを付与する必要があります。

Cloud Run と Cloud Run functions

Cloud Run で使用されるデフォルトのサービス アカウントには、 Error Reporting 書き込みロールroles/errorreporting.writer)の権限があります。

Ruby 用 Error Reporting ライブラリは、明示的に認証情報を提示しなくても使用できます。

Cloud Run は、自動的に Error Reporting を使用するように構成されています。JavaScript の未処理の例外は、Logging に表示され、Ruby 用 Error Reporting ライブラリを使用しなくても、Error Reporting によって処理されます。

ERROR

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

インストルメンテーション設定インタフェースの使用

他の 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

App Engine フレキシブル環境

App Engine では、デフォルトのサービス アカウントに Error Reporting 書き込みロールroles/errorreporting.writer)が自動的に付与されます。

Ruby 用 Error Reporting ライブラリは、明示的に認証情報を提示しなくても使用できます。

App Engine のフレキシブル環境のアプリケーションでは、Error Reporting が自動的に有効になります。特別な設定は必要ありません。

Google Kubernetes Engine

Google Kubernetes Engine で Error Reporting を使用するには、次の操作を行います。

  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

Compute Engine VM インスタンスで Error Reporting を使用するには、次の操作を行います。

  1. VM インスタンスが使用するサービス アカウントに、Error Reporting 書き込みロールroles/errorreporting.writer)が付与されていることを確認します。

    Compute Engine のデフォルトのサービス アカウント またはカスタム サービス アカウントを使用できます。

    ロールの付与については、 プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。

  2. コンソールで [**VM インスタンス**] ページに移動します。 Google Cloud

    [VM インスタンス] に移動

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

  3. cloud-platform アクセス スコープを適用する VM インスタンスを選択します。

  4. [停止] をクリックし、[編集] をクリックします。

  5. [ID と API へのアクセス] セクションで、Error Reporting 書き込みロール(roles/errorreporting.writer)を持つサービス アカウントを選択します。

  6. [**アクセス スコープ**] セクションで、 [**すべての Cloud API に完全アクセス権を許可**] を選択し、変更を保存します。

  7. [開始 / 再開] をクリックします。

ラックベースのフレームワークでのエラー報告

Ruby 用の Error Reporting ライブラリを使用すると、Ruby on Rails や Sinatra などの一般的なラックベースの Ruby ウェブ フレームワークに Error Reporting を簡単に統合できます。ライブラリを有効にすると、アプリケーションのラックスタックからキャプチャされた例外が自動的に報告されます。

手動でのエラー報告

手動でエラーを報告するには、次の例で示すように、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. Google Cloud CLI をインストールします。

  2. 外部 ID プロバイダ(IdP)を使用している場合は、まず フェデレーション ID を使用して gcloud CLI にログインする必要があります

  3. ローカルシェルを使用している場合は、ユーザーアカウントのローカル認証情報を作成します。

    gcloud auth application-default login

    Cloud Shell を使用している場合は、この操作を行う必要はありません。

    認証エラーが返され、外部 ID プロバイダ (IdP)を使用している場合は、フェデレーション ID を使用して gcloud CLI にログインしていることを確認します。

詳細については、 ローカル開発環境の認証を設定するをご覧ください。

The projects.events.report method also supports API keys. 認証に API キーを使用する場合、ローカルのアプリケーションのデフォルト認証情報ファイルを設定する必要はありません。 詳細については、 API キーを作成する 認証ドキュメントの Google Cloud をご覧ください。

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

インストルメンテーション設定インタフェースの使用

他の 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

エラーグループを表示する

コンソールで [Error Reporting] ページに移動します。 Google Cloud

Error Reporting に移動

このページは、検索バーを使用して見つけることもできます。

詳細については、 エラーグループを表示してフィルタするをご覧ください。