集計ジョブを診断する

次の表に、さまざまな問題とエラー ステータス コード、原因の可能性、デプロイを軽減するために実行できるアクションを示します。Aggregation Service のエラーの仕様と緩和策の詳細については、最新の公開ガイダンスをご覧ください。

ガイドのトピック:

権限と認証のエラー

問題 パブリック クラウド プロジェクトに対して terraform plan または terraform apply を実行する際の権限に関する問題。
エラーの例 Error: UnauthorizedOperation: You are not authorized to perform this operation.
解決策

利用しているパブリック クラウドの CLI(コマンドライン インターフェース)に対して適切に認証されていることを確認します。

Amazon Web Services

AWS では、集約サービスに必要なインスタンスやその他のサービスを作成するためのユーザー権限が必要です。これを適用すると、Terraform の plan と apply を問題なく実行できるようになります。

Google Cloud Platform

Google Cloud では、Terraform の後半をデプロイするにはサービス アカウントの権限を借用する必要があります。この手順をスキップした場合、デプロイ サービス アカウントにはリソースの作成に必要なすべての権限があるため、terraform apply コマンドが失敗する可能性があります。GitHub のドキュメントの「デプロイ環境を設定する」のステップ 4 をご覧ください。

プライバシー バジェットのエラー

エラー PRIVACY_BUDGET_ERROR
原因 これは、プライバシー バジェット サービスでエラーが発生したため、サービスがレポートを処理できなかったことを示します。
小切手 ジョブを再試行してエラーが断続的なものかどうかを確認したら、テクニカル サポート フォームからお問い合わせください。
エラー PRIVACY_BUDGET_AUTHORIZATION_ERROR
原因 オンボーディング時に提供されたレポート送信元とは異なるレポート送信元を使用している可能性があります。
小切手

createJob リクエストの attribution_report_to フィールドで送信するサイトが、オンボーディング時に送信したサイトと同じであることを確認します。

サイトは、オンボーディングされたサイトと一致するか、そのサブドメインである必要があります。なお、集約サービスのオンボーディングは最上位ドメインで処理され、最上位ドメインがオンボーディングされると、すべてのサブドメインが集約サービスを使用できるようになります。

エラー PRIVACY_BUDGET_AUTHENTICATION_ERROR
原因 古い ARN または正しくない ARN を使用している可能性があります。
小切手 Google Cloud Platform

Aggregation Service のデプロイで使用されているサービス アカウントが、オンボーディング時に指定したサービス アカウントと一致していることを確認します。同じプロジェクトに属しているだけでなく、正確に一致している必要があります。

Amazon Web Services

メールで提供されたコーディネーターと同じコーディネーターを使用していることが前提となります。それでも問題が解決しない場合は、auto.tfvars ファイルと報告元の情報を収集し、テクニカル サポート フォームからお問い合わせください。

エラー PRIVACY_BUDGET_EXHAUSTED
原因 エラー:
            "result_info": {
              "return_code": "PRIVACY_BUDGET_EXHAUSTED",
              "return_message": "com.google.aggregate.adtech.worker.exceptions.AggregationJobProcessException:
              Insufficient privacy budget for one or more aggregatable reports. No aggregatable report can appear
              in more than one aggregation job. Information related to reports that do not have budget can be
              found in the following file:
              File path: //
              Filename: privacy budget exhausted debugging information  \n
              com.google.aggregate.adtech.worker.aggregation.concurrent.ConcurrentAggregationProcessor.consumePrivacyBudgetUnits(ConcurrentAggregationProcessor.java:525) \n com.google.aggregate.adtech.worker.aggregation.concurrent.ConcurrentAggregationProcessor.process(ConcurrentAggregationProcessor.java:319) \n com.google.aggregate.adtech.worker.WorkerPullWorkService.run(WorkerPullWorkService.java:157)",
              "error_summary": {
                  "error_counts": [],
                  "error_messages": []
              },
              "finished_at": 
            }
          

プライバシー バジェットの上限に関する問題は、共有 ID が以前に正常に処理されたバッチにすでに含まれているレポートをバッチ処理しようとした場合に発生します。このエラーは、「重複なし」ルールが原因で発生します。このルールでは、集計可能なレポートは 1 つのバッチにのみ表示され、1 つの概要レポートにのみ追加できます。

各レポートには、shared_info フィールド API、reporting_origindestination_sitesource_registration_time(日付で切り捨て)、scheduled_report_time(時間で切り捨て)、version で構成される「共有 ID」が割り当てられます。つまり、複数のレポートが shared_info フィールドの同じ属性を共有している場合、同じ「共有 ID」に属することになります。

小切手

ジョブ レスポンスから提供されるプライバシー バジェットの上限超過サポートを試して、エラーを検査して解決することをおすすめします。これにより、エラーの原因となったレポートを把握できる新しいヘルパー JSON ファイルが提供されます。

バッチ処理が正しく行われていれば、予算の回復(説明)の対象となる場合があります。説明を読んでフォームに記入することをおすすめします。ただし、予算を正常に回復してジョブを再実行するには、リクエストが承認される必要があります。

エラー DEBUG_SUCCESS_WITH_PRIVACY_BUDGET_EXHAUSTED
原因 これは、ジョブをデバッグモードで実行していることを示します。createJob リクエストの job_parameters には debug_run: true が含まれています。debug_run フラグが有効になっている場合は、デバッグ目的でレポートを複数回実行できます。このエラー メッセージは、デバッグモードで実行されていなかった場合、レポートのプライバシー バジェットが使い果たされてジョブが失敗したことを示しています。このエラーは、リリース v2.10.0 以前でのみ有効です。
小切手 createJob リクエストの本文には、job_parametersdebug_run が含まれます。
            {
              "job_request_id": "{job_request_id}",
              "input_data_blob_prefix": "{input_prefix}",
              "input_data_bucket_name": "{input_bucket}",
              "output_data_blob_prefix": "{output_prefix}",
              "output_data_bucket_name": "{output_bucket}",
              "job_parameters": {
                "output_domain_blob_prefix": "{output_domain_prefix}",
                "output_domain_bucket_name": "{output_domain_bucket}",
                "attribution_report_to": "{reporting_origin}",
                "debug_run": "true"
              }
            }
          

ジョブのランタイム エラー

エラー INVALID_JOB
エンドポイント createJob
原因 これは、指定されたデバッグ プライバシー イプシロンが範囲(0.64] 内にない場合や、ジョブ パラメータの検証に失敗した場合に発生することがあります。
小切手 使用されたエプシロン値はどれですか。createJob リクエストで使用されたジョブパラメータはどのようなもので、環境と一致していますか?形式は正しいですか?必要な修正を加えてジョブを再試行します。
エラー INTERNAL_ERROR
エンドポイント getJob
原因 出力ドメインまたはレポートの処理に失敗する原因となる書式設定の問題である可能性があります。Aggregation Service のデプロイに問題がある場合もあります。
小切手 出力ドメインの場所が有効なパスであることを確認します。ジョブを再試行します。エラーが解決しない場合は、auto.tfvars ファイルと Terraform プランの出力をリクエストして、Aggregation Service のデプロイをトラブルシューティングします。
エラー RESULT_WRITE_ERROR
エンドポイント getJob
原因 これは、出力ディレクトリへの書き込みが一時的に失敗した場合や、ディレクトリに対する書き込み権限が不足している場合に発生することがあります。書き込みエラーはプライバシー バジェットを消費し、ジョブを再試行することはできません。これにより、PRIVACY_BUDGET_EXHAUSTED エラーという別のエラー結果が発生する可能性があります。
小切手 このエラーはすべてのジョブで発生しますか?それとも断続的に発生しますか?すべてのジョブでこの問題が発生する場合は、出力ディレクトリに対する書き込み権限が有効になっていることを確認します。断続的に失敗する場合、権限は正しいはずです。概要レポートの作成が失敗してもプライバシー バジェットが消費されるという既知の問題があります。この場合は、予算の復元をリクエストできます(説明)。
問題 ジョブの実行中に構成証明サービス トークンを取得する際に 403 エラーが発生し、ジョブは常にステータス「RECEIVED」で返されます。
エラー
            {
                "job_status": "RECEIVED",
                "request_received_at": "{utc timestamp}",
                "request_updated_at": "{utc timestamp}",
                "job_request_id": "0001",
                "input_data_blob_prefix": "reports/",
                "input_data_bucket_name": "{bucket_name}",
                "output_data_blob_prefix": "summary/",
                "output_data_bucket_name": "{bucket_name}",
                "postback_url": "",
                "job_parameters": {
                    "output_domain_bucket_name": "{bucket_name}",
                    "output_domain_blob_prefix": "output_domain/",
                    "attribution_report_to": 
                }
            }
          
解決策

ジョブが RECEIVED ステータスで停止し、403 エラーが発生するのは、サービス アカウントがまだオンボーディングされていない場合によくあります。使用しているサービス アカウントが、オンボーディング リクエストで指定したものと一致していることを確認します。オンボーディング リクエストを完了していない場合は、オンボーディング フォームと登録フォームに記入してください。

登録とオンボーディングのステータスを確認したら、実行中のジョブに何が起こったのかを確認します。

Amazon Web Services

この場合、AWS エンクレーブが実行されていないかクラッシュしているため、ジョブが取得されていない可能性があります。

  1. EC2 インスタンス Session Manager に接続します。
  2. AWS のドキュメントに沿って、Session Manager に接続する次の手順を行います。
  3. AWS コンソール マネージャー > EC2 > インスタンスに移動します。
  4. 実行中の集計サービスのインスタンス ID を選択します。
  5. [Session Manager] タブ > [Connect] ボタンを選択します。これでインスタンスに接続されます。
  6. Enclave インスタンスが実行されたら、ターミナルで次のコマンドを実行します。
    sudo nitro-cli describe-enclaves
    このコマンドで想定どおりにログが表示されない場合は、次のコマンドを実行してからもう一度試してください。
    sudo nitro-cli run-enclave --cpu-count=2 --memory=7000 --eif-path=/opt/google/worker/enclave.eif
  7. AWS エンクレーブがクラッシュしたかどうかを確認するには、次のコマンドを実行します。 sudo journalctl -u aggregate-worker.service
  8. 次のような出力ログが入力されます。
    Starting aggregate-worker.service - Watcher script for nitro enclave.
    エラーが発生した場合は、ここにエラーが表示されます。
Google Cloud Platform

マネージド インスタンス グループ(MIG)が正常でない可能性があります。初めて設定する場合、または adtech_setup Terraform を破棄して再作成した場合は、サービス アカウントがオンボーディングされていることを確認します。サービス アカウントがオンボーディングされていない場合、MIG は正常に機能しません。

  1. Cloud コンソールで、[Compute Engine] > [インスタンス グループ] に移動します。
  2. ステータス列を確認します(緑色のチェックマークは正常です)。
  3. インスタンス グループのいずれかをクリックし、[エラー] タブで問題の詳細を確認します。インスタンス名をクリックして、VM レベルの情報にアクセスします。
  4. ターミナルを使用してインスタンス グループを操作し、同じ情報を取得することもできます。list-errors コマンドを試します。
    gcloud compute instance-groups managed list-errors --region=
    出力例は次のとおりです。
                      INSTANCE_URL: https://www.googleapis.com/compute/v1/projects/aggservice-sandbox/zones/us-central1-c/instances/collector-operator-demo-env-67hd
                      ACTION: VERIFYING
                      ERROR_CODE: WAITING_FOR_HEALTHY_TIMEOUT_EXCEEDED
                      ERROR_MESSAGE: Waiting for HEALTHY state timed out (autohealingPolicy.initialDelay=200 sec) for instance projects/aggservice-sandbox/zones/us-central1-c/instances/collector-operator-demo-env-67hd and health check projects/aggservice-sandbox/global/healthChecks/operator-demo-env-collector-auto-heal-hc.
                      TIMESTAMP: 
                      INSTANCE_TEMPLATE: https://www.googleapis.com/compute/v1/projects/aggservice-sandbox/global/instanceTemplates/operator-demo-env-collector
                      VERSION_NAME: primary
                    
問題が解決しない場合は、この情報を保存して Google の担当チームに提供してください。次のステップに進みます。

サマリー レポートでコンバージョンが期待どおりに発生していますか?

getJob 呼び出しは成功しても、集計サービスから返された概要レポートに問題がある場合があります。概要レポートは AVRO 形式であるため、JSON 形式に変換する必要があります。JSON 形式に変換すると、次のような形式になります。

{
  "bucket": "\u0005Y",
  "metric": 26308
}

AVRO 変換で問題が発生した場合は、AVRO ツールを使用して、AVRO レポートで次のコマンドを使用してみてください。java -jar avro-tools-1.11.1.jar tojson [report_name].avro > [report_name].json 安定版は、こちらからダウンロードできます。他にご不明な点がございましたら、次のステップに進んでください。

次のステップ

プライバシー サンドボックスのステータス ダッシュボードまたは公開 GitHub リポジトリで、他のユーザーにも同じ問題が発生していないか確認します。

集計サービスの問題を解決できない場合は、GitHub の問題を報告するか、テクニカル サポート フォームを送信して Google に通知してください。