建立報表

App Optimize API 可產生報表,協助您分析費用和資源用量資料。如要取得這項資訊,請先傳送 API 要求來建立報表。您可以在這項要求中定義資料範圍、匯總或分組方式,以及要套用的篩選條件。

報表製作完成後,您就可以查看資料。

如要瞭解可用的範圍、維度、指標和篩選器,以及這些設定的有效組合,請參閱「關於報表」。

事前準備

  1. 本指南中的範例需要 Google Cloud 含有有效資源的專案,才能進行分析。App Optimize API 需要帳單和使用情形資料,才能產生有意義的結果;針對新專案或空白專案執行的報表會是空白。

    這個專案是由您選擇,並以 PROJECT_ID 識別。為簡化作業,在本指南中,您的專案會同時代管報表資源並提供資料範圍。

    App Optimize API 支援在一個專案中建立報表,分析來自不同來源專案或單一專案或資料夾層級界線內應用程式的資料。如果您要產生應用程式中樞應用程式的報表 (這類應用程式可能由多個專案組成),您必須對應用程式的所有相關聯專案具備必要的監控和帳單權限,才能建立報表。

  2. 請確認您用於建立及管理報表資源的專案已啟用 App Optimize API。在本說明文件的範例中,這是以 PROJECT_ID 識別的專案。
  3. 登入 Google Cloud 帳戶。如果您是 Google Cloud新手,歡迎 建立帳戶,親自評估產品在實際工作環境中的成效。新客戶還能獲得價值 $300 美元的免費抵免額,可用於執行、測試及部署工作負載。
  4. 安裝 Google Cloud CLI。

  5. 若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI

  6. 執行下列指令,初始化 gcloud CLI:

    gcloud init
  7. 確認您具備完成本指南所需的權限

  8. 安裝 Google Cloud CLI。

  9. 若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI

  10. 執行下列指令,初始化 gcloud CLI:

    gcloud init
  11. 確認您具備完成本指南所需的權限

必要的角色

如要取得使用本指南建立報表所需的權限,請要求系統管理員在含有有效資源的專案中,授予您下列 IAM 角色:

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

您或許也能透過自訂角色或其他預先定義的角色,取得必要權限。

如要進一步瞭解 App Optimize API 要求的權限和角色,請參閱「使用 IAM 控管存取」。

建立報表

下列步驟說明如何啟動報表建立程序。這個範例會建立報表,協助您瞭解所選專案過去一週的費用和平均 CPU 使用率。這份報表會依各個資源細分這項資訊,包括資源類型、所屬產品和位置。 Google Cloud

如要建立報表資源,請向 REST API 的 projects.locations.reports 資源路徑傳送 HTTP POST 要求。

請按照下列步驟建立報表。

  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. 如要檢查報表是否已準備就緒,請將 GET HTTP 要求傳送至上一步傳回的作業 name

    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 回應類似,但 done 會設為 false。請稍候片刻 (例如 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 發生錯誤,回應會包含 error 欄位,而非 response 欄位,並提供失敗的詳細資料。

作業順利完成後,您就可以讀取報表資料

並行處理額度

建立報表時,App Optimize API 會從 Cloud Billing 取得費用資料,並從 Cloud Monitoring 取得報表中每個 target_project 的用量資料。

  • 如果報表範圍僅限單一專案,該專案就是目標專案。
  • 如果是 App Hub 應用程式,凡是包含應用程式中服務或工作負載的專案,都是目標專案。

App Optimize API 會強制執行名為「Concurrent CreateReport operations」(並行 CreateReport 作業) 的並行配額,每個目標專案最多可並行要求 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 個資料要求會失敗。

為避免這個問題,團隊可以先執行應用程式標準版本的報表,再執行進階版本的報表。

後續步驟