Membuat dan membaca laporan
Pelajari cara membuat laporan App Optimize API tentang Google Cloud pengeluaran Anda, memantau pembuatan laporan, dan membaca data yang dihasilkan saat laporan siap untuk Anda. Dalam panduan memulai cepat ini, Anda dapat menggunakan REST API atau library klien Python.
Sebelum memulai
Contoh dalam panduan ini memerlukan Google Cloud project dengan active 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_IDmenyediakan 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 project tunggal atau tingkat folder. Untuk membuat laporan tentang aplikasi App Hub, yang dapat terdiri dari beberapa project, Anda harus memiliki izin pemantauan dan penagihan 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.
-
Login keakun Anda. Google Cloud Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
Verify that you have the permissions required to complete this guide.
Pilih tab untuk melihat bagaimana Anda berencana menggunakan contoh di dokumen ini:
gcloud
Di konsol, aktifkan Cloud Shell. Google Cloud
Di bagian bawah konsol Google Cloud , sesi Cloud Shell akan dimulai dan menampilkan prompt 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 Google Cloud dokumentasi autentikasi.
Python
- Instal library klien Python untuk App Optimize API.
-
Untuk menggunakan contoh Python di halaman ini dalam lingkungan pengembangan lokal, instal dan inisialisasi gcloud CLI, lalu siapkan Kredensial Default Aplikasi dengan kredensial pengguna Anda.
-
Instal Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus terlebih dahulu login ke gcloud CLI dengan identitas gabungan Anda.
-
Jika Anda menggunakan shell lokal, buat kredensial autentikasi lokal untuk akun pengguna Anda:
gcloud auth application-default login
Anda tidak perlu melakukan hal ini jika menggunakan Cloud Shell.
Jika error autentikasi ditampilkan, dan Anda menggunakan penyedia identitas (IdP) eksternal, pastikan 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 Google Cloud dokumentasi autentikasi.
-
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 terlebih dahulu login ke gcloud CLI dengan identitas gabungan Anda.
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 Google Cloud dokumentasi autentikasi.
Peran yang diperlukan
Untuk mendapatkan izin yang diperlukan untuk membuat dan membaca laporan menggunakan panduan memulai cepat ini, minta administrator untuk memberi Anda peran IAM berikut di project Anda dengan resource aktif:
-
Admin App Optimize (
roles/appoptimize.admin) -
Viewer (
roles/viewer) (atau peran lain yang memberikanbilling.resourceCosts.get)
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
Contoh ini membuat laporan total pengeluaran dalam yang Anda pilih PROJECT_ID. Laporan ini menguraikan biaya berdasarkan setiap Google Cloud produk yang digunakan, seperti Compute Engine dan Cloud Storage, serta berdasarkan SKU dan lokasi tertentu. Laporan ini mencakup data tiga hari terakhir.
Untuk membuat resource laporan, ikuti petunjuk sesuai metode pilihan Anda:
gcloud
Gunakan perintah gcloud beta app-optimize reports create untuk membuat laporan.
gcloud beta app-optimize reports create REPORT_ID \
--project=PROJECT_ID \
--location=global \
--dimensions=location,product_display_name,project,sku \
--metrics=cost \
--report-filter='hour >= now - duration("72h")' \
--scopes=project=projects/PROJECT_ID
Ganti kode berikut:
PROJECT_ID: ID Google Cloud project Anda.REPORT_ID: ID unik untuk laporan baru Anda—misalnya,my-first-report
Perintah ini menunggu hingga operasi pembuatan laporan selesai, lalu menampilkan resource laporan yang dibuat.
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 and prepare a request for a new report
client = appoptimize_v1beta.AppOptimizeClient()
report = appoptimize_v1beta.Report(
dimensions=['location', 'product_display_name', 'project', 'sku'],
metrics=['cost'],
filter='hour >= now - duration("72h")',
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,
)
# Request the creation of the report and wait until the process is done
operation = client.create_report(request=request)
print("Waiting for report creation operation to complete...")
response = operation.result()
print(response)
Ganti kode berikut:
PROJECT_ID: ID Google Cloud project Anda.REPORT_ID: ID unik untuk laporan baru Anda—misalnya,my-first-report.
Metode operation.result() menunggu hingga operasi pembuatan laporan selesai.
REST
Kirim permintaan POST HTTP ke jalur resource projects.locations.reports REST API.
Untuk mengirim permintaan, gunakan perintah
curlberikut: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", "sku" ], "metrics": [ "cost" ], "filter": "hour >= now - duration(\"72h\")" }' \ "https://appoptimize.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/reports?report_id=REPORT_ID"Ganti kode berikut:
PROJECT_ID: ID Google Cloud project Anda.REPORT_ID: ID unik untuk laporan baru Anda—misalnya,my-first-report
API menampilkan objek Operasi yang Berjalan Lama (LRO), yang mewakili proses pembuatan laporan. Berikut adalah contoh respons:
{ "name": "projects/PROJECT_ID/locations/global/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.appoptimize.v1beta.OperationMetadata" }, "done": false }Status
"done": falsemenunjukkan bahwa laporan masih dibuat. PerhatikanOPERATION_IDkarena Anda akan menggunakannya pada langkah berikutnya.Karena pembuatan laporan dapat memerlukan waktu, Anda harus melakukan polling LRO hingga menunjukkan bahwa proses pembuatan telah selesai dan data laporan siap didownload.
Untuk memeriksa status proses pembuatan, kirim permintaan
GETHTTP ke nama resource operasi:curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://appoptimize.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/operations/OPERATION_ID"Periksa responsnya. Jika
"done"adalahfalse, tunggu 5 hingga 15 detik dan ulangi langkah ini. Jika"done"adalahtrue, laporan sudah siap.Berikut adalah contoh respons saat operasi selesai:
{ "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", "scopes": [ { "project": "projects/PROJECT_ID" } ], "dimensions": [ "location", "product_display_name", "project", "sku" ], "metrics": [ "cost" ], "filter": "hour >= now - duration(\"72h\")", "expireTime": "2026-02-04T22:05:05Z" } }
Membaca data laporan
Untuk mengambil data laporan, ikuti petunjuk sesuai metode pilihan Anda:
gcloud
Gunakan perintah gcloud beta app-optimize reports read berikut untuk mengambil data laporan.
gcloud beta app-optimize reports read REPORT_ID \
--project=PROJECT_ID \
--location=global
Python
Kode Python berikut menggunakan AppOptimizeClient.read_report() untuk mengambil data laporan.
from google.cloud import appoptimize_v1beta
project_id = "PROJECT_ID"
report_id = "REPORT_ID"
name = f"projects/{project_id}/locations/global/reports/{report_id}"
# Create the App Optimize client and read your report's data
client = appoptimize_v1beta.AppOptimizeClient()
request = appoptimize_v1beta.ReadReportRequest(
name=name,
)
result = client.read_report(request=request)
# Display the report's data
print(result)
REST
Setelah LRO selesai, gunakan metode kustom :read REST API:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{}' \
"https://appoptimize.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/reports/REPORT_ID:read"
Respons dari API berisi baris data laporan dan definisi kolom. Berikut adalah contoh respons yang berhasil:
{
"rows": [
[
"us-central1",
"Compute Engine",
"projects/PROJECT_ID",
"6EC2-384A-47D9",
{
"currency_code": "USD",
"units": "25",
"nanos": 750000000
}
],
[
"us-central1",
"Cloud Storage",
"projects/PROJECT_ID",
"9ADA-9ADC-2FBE",
{
"currency_code": "USD",
"units": "5",
"nanos": 100000000
}
],
[
"europe-west1",
"Compute Engine",
"projects/PROJECT_ID",
"6EC2-384A-47D9",
{
"currency_code": "USD",
"units": "18",
"nanos": 500000000
}
],
[
"us-central1",
"Compute Engine",
"projects/PROJECT_ID",
"F61D-4D51-AAFC",
{
"currency_code": "USD",
"units": "12",
"nanos": 200000000
}
]
],
"columns": [
{
"name": "location",
"type": "STRING",
"mode": "NULLABLE"
},
{
"name": "product_display_name",
"type": "STRING",
"mode": "NULLABLE"
},
{
"name": "project",
"type": "STRING",
"mode": "NULLABLE"
},
{
"name": "sku",
"type": "STRING",
"mode": "NULLABLE"
},
{
"name": "cost",
"type": "RECORD",
"mode": "NULLABLE",
"columns": [
{
"name": "currency_code",
"type": "STRING",
"mode": "NULLABLE"
},
{
"name": "units",
"type": "INT64",
"mode": "NULLABLE"
},
{
"name": "nanos",
"type": "INT64",
"mode": "NULLABLE"
}
]
}
],
"next_page_token": ""
}
Laporan dengan banyak baris dipaginasi. Untuk menangani beberapa halaman, lihat Membaca data laporan.
Untuk memahami nilai di kolom cost, lihat
Menafsirkan metrik biaya.
Untuk mengetahui informasi selengkapnya tentang data dan memahami batasannya, lihat
Memahami data.
Pembersihan
App Optimize API otomatis menghapus laporan Anda 24 jam setelah laporan dibuat. Untuk menghapus laporan lebih cepat, ikuti petunjuk sesuai metode pilihan Anda:
gcloud
Gunakan perintah gcloud beta app-optimize reports delete untuk menghapus laporan.
gcloud beta app-optimize reports delete REPORT_ID \
--project=PROJECT_ID \
--location=global
Python
Kode berikut menggunakan AppOptimizeClient.delete_report() untuk menghapus laporan.
from google.cloud import appoptimize_v1beta
project_id = "PROJECT_ID"
report_id = "REPORT_ID"
name = f"projects/{project_id}/locations/global/reports/{report_id}"
client = appoptimize_v1beta.AppOptimizeClient()
request = appoptimize_v1beta.DeleteReportRequest(name=name)
client.delete_report(request=request)
print(f"Deleted report: {name}")
REST
Kirim permintaan DELETE HTTP ke endpoint resource laporan:
curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://appoptimize.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/reports/REPORT_ID"
Langkah berikutnya
- Pelajari laporan lebih lanjut.
- Pelajari cara lain untuk mengelola laporan:
- Lihat ringkasan App Optimize API.