トラブルシューティング

Error Reporting にご使用のアプリケーションのエラーが表示されない場合は、次の手順でトラブルシューティングを行います。

始める前に

  1. Error Reporting でログを分析できることを確認します。

    Error Reporting は Cloud Logging 上に構築されたグローバル サービスであり、次の条件をすべて満たしている場合にログエントリを分析できます。

    • ログエントリは、global ロケーションのログバケットに保存されます。
    • ログバケットで顧客管理の暗号鍵(CMEK)が無効になっています。ログバケットの CMEK 構成を決定する方法については、鍵の有効化を確認するをご覧ください。
    • ログバケットが次のいずれかを満たしている。
      • ログバケットは、ログが発生した場所と同じプロジェクトに保存されます。
      • ログがプロジェクトにルーティングされ、そのプロジェクトで所有するログバケットにログが保存されました。

    Error Reporting でログを分析できるかどうかを確認するには、ソースとデスティネーションの Google Cloud プロジェクトが同じである global リージョンのバケットにログを保存していることを確認してください。

    構成したシンクのリストを表示するには、次のコマンドを実行します。

    gcloud logging sinks list
    

    このコマンドでは、次のような出力が返されます。

    NAME               DESTINATION                                                                                                FILTER
    _Default           logging.googleapis.com/projects/my-team-project/locations/global/buckets/_Default                          NOT LOG_ID("cloudaudit.googleapis.com/activity") AND NOT LOG_ID("externalaudit.googleapis.com/activity") AND NOT LOG_ID("cloudaudit.googleapis.com/system_event") AND NOT LOG_ID("externalaudit.googleapis.com/system_event") AND NOT LOG_ID("cloudaudit.googleapis.com/access_transparency") AND NOT LOG_ID("externalaudit.googleapis.com/access_transparency")
    _Required          logging.googleapis.com/projects/my-team-project/locations/global/buckets/_Required                         LOG_ID("cloudaudit.googleapis.com/activity") OR LOG_ID("externalaudit.googleapis.com/activity") OR LOG_ID("cloudaudit.googleapis.com/system_event") OR LOG_ID("externalaudit.googleapis.com/system_event") OR LOG_ID("cloudaudit.googleapis.com/access_transparency") OR LOG_ID("externalaudit.googleapis.com/access_transparency")
    logs-from-samples  logging.googleapis.com/projects/my-team-project/locations/global/buckets/sample-bucket                     (empty filter)
    regional_logs      logging.googleapis.com/projects/my-team-project/locations/europe-west1/buckets/bucket_for_regional_logs    (empty filter)
    test-logs          logging.googleapis.com/projects/team-b-project/locations/global/buckets/test-bucket                        (empty filter)
    

    この例の場合、ログのソース Google Cloud プロジェクトは my-team-project です。結果として次のようになります。

    • Error Reporting は、同じプロジェクト内の global リージョン内のバケットにログをルーティングするため、_Default_Requiredlogs-from-samples の各シンクによってルーティングされるログを分析できます。
    • Error Reporting は、test-logs という名前のログバケットに保存されているログを分析できません。これは、my-team-project のシンクが別のプロジェクトのログバケットにログをルーティングするためです。
    • Error Reporting は、europe-west1 リージョン内のリージョン バケットにログをルーティングするため、regional_logs シンクによってルーティングされるログを分析できません。
  2. Google Cloud CLI がインストールされていることを確認します。

  3. beta コンポーネントが gcloud CLI に対して有効になっていることを確認します。

ログの使用時

このセクションでは、エラーデータが Cloud Logging バケットに書き込まれ、Error Reporting を使用してそれらのログバケットを自動的に分析する場合のトラブルシューティング サポートを提供します。

サンプル ログエントリを生成する

プロジェクト設定を確認するには、次の gcloud コマンドを使用して、Error Reporting によって取得されるログエントリをプログラムで生成します。

gcloud logging write --payload-type=json test-errors-log \
  '{"serviceContext":
    {"service": "manual-testing"},
    "message": "Test Error\n at /test.js:42:42",
    "context": {"httpRequest":
      {"url": "/test","method": "GET","responseStatusCode": 500}}}'

次に Error Reporting を開き、新しく作成されたエラーが表示されていることを確認します。

ログエントリのフォーマットを確認する

[Cloud Logging] ページを開き、ご使用のアプリケーションから送信された例外データを含むログエントリを見付けます。

ログエントリで正しいフォーマットが使用されていることを確認します。

Error Reporting API の使用時

API を有効にする

Google Cloud コンソールのナビゲーション パネルで [API とサービス] を選択し、[API とサービスの有効化] をクリックして、Error Reporting API を有効にします。

Error Reporting API の設定に移動

テストエラーを送信する

手動でエラーをサービスに送信してみます。

次の gcloud コマンドを使用して、Error Reporting にテストエラーを報告できます。

gcloud beta error-reporting events report --service Manual --service-version test1 \
  --message "java.lang.TestError: msg
    at com.example.TestClass.test(TestClass.java:51)
    at com.example.AnotherClass(AnotherClass.java:25)"

cURL コマンドを使用して REST API 呼び出しをテストできます。次のコマンドを送信する前に、PROJECT_IDAPI_KEY を有効な値に置き換えます。

curl -X POST -H "Content-Type: application/json" \
  -d '{"message":"java.lang.TestError: msg\n\tat com.example.TestClass.test(TestClass.java:51)\n\tat com.example.AnotherClass(AnotherClass.java:25)","serviceContext":{"service":"manual-testing"}}' \
  https://clouderrorreporting.googleapis.com/v1beta1/projects/PROJECT_ID/events:report?key=API_KEY

送信されたペイロードを確認する

使用するアプリケーションから例外データが正しいフォーマットで API に送信され、そのデータに必要な属性が含まれていることを確認します。