レポートを作成する

App Optimize API は、 レポートを生成して費用とリソース使用率のデータを分析するのに役立ちます。この情報を取得するには、まず API リクエストを送信してレポートを作成します。このリクエストでは、データの範囲、集計またはグループ化の方法、適用するフィルタを定義します。

レポートの準備ができたら、データを読み取ることができます。

使用可能なスコープ、ディメンション、指標、フィルタ、および これらの設定の有効な組み合わせについては、 レポートについてをご覧ください。

始める前に

  1. このガイドの例では、分析するアクティブなリソースを含む Google Cloud プロジェクトが必要です。App Optimize API で意味のある結果を得るには、課金データと 使用率データが必要です。新しい プロジェクトまたは空のプロジェクトに対して実行されたレポートは空になります。

    このプロジェクトはユーザーが選択し、 PROJECT_ID で識別されます。このガイドでは、わかりやすくするために、プロジェクトでレポートリソースをホストし、データスコープを提供します。

    App Optimize API では、別のソース プロジェクトまたは 単一プロジェクト またはフォルダレベルの境界内のアプリケーションのデータを分析するレポートを 1 つのプロジェクトで作成できます。複数のプロジェクトで構成される App Hub アプリケーションのレポートを生成する場合は、レポートを作成するために、アプリケーションに関連付けられたすべてのプロジェクトに対する必要なモニタリング権限と課金権限が必要です。

  2. レポート リソースの作成と管理に使用するプロジェクトで App Optimize API が有効になっている になっていることを確認します。このドキュメントの例では、これは PROJECT_ID で識別されるプロジェクトです。
  3. アカウントにログインします。 Google Cloud を初めて使用する場合は、 アカウントを作成して、実際のシナリオで Google プロダクトのパフォーマンスを評価してください。 Google Cloud新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  4. Google Cloud CLI をインストールします。

  5. 外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。

  6. gcloud CLI を初期化するには、次のコマンドを実行します:

    gcloud init
  7. このガイドを完了するために必要な権限があることを 確認します

  8. Google Cloud CLI をインストールします。

  9. 外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。

  10. gcloud CLI を初期化するには、次のコマンドを実行します:

    gcloud init
  11. このガイドを完了するために必要な権限があることを 確認します

必要なロール

このガイドを使用してレポートを作成するために必要な権限を取得するには、アクティブなリソースを含むプロジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。

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

必要な権限は、カスタム ロールや他の事前定義 ロールから取得することもできます。

App Optimize API に必要な権限とロールの詳細については、 IAM を使用したアクセス制御をご覧ください。

レポートを作成する

次の手順では、レポートの作成を開始する方法について説明します。この例では、選択したプロジェクトの過去 1 週間の費用と平均 CPU 使用率を把握するのに役立つレポートを作成します。レポートでは、リソースの種類、プロダクト、ロケーションなど、個々のリソースごとにこの 情報が分類されます。 Google Cloud

レポート リソースを作成するには、HTTP POST リクエストを REST API の projects.locations.reports リソースパスに送信します。

レポートを作成する手順は次のとおりです。

  1. 次の curl コマンドを使用してリクエストを送信します。 リクエスト本文には、リクエストされたスコープ、ディメンション、指標、フィルタなど、レポートの定義が含まれています。

    curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      -d '{
        "scopes": [
          {
            "project": "projects/PROJECT_ID"
          }
        ],
        "dimensions": [
          "location",
          "product_display_name",
          "project",
          "resource",
          "resource_type"
        ],
        "metrics": [
          "cost",
          "cpu_mean_utilization"
        ],
        "filter": "hour >= now - duration(\"168h\")"
      }' \
      "https://appoptimize.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/reports?report_id=REPORT_ID"
    

    次のように置き換えます。

    • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
    • REPORT_ID: 新しいレポートの一意の ID(例: my-resource-cost-report-1)。

    API は長時間実行オペレーション(LRO)オブジェクトを返します。レスポンスの name フィールドをメモします。これは、オペレーションのステータスを確認するために使用します。

    {
      "name": "projects/PROJECT_ID/locations/global/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.appoptimize.v1beta.OperationMetadata"
      },
      "done": false
    }
    

    レスポンスでは、done フィールドが false になっています。これは、レポートの生成が進行中であることを示します。

  2. レポートの準備ができているかどうかを確認するには、前の手順で返されたオペレーション nameGET HTTP リクエストを送信します。

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      "https://appoptimize.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/operations/OPERATION_ID"
    

    PROJECT_IDOPERATION_ID を LRO レスポンスの値に置き換えます。

    レスポンスを調べて、オペレーションのステータスを確認します。

    • レポートがまだ生成中の場合、レスポンスは最初の LRO レスポンスと似ており、donefalse に設定されています。5 ~ 15 秒などの短い時間待ってから、この手順を繰り返して再度ポーリングする必要があります。
    • レポートの生成が完了すると、レスポンスに "done": trueが含まれ、response フィールドにレポート リソースが含まれます。

      {
        "name": "projects/PROJECT_ID/locations/global/operations/OPERATION_ID",
        "metadata": {
          "@type": "type.googleapis.com/google.cloud.appoptimize.v1beta.OperationMetadata"
        },
        "done": true,
        "response": {
          "@type": "type.googleapis.com/google.cloud.appoptimize.v1beta.Report",
          "name": "projects/PROJECT_ID/locations/global/reports/REPORT_ID",
          "dimensions": [
            "location",
            "product_display_name",
            "project",
            "resource",
            "resource_type"
          ],
          "scopes": [
            {
              "project": "projects/PROJECT_ID"
            }
          ],
          "filter": "hour >= now - duration(\"168h\")",
          "expireTime": "2026-02-05T18:50:25.273833857Z",
          "metrics": [
            "cost",
            "cpu_mean_utilization"
          ]
        }
      }
      
    • LRO でエラーが発生した場合、レスポンスには response フィールドではなく error フィールドが含まれ、失敗の詳細が提供されます。

オペレーションが正常に完了したら、 レポートのデータを読み取ることができます

同時実行に関する制限事項

レポートを作成すると、App Optimize API は、レポートの各 target_project の費用データを Cloud Billing から取得し、使用率データを Cloud Monitoring から取得します。

  • 単一のプロジェクトを対象とするレポートの場合、そのプロジェクトがターゲット プロジェクトになります。
  • App Hub アプリケーションの場合、アプリケーションにサービスまたはワークロードが含まれる各プロジェクトがターゲット プロジェクトになります。

App Optimize API は、Concurrent CreateReport operations という同時実行割り当てを適用します。これにより、ターゲットプロジェクトごとにレポートデータの同時リクエストを最大 10 件まで許可します。レポートを作成すると、App Optimize API はレポート内のターゲット プロジェクトの数を計算し、レポート作成の LRO が完了するまで必要な数の割り当てユニットをロックします。

数分以内に完了するレポートは、システムレベルの測定タイミングにより、同時実行制限にカウントされない場合があります。

現在の API アクティビティを表示し、これらの上限を管理するには、 [割り当てとシステム上限] ページに移動します。 Google Cloud

複数のレポートを同時に作成する場合は、チームがレポートを実行するタイミングと、App Hub アプリケーションの構造を考慮してください。

  • 複数のチームが同じターゲット プロジェクトを含むレポートを実行する場合は、チームごとにレポート作成の開始時間をずらすことができます。
  • アプリケーションには複数のプロジェクトのリソースを含めることができ、複数のアプリケーションが単一のプロジェクトのリソースを使用する可能性があります。このようなタイプのアプリケーションでレポートを同時に作成すると、ターゲット プロジェクトに対して複数のリクエストが送信されます。

たとえば、クリエイティブ アーツの学習用アプリケーション スイートを開発するチームを考えてみましょう。このスイートには、標準バージョンとプレミアム バージョンがあります。次の表の最初の列に、アプリケーションのリストを示します。残りの列では、 チェックマーク アイコン()は、プロジェクト にリストされたアプリケーションのサービスまたはワークロードが含まれていることを示します。

アプリケーション common-project dance-project draw-project animate-project music-project
dance-app
draw-app
music-app
animate-app
choreograph-app
storyteller-app
dance-premium-app
draw-premium-app
music-premium-app
animate-premium-app
choreograph-premium-app
storyteller-premium-app

リストされているすべてのアプリケーションの費用データと使用率データのレポートを同時に作成すると、App Optimize API は一部のプロジェクトで同時実行制限の複数のユニットを使用します。特に、共有プロジェクト common-project は、費用データと使用率データに対して 12 件のリクエストを受け取ります。この数は同時実行制限を超えるため、データリクエストの 2 件が失敗します。

この問題を回避するには、まずアプリケーションの標準バージョンのレポートを実行し、次にプレミアム バージョンのレポートを実行します。

次のステップ