Membuat laporan

App Optimize API membantu Anda menganalisis data biaya dan pemanfaatan resource dengan membuat laporan. Untuk mendapatkan informasi ini, Anda harus membuat laporan terlebih dahulu dengan mengirim permintaan API. Dalam permintaan ini, Anda menentukan cakupan data, cara data tersebut harus diagregasi atau dikelompokkan, dan filter yang akan diterapkan.

Setelah laporan siap, Anda dapat membaca data.

Untuk mengetahui informasi tentang cakupan, dimensi, metrik, dan filter yang tersedia, serta kombinasi setelan yang valid, lihat Tentang laporan.

Sebelum memulai

  • Contoh dalam panduan ini memerlukan Google Cloud project dengan resource aktif untuk dianalisis. App Optimize API memerlukan data penagihan dan penggunaan untuk menghasilkan hasil yang bermakna; laporan yang dijalankan terhadap project baru atau kosong akan kosong.

    Dalam panduan ini, project yang diidentifikasi sebagai PROJECT_ID menyediakan cakupan data dan menghosting resource laporan.

    App Optimize API mendukung pembuatan laporan dalam satu project yang menganalisis data dari project lain atau dari aplikasi dalam batas tingkat folder atau project tunggal. Untuk membuat laporan tentang aplikasi App Hub, yang dapat terdiri dari beberapa project, Anda harus memiliki izin penagihan dan pemantauan yang diperlukan di semua project terkait aplikasi untuk membuat laporan.

  • Pastikan App Optimize API diaktifkan untuk project yang akan Anda gunakan untuk membuat dan mengelola resource laporan.

gcloud

Di konsol Google Cloud , aktifkan Cloud Shell.

Aktifkan Cloud Shell

Di bagian bawah konsol Google Cloud , sesi Cloud Shell akan dimulai dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi pada sesi.

Untuk mengetahui informasi tentang cara menyiapkan autentikasi bagi lingkungan produksi, lihat Menyiapkan Kredensial Default Aplikasi untuk kode yang berjalan di Google Cloud dalam dokumentasi autentikasi Google Cloud .

Python

  1. Instal library klien Python untuk App Optimize API.
  2. Untuk menggunakan contoh Python di halaman ini dalam lingkungan pengembangan lokal, instal dan lakukan inisialisasi gcloud CLI, lalu siapkan Kredensial Default Aplikasi dengan kredensial pengguna Anda.

    1. Instal Google Cloud CLI.

    2. Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.

    3. Jika Anda menggunakan shell lokal, buat kredensial autentikasi lokal untuk akun pengguna Anda:

      gcloud auth application-default login

      Anda tidak perlu melakukan langkah ini jika menggunakan Cloud Shell.

      Jika error autentikasi ditampilkan, dan Anda menggunakan penyedia identitas (IdP) eksternal, konfirmasi bahwa Anda telah login ke gcloud CLI dengan identitas gabungan Anda.

    Untuk mengetahui informasi selengkapnya, lihat Menyiapkan ADC untuk lingkungan pengembangan lokal dalam dokumentasi autentikasi Google Cloud .

    Untuk mengetahui informasi tentang cara menyiapkan autentikasi bagi lingkungan produksi, lihat Menyiapkan Kredensial Default Aplikasi untuk kode yang berjalan di Google Cloud dalam dokumentasi autentikasi Google Cloud .

REST

Untuk menggunakan contoh REST API di halaman ini dalam lingkungan pengembangan lokal, gunakan kredensial yang Anda berikan ke gcloud CLI.

    Instal Google Cloud CLI.

    Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.

Untuk mengetahui informasi selengkapnya, lihat Melakukan autentikasi untuk menggunakan REST dalam dokumentasi autentikasi Google Cloud .

Untuk mengetahui informasi tentang cara menyiapkan autentikasi bagi lingkungan produksi, lihat Menyiapkan Kredensial Default Aplikasi untuk kode yang berjalan di Google Cloud dalam dokumentasi autentikasi Google Cloud .

Peran yang diperlukan

Untuk mendapatkan izin yang Anda perlukan guna membuat laporan menggunakan panduan ini, minta administrator untuk memberi Anda peran IAM berikut di project Anda dengan resource aktif:

Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.

Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.

Untuk mengetahui informasi selengkapnya tentang izin dan peran yang diperlukan untuk App Optimize API, lihat Kontrol akses dengan IAM.

Membuat laporan

Langkah-langkah berikut menjelaskan cara memulai pembuatan laporan. Contoh ini membuat laporan untuk membantu Anda memahami biaya project yang dipilih dan penggunaan CPU rata-rata selama seminggu terakhir. Laporan ini menguraikan informasi ini berdasarkan setiap resource, termasuk jenis resource, produk yang menjadi bagiannya, dan lokasinya. Google Cloud

Untuk membuat resource laporan, ikuti petunjuk sesuai metode pilihan Anda:

gcloud

Gunakan perintah gcloud beta app-optimize reports create berikut untuk membuat laporan.

gcloud beta app-optimize reports create REPORT_ID \
  --project=PROJECT_ID \
  --location=global \
  --dimensions=location,product_display_name,project,resource,resource_type \
  --metrics=cost,cpu_mean_utilization \
  --report-filter='hour >= now - duration("168h")' \
  --scopes=project=projects/PROJECT_ID

Ganti kode berikut:

  • REPORT_ID: ID unik untuk laporan baru Anda—misalnya, my-resource-cost-report-1.
  • PROJECT_ID: Google Cloud Project ID Anda.

Perintah untuk membuat laporan secara otomatis menunggu hingga operasi selesai.

Python

Kode Python berikut menggunakan AppOptimizeClient.create_report() untuk membuat laporan.

from google.cloud import appoptimize_v1beta

project_id = "PROJECT_ID"
report_id = "REPORT_ID"

# Create the App Optimize client
client = appoptimize_v1beta.AppOptimizeClient()

# Initialize the report request
report = appoptimize_v1beta.Report(
    dimensions=['location', 'product_display_name', 'project', 'resource', 'resource_type'],
    metrics=['cost', 'cpu_mean_utilization'],
    filter='hour >= now - duration("168h")',
    scopes=[
        appoptimize_v1beta.Scope(project=f"projects/{project_id}"),
    ],
)
request = appoptimize_v1beta.CreateReportRequest(
    parent=f"projects/{project_id}/locations/global",
    report=report,
    report_id=report_id,
)

# Send the request and wait for completion
operation = client.create_report(request=request)
print("Waiting for operation to complete...")
response = operation.result()
print(response)

Ganti kode berikut:

  • PROJECT_ID: Google Cloud Project ID Anda.
  • REPORT_ID: ID unik untuk laporan baru Anda—misalnya, my-first-report.

Metode operation.result() di library klien akan otomatis menunggu hingga operasi selesai. Tidak diperlukan loop polling manual.

REST

Kirim permintaan POST HTTP ke jalur resource projects.locations.reports REST API

  1. Untuk mengirim permintaan, gunakan perintah curl berikut:

    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"
    

    Ganti kode berikut:

    • PROJECT_ID: Google Cloud Project ID Anda.
    • REPORT_ID: ID unik untuk laporan baru Anda—misalnya, my-resource-cost-report-1.

    API menampilkan objek operasi yang berjalan lama (LRO). Perhatikan kolom name dalam respons, yang akan Anda gunakan untuk memeriksa status operasi:

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

    Dalam respons, kolom done adalah false, yang menunjukkan bahwa pembuatan laporan sedang berlangsung.

  2. Untuk memeriksa apakah laporan sudah siap, kirim permintaan HTTP GET ke operasi name yang ditampilkan pada langkah sebelumnya:

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

    Ganti PROJECT_ID dan OPERATION_ID dengan nilai dari respons LRO.

    Periksa respons untuk menentukan status operasi:

    • Jika laporan masih dibuat, respons akan terlihat mirip dengan respons LRO awal, dengan done ditetapkan ke false. Anda harus menunggu sebentar, seperti 5 hingga 15 detik, dan melakukan polling lagi dengan mengulangi langkah ini.
    • Setelah pembuatan laporan selesai, respons akan memiliki "done": true dan menyertakan resource laporan di kolom 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"
            ]
          }
        }
        ```
      
    • Jika LRO mengalami error, respons akan berisi kolom error, bukan kolom response, yang memberikan detail tentang kegagalan.

Setelah operasi berhasil diselesaikan, Anda dapat membaca data laporan.

Batas serentak

Saat Anda membuat laporan, App Optimize API akan mendapatkan data biaya dari Cloud Billing dan data penggunaan dari Cloud Monitoring untuk setiap target_project laporan.

  • Untuk laporan yang dicakup ke satu project, project tersebut adalah project target.
  • Untuk aplikasi App Hub, setiap project yang berisi layanan atau workload dalam aplikasi adalah project target.

App Optimize API menerapkan kuota konkurensi yang disebut Operasi CreateReport Serentak, yang memungkinkan maksimum 10 permintaan serentak untuk data laporan per project target. Saat Anda membuat laporan, App Optimize API menghitung jumlah project target dalam laporan dan mengunci jumlah unit kuota yang diperlukan hingga LRO untuk membuat laporan selesai.

Laporan yang selesai dalam waktu kurang dari beberapa menit mungkin tidak dihitung terhadap batas serentak Anda karena pengaturan waktu pengukuran tingkat sistem.

Anda dapat melihat aktivitas API saat ini dan mengelola batas ini di halaman Kuota & Batas Sistem di konsol Google Cloud .

Jika Anda berencana membuat beberapa laporan secara bersamaan, pertimbangkan kapan tim Anda menjalankan laporan dan bagaimana struktur aplikasi App Hub Anda:

  • Jika beberapa tim menjalankan laporan yang menyertakan project target yang sama, Anda dapat mengatur waktu mulai pembuatan laporan untuk setiap tim.
  • Aplikasi dapat menyertakan resource dari beberapa project, dan lebih dari satu aplikasi dapat menggunakan resource dari satu project. Membuat laporan secara bersamaan untuk jenis aplikasi ini akan menghasilkan beberapa permintaan ke project target.

Misalnya, pertimbangkan tim yang mengerjakan serangkaian aplikasi untuk mempelajari seni kreatif, dengan varian standar dan premium. Tabel berikut menampilkan daftar aplikasi di kolom pertama. Di kolom yang tersisa, ikon tanda centang () menunjukkan bahwa project berisi layanan atau beban kerja untuk aplikasi yang tercantum.

Aplikasi 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
aplikasi music-premium
animate-premium-app
choreograph-premium-app
storyteller-premium-app

Jika Anda membuat laporan untuk data biaya dan penggunaan semua aplikasi yang tercantum secara bersamaan, App Optimize API menggunakan lebih dari satu unit batas serentak di beberapa project. Secara khusus, project bersama common-project menerima 12 permintaan untuk data biaya dan pemakaian. Karena jumlah ini melebihi batas serentak, 2 permintaan data akan gagal.

Untuk mencegah masalah ini, tim dapat menjalankan laporan untuk aplikasi versi standar terlebih dahulu, lalu menjalankan laporan untuk versi premium.

Langkah berikutnya