Error Reporting を使用すると、Compute Engine アプリケーションのクラッシュを集計し、ランタイム例外を診断できます。エラーデータを送信するには、Cloud Logging にログをストリーミングするか、Error Reporting API を直接呼び出します。Logging を使用する場合、ログエントリは形式の要件に準拠している必要があります。
ロギングを使用してエラーを報告する
Compute Engine アプリケーションを Error Reporting に接続するには、次のいずれかのエージェントを使用して、例外やその他のエラーを Logging に送信します。
Ops エージェント
Ops エージェントを使用するように Error Reporting を設定する手順は次のとおりです。
ご使用の環境に適した Ops エージェントをインストールします。手順については、Ops エージェントのインストールをご覧ください。
アプリケーション ログを収集して適切にフォーマットするように Ops エージェントを構成します。
サポートされているサードパーティ アプリケーションの場合: Ops エージェントは、ログエントリを自動的にキャプチャして、Error Reporting が認識する構造化形式に解析する、事前構成済みのロギング レシーバを提供します。サポートされているサードパーティ アプリケーションについては、サードパーティ アプリケーションのモニタリングをご覧ください。
カスタム アプリケーションの場合: ロギング レシーバを構成してログファイルの場所を指定し、次のいずれかのプロセッサとペア設定します。
- アプリが複数行にわたってプレーン テキストのスタック トレースを書き込む場合は、
parse_multilineプロセッサを使用します。 - アプリがログを JSON 文字列として書き込む場合は、
parse_jsonプロセッサを使用します。
詳しい手順については、Ops エージェントを構成するをご覧ください。
- アプリが複数行にわたってプレーン テキストのスタック トレースを書き込む場合は、
アプリケーションが標準のスタック トレースを生成しない場合は、例外とスタック トレースを Cloud Logging に記録するようにアプリケーションを変更します。
単一のエラーまたは例外に関する情報は、スタック トレースのすべてのフレームを含め、すべて同じログエントリに格納する必要があります。すべての情報が 1 つにまとめられていないと、Error Reporting でエラーを検出できない可能性があります。ログエントリのペイロードに構造化 JSON 形式を使用すると、各エラーに関するさまざまな情報を含めることができます。
以前の Logging エージェント
以前の Logging エージェントを使用するように Error Reporting を設定する手順は次のとおりです。
- ご使用の環境に適した Logging
google-fluentdエージェントをインストールします。手順については、Logging エージェントをインストールするをご覧ください。 例外とスタック トレースを Logging に記録するようにアプリケーションを変更します。
単一のエラーまたは例外に関する情報は、スタック トレースのすべてのフレームを含め、すべて同じログエントリに格納する必要があります。すべての情報が 1 つにまとめられていないと、Error Reporting でエラーを検出できない可能性があります。ログエントリのペイロードに構造化 JSON 形式を使用すると、各エラーに関するさまざまな情報を含めることができます。
Java
次のコードを pom.xml ファイルに追加します。
次に、例外データを送信するために、次のようなコードを使用します。
Python
まず、fluent-logger-python ライブラリをインストールします。
sudo pip install fluent-logger
次に、例外データを送信するために、次のようなコードを使用します。
Node.js
まず、fluent-logger-node ライブラリをインストールします。
npm install fluent-logger
次に、例外データを送信するために、次のようなコードを使用します。
Go
まず、fluent-logger-golang パッケージをインストールします。
go get github.com/fluent/fluent-logger-golang/
次に、エラーデータを送信するために、次のようなコードを使用します。
Error Reporting API を使用してエラーを書き込む
Error Reporting API は、エラー情報をサービスに書き込むための report エンドポイントを提供します。
Error Reporting API を有効にします(有効になっていない場合)。
API を有効にするために必要なロール
API を有効にするには、
serviceusage.services.enable権限が必要です。プロジェクトを作成した場合は、オーナーロール(roles/owner)を通じてこの権限がすでに付与されている可能性があります。それ以外の場合は、Service Usage 管理者ロール(roles/serviceusage.serviceUsageAdmin)を通じてこの権限を取得できます。ロールを付与する方法を確認する。REST API またはクライアント ライブラリのいずれかを使用して、API にエラーを報告します。
サンプル
ASP.NET
ASP.NET NuGet パッケージにより、捕捉されなかった例外が ASP.NET ウェブ アプリケーションから Error Reporting に報告されます。
NuGet パッケージをインストールする
Stackdriver ASP.NET NuGet パッケージを Visual Studio にインストールするには:
- ソリューションを右クリックして、[ソリューションの NuGet パッケージの管理] を選択します。
- [プレリリースを含む] チェックボックスを選択します。
Google.Cloud.Diagnostics.AspNetという名前のパッケージを検索してインストールします。
使用法
Stackdriver ASP.NET NuGet パッケージをインストールしたら、次のステートメントをアプリケーション コードに追加して Stackdriver へのエラーの送信を開始します。
using Google.Cloud.Diagnostics.AspNet;
例外の報告を有効にするには、次の HttpConfiguration コードを .NET ウェブアプリの Register メソッドに追加します(your-project-id は実際のプロジェクト ID に置き換えます)。
このメソッドを使用する ASP.NET アプリケーションに追加すると、発生した例外で捕捉されなかった例外が Google Cloud コンソールの Error Reporting セクションで Google Cloudに報告されるため、これらの例外を表示することができます。
C#
次の例は、GoogleCloudPlatform/dotnet-docs-samples リポジトリにあります。これを使用するには、プロジェクトのビルド後に次のようにプロジェクト ID を指定します。
C:\...\bin\Debug> set GOOGLE_PROJECT_ID=[YOUR_PROJECT_ID]
[YOUR_PROJECT_ID] はGoogle Cloud コンソールの正しい値に置き換えます。
その後、次のようなコードで例外データを送信します。
Go
Go 用 Error Reporting の設定をご覧ください。
Java
Java 用 Error Reporting の設定をご覧ください。
Node.js
Node.js 用 Error Reporting の設定をご覧ください。
Ruby
Ruby 用 Error Reporting の設定をご覧ください。
Python
Python 用 Error Reporting の設定をご覧ください。
PHP
PHP 用 Error Reporting の設定をご覧ください。
エラーグループを表示する
Google Cloud コンソールで [Error Reporting] ページに移動します。
このページは、検索バーを使用して見つけることもできます。