Go 用の Error Reporting の設定

Go アプリケーションから Error Reporting にエラーレポートを送信するには、Go 用 Error Reporting パッケージを使用します。

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

Logging を使用して、エラーデータを Error Reporting に送信することもできます。データ形式の要件については、Logging のエラー メッセージの形式設定をご覧ください。

始める前に

  1. Google アカウントにログインします。

    Google アカウントをまだお持ちでない場合は、新しいアカウントを登録します。

  2. Cloud Console のプロジェクト セレクタページで、Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタのページに移動

  3. Google Cloud プロジェクトに対して課金が有効になっていることを確認します。 プロジェクトに対して課金が有効になっていることを確認する方法を学習する

  4. Error Reporting API を有効にします。

    API を有効にする

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

Go 用 Error Reporting パッケージを使用すると、ほぼすべての場所で動作している Go アプリケーションから報告されるエラーをモニタリングして表示できます。

  1. go get を使用してパッケージをインストールします。

    go get -u cloud.google.com/go/errorreporting

インストールの詳細については、Go 用 Error Reporting パッケージのドキュメントをご覧ください。Issue Tracker を使用して問題を報告することもできます。

クライアント ライブラリの構成

Go 用 Error Reporting パッケージの動作をカスタマイズできます。godoc をご覧ください。

エラーの報告


    // Sample errorreporting_quickstart contains is a quickstart
    // example for the Google Cloud Error Reporting API.
    package main

    import (
    	"context"
    	"log"
    	"net/http"

    	"cloud.google.com/go/errorreporting"
    )

    var errorClient *errorreporting.Client

    func main() {
    	ctx := context.Background()

    	// Sets your Google Cloud Platform project ID.
    	projectID := "YOUR_PROJECT_ID"

    	var err error
    	errorClient, err = errorreporting.NewClient(ctx, projectID, errorreporting.Config{
    		ServiceName: "myservice",
    		OnError: func(err error) {
    			log.Printf("Could not log error: %v", err)
    		},
    	})
    	if err != nil {
    		log.Fatal(err)
    	}
    	defer errorClient.Close()

    	resp, err := http.Get("not-a-valid-url")
    	if err != nil {
    		logAndPrintError(err)
    		return
    	}
    	log.Print(resp.Status)
    }

    func logAndPrintError(err error) {
    	errorClient.Report(errorreporting.Entry{
    		Error: err,
    	})
    	log.Print(err)
    }
    

パニックやエラーの報告方法のその他の例については、godoc をご覧ください。

Google Cloud での実行

Go 用 Error Reporting パッケージを使用するには、Cloud Identity and Access Management Error Reporting Writer 役割が必要です。ほとんどの Google Cloud コンピューティング プラットフォームでは、デフォルトでこの役割が付与されます。

App Engine フレキシブル環境

App Engine は、デフォルトで Error Reporting Writer 役割を付与します。

Go 用 Error Reporting パッケージは、明示的に認証情報を提示しなくても使用できます。

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

Google Kubernetes Engine

GKE では、次のサンプル コマンドのように、クラスタの作成時に cloud-platform アクセス スコープを追加する必要があります。

    gcloud container clusters create example-cluster-name --scopes https://www.googleapis.com/auth/cloud-platform
    

Compute Engine

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

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

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

手動でサービス アカウントの認証情報を作成して取得できます。[役割] フィールドを指定する場合は、Error Reporting Writer 役割を使用します。Cloud Identity and Access Management の役割の詳細については、アクセス制御ガイドを参照してください。

エラーレポートの表示

デプロイ後は、Cloud Console Error Reporting ダッシュボードでエラーレポートを表示できます。

Error Reporting ダッシュボードに移動

詳細については、エラーの表示をご覧ください。