Melihat laporan penggunaan


Dengan Compute Engine, Anda dapat mengekspor laporan terperinci tentang penggunaan Compute Engine ke bucket Cloud Storage menggunakan fitur ekspor penggunaan. Laporan penggunaan memberikan informasi tentang masa pakai sumber daya Anda. Misalnya, Anda dapat melihat berapa banyak instance VM di project Anda yang menjalankan jenis mesin n2-standard-4 dan berapa lama setiap instance telah berjalan. Anda juga dapat meninjau ruang penyimpanan persistent disk, dan informasi tentang fitur Compute Engine lainnya.

Laporan penggunaan tidak memberikan informasi penagihan atau aktivitas, seperti informasi tentang permintaan API. Untuk mengetahui informasi penagihan, lihat fitur Ekspor Penagihan. Untuk log aktivitas, lihat Log aktivitas.

Sebelum memulai

  • Siapkan autentikasi, jika Anda belum melakukannya. Autentikasi adalah proses verifikasi identitas Anda untuk akses ke layanan dan API Google Cloud. Untuk menjalankan kode atau contoh dari lingkungan pengembangan lokal, Anda dapat melakukan autentikasi ke Compute Engine sebagai berikut.

    Pilih tab untuk melihat bagaimana Anda berencana menggunakan contoh di halaman ini:

    Konsol

    Saat menggunakan Konsol Google Cloud untuk mengakses API dan layanan Google Cloud, Anda tidak perlu menyiapkan autentikasi.

    gcloud

    1. Instal Google Cloud CLI, lalu initialize dengan menjalankan perintah berikut:

      gcloud init
    2. Menetapkan region dan zona default.

    Python

    Untuk menggunakan contoh Python di halaman ini dari lingkungan pengembangan lokal, instal dan lakukan inisialisasi gcloud CLI, lalu siapkan Kredensial Default Aplikasi dengan kredensial pengguna Anda.

    1. Menginstal Google Cloud CLI.
    2. Untuk initialize gcloud CLI, jalankan perintah berikut:

      gcloud init
    3. Buat kredensial autentikasi lokal untuk Akun Google Anda:

      gcloud auth application-default login

    Untuk informasi selengkapnya, lihat Siapkan autentikasi untuk lingkungan pengembangan lokal.

Ringkasan

Saat Anda mengaktifkan laporan penggunaan, Compute Engine akan mengirimkan dua jenis laporan ke bucket Cloud Storage yang Anda tentukan:

  1. Laporan penggunaan harian

    Laporan ini dikirim setiap hari dan menyertakan data penggunaan dari hari sebelumnya. Setiap laporan adalah file terpisah yang berisi data dari periode terakhir. Data dalam laporan ini tidak dapat diubah, artinya Compute Engine tidak memperbarui atau menulis ulang file log jika ada ketidakakuratan. Sebagai gantinya, data akan diperbaiki dalam laporan baru berikutnya yang dikirimkan ke bucket.

    Laporan penggunaan harian memiliki format nama berikut:

    <bucket>/<report_prefix>_<numeric_project_id>_<YYYYMMDD>.csv
    
  2. Laporan penggabungan bulanan

    Satu laporan penggabungan bulanan dikirimkan setiap hari, yang berisi data penggunaan bulanan untuk project tersebut hingga, tetapi tidak termasuk, pada hari itu. Laporan penggunaan bulanan akan ditimpa setiap hari dengan data baru yang mencerminkan penggunaan bulanan resource hingga tanggal tersebut. Hanya ada satu file data penggunaan bulanan per project, per bulan.

    Laporan penggabungan bulanan memiliki format nama berikut:

    <bucket>/<report_prefix>_<numeric_project_id>_<YYYYMM>.csv
    

    File laporan harian dan bulanan terlihat sangat mirip, kecuali untuk perbedaan format tanggal, di mana laporan penggabungan bulanan diberi tanggal menggunakan tahun dan bulan (YYYYMM), dan laporan penggunaan harian diberi tanggal menggunakan tahun, bulan, dan tanggal (YYYYMMDD).

Semua laporan penggunaan dikirimkan dalam format nilai yang dipisahkan koma (CSV) dan file laporan penggunaan diawali dengan <report_prefix>. <report_prefix> adalah nilai yang dapat disesuaikan dan dipilih oleh pengguna. Jika Anda tidak menentukan awalan laporan, awalan usage_gce akan digunakan secara default. Semua waktu diberikan dalam waktu Pasifik (PST).

Prasyarat

Sebelum Anda dapat mulai menggunakan ekspor penggunaan Compute Engine:

Menyiapkan ekspor penggunaan

Saat Anda pertama kali mengaktifkan fitur ekspor penggunaan, laporan pertama dikirim pada hari berikutnya, yang berisi detail penggunaan hari sebelumnya. Setelah itu, Anda akan menerima laporan dalam interval 24 jam.

Untuk menyiapkan fitur ekspor penggunaan, aktifkan fitur tersebut di alat gcloud compute. Saat mengaktifkan fitur ini, Anda harus menentukan dua properti:

  1. Bucket Cloud Storage ke mana Anda ingin mengirimkan laporan.

    Anda dapat memilih bucket Cloud Storage mana pun di mana Anda merupakan pemiliknya, termasuk bucket yang berasal dari project yang berbeda. Bucket ini harus ada sebelum Anda dapat mulai mengekspor laporan dan Anda harus memiliki akses pemilik ke bucket. Cloud Storage mengenakan biaya penggunaan, jadi sebaiknya tinjau harga Cloud Storage untuk mengetahui informasi tentang kemungkinan biaya yang akan dikenakan untuk layanan tersebut.

    Setiap pengguna yang memiliki akses baca ke bucket Cloud Storage dapat melihat laporan penggunaan di bucket. Setiap pengguna yang memiliki akses tulis ke bucket dapat membuat, melihat, dan mengubah file yang ada di dalam bucket. Untuk mengetahui informasi selengkapnya, lihat bagian Kontrol akses.

  2. Awalan laporan untuk file Anda.

    Anda dapat menentukan awalan laporan yang akan digunakan untuk laporan penggunaan. Laporan penggunaan Anda kemudian memiliki nama file yang berisi awalan ini. Misalnya, menentukan "my-cool-project-report" sebagai awalan laporan akan menghasilkan nama file yang mirip dengan format my-cool-project-report_1234567890_20131230.csv. Jika Anda tidak menentukan awalan laporan, awalan default usage_gce akan digunakan.

Setelah memutuskan kedua properti ini, Anda dapat mengaktifkan fitur ekspor penggunaan dengan cara berikut:

Konsol

  1. Buka halaman Setelan Compute Engine.

    Buka Setelan Compute Engine.

  2. Centang kotak Aktifkan ekspor penggunaan.

  3. Isi kolom yang meminta Nama bucket. Secara opsional, berikan Awalan laporan, jika diinginkan. Jika Anda membiarkan awalan laporan kosong, awalan default usage_gce akan digunakan. Semua laporan penggunaan yang dikirim ke bucket diberi nama dengan awalan ini.

  4. Klik Save.

gcloud

Di gcloud compute, gunakan perintah gcloud compute project-info set-usage-bucket untuk mengaktifkan fitur ini:

 gcloud compute project-info set-usage-bucket --bucket [BUCKET_NAME] [--prefix [PREFIX]]

Dengan keterangan:

  • [BUCKET_NAME] adalah nama bucket yang ada untuk menerima laporan penggunaan. Harus dalam format gs://<bucket-name> atau https://storage.googleapis.com/<bucket-name>. Pengguna yang menjalankan perintah ini harus merupakan pemilik bucket.
  • [PREFIX] adalah awalan opsional untuk nama laporan penggunaan. Jika tidak ditentukan, awalan default-nya adalah usage_gce.

Python

Untuk mengaktifkan ekspor penggunaan, gunakan metode set_usage_export_bucket() dalam koleksi Projects. Contoh berikut menggunakan Library Klien Cloud untuk Python:

from __future__ import annotations

import sys
from typing import Any

from google.api_core.extended_operation import ExtendedOperation
from google.cloud import compute_v1

def wait_for_extended_operation(
    operation: ExtendedOperation, verbose_name: str = "operation", timeout: int = 300
) -> Any:
    """
    Waits for the extended (long-running) operation to complete.

    If the operation is successful, it will return its result.
    If the operation ends with an error, an exception will be raised.
    If there were any warnings during the execution of the operation
    they will be printed to sys.stderr.

    Args:
        operation: a long-running operation you want to wait on.
        verbose_name: (optional) a more verbose name of the operation,
            used only during error and warning reporting.
        timeout: how long (in seconds) to wait for operation to finish.
            If None, wait indefinitely.

    Returns:
        Whatever the operation.result() returns.

    Raises:
        This method will raise the exception received from `operation.exception()`
        or RuntimeError if there is no exception set, but there is an `error_code`
        set for the `operation`.

        In case of an operation taking longer than `timeout` seconds to complete,
        a `concurrent.futures.TimeoutError` will be raised.
    """
    result = operation.result(timeout=timeout)

    if operation.error_code:
        print(
            f"Error during {verbose_name}: [Code: {operation.error_code}]: {operation.error_message}",
            file=sys.stderr,
            flush=True,
        )
        print(f"Operation ID: {operation.name}", file=sys.stderr, flush=True)
        raise operation.exception() or RuntimeError(operation.error_message)

    if operation.warnings:
        print(f"Warnings during {verbose_name}:\n", file=sys.stderr, flush=True)
        for warning in operation.warnings:
            print(f" - {warning.code}: {warning.message}", file=sys.stderr, flush=True)

    return result

def set_usage_export_bucket(
    project_id: str, bucket_name: str, report_name_prefix: str = ""
) -> None:
    """
    Set Compute Engine usage export bucket for the Cloud project.
    This sample presents how to interpret the default value for the
    report name prefix parameter.

    Args:
        project_id: project ID or project number of the project to update.
        bucket_name: Google Cloud Storage bucket used to store Compute Engine
            usage reports. An existing Google Cloud Storage bucket is required.
        report_name_prefix: Prefix of the usage report name which defaults to an empty string
            to showcase default values behaviour.
    """
    usage_export_location = compute_v1.UsageExportLocation()
    usage_export_location.bucket_name = bucket_name
    usage_export_location.report_name_prefix = report_name_prefix

    if not report_name_prefix:
        # Sending an empty value for report_name_prefix results in the
        # next usage report being generated with the default prefix value
        # "usage_gce". (ref: https://cloud.google.com/compute/docs/reference/rest/v1/projects/setUsageExportBucket)
        print(
            "Setting report_name_prefix to empty value causes the report "
            "to have the default prefix of `usage_gce`."
        )

    projects_client = compute_v1.ProjectsClient()
    operation = projects_client.set_usage_export_bucket(
        project=project_id, usage_export_location_resource=usage_export_location
    )

    wait_for_extended_operation(operation, "setting GCE usage bucket")

Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API untuk projects.setUsageExportBucket

Mendownload laporan ekspor penggunaan

Setelah Anda mulai menerima laporan penggunaan di bucket, download laporan Anda seperti mendownload objek lain dari Cloud Storage. Untuk mengetahui informasi selengkapnya, lihat Mendownload objek.

Metrik yang didukung

Laporan penggunaan harian menyediakan informasi penggunaan tentang resource berikut:

  • Virtual machine
  • Persistent disk
  • Image
  • Snapshot
  • Alamat IP statis
  • Load balancers
  • Pemesanan

Setiap resource dijelaskan menggunakan metrik berikut:

Nama Metrik Properti Metrik
Tanggal Laporan
  • Jenis Metrik: string
  • Deskripsi: Tanggal penggunaan.
  • Contoh: 2019-08-15
MeasurementId
  • Jenis Metrik: string
  • Deskripsi: ID jenis resource yang diukur.
    Misalnya, VmimageN2StandardCore_Uswest2 untuk mewakili n2-standard dalam jenis mesin us-west2.
  • Contoh: com.google.cloud/services/compute‑engine/VmimageN2StandardCore_Uswest2
  • Contoh: com.google.cloud/services/compute‑engine/VmimageN2StandardRam_Uswest2
Jumlah
  • Jenis Metrik: bilangan bulat
  • Deskripsi: Jumlah penggunaan untuk tanggal yang ditentukan.
  • Contoh: 86400
Unit
  • Jenis Metrik: string
  • Deskripsi: Jenis satuan, seperti jumlah, detik, jam, dan sebagainya.
  • Contoh: detik
URI Resource
  • Jenis Metrik: string
  • Deskripsi: URI resource yang ditentukan.
  • Contoh: https://compute.googleapis.com/compute/v1/projects/<project‑id>/zones/<zone>/instances/<instance>
ResourceId
  • Jenis Metrik: bilangan bulat
  • Deskripsi: ID numerik yang mengidentifikasi resource tertentu.
  • Contoh: 16557630484925648021
Location
  • Jenis Metrik: string
  • Deskripsi: Lokasi resource. Nama zona atau region, atau GLOBAL untuk resource global.
  • Contoh: us-central1-a

Contoh entri dalam laporan akan terlihat seperti berikut:

Tanggal Laporan MeasurementId Jumlah Unit URI Resource ID aset Location
02/13/2019 com.google.cloud/services/compute-engine/VmimageE2Standard_2 86400 seconds https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances/my-instance 16557630484 us-central1-a

Kontrol akses

Saat Anda mengaktifkan fitur ekspor penggunaan untuk bucket Cloud Storage, Compute Engine akan otomatis menambahkan dirinya sendiri ke bucket dengan akses tulis untuk mengirimkan laporan penggunaan. Selama Compute Engine memiliki akses ke bucket dan fitur ekspor penggunaan diaktifkan, Compute Engine akan terus mengekspor laporan penggunaan ke bucket Cloud Storage yang ditentukan.

Anda dapat mengidentifikasi bahwa Compute Engine memiliki akses ke bucket jika Anda melihat identitas berikut ditambahkan ke kebijakan IAM bucket:

cloud-cluster-analytics-export@google.com

Setiap pengguna yang merupakan pemilik project memiliki akses penuh ke bucket Cloud Storage. Pengguna lain, seperti penulis dan pembaca, memiliki tingkat akses yang berbeda ke bucket. Untuk mempelajari IAM untuk bucket, baca IAM untuk Cloud Storage.

Jika Anda menonaktifkan fitur ekspor penggunaan, Compute Engine akan otomatis menghapus akses tulis dari Compute Engine ke bucket. Jika Anda mengubah izin pada akun cloud-cluster-analytics-export@google.com, lalu menonaktifkan fitur ekspor penggunaan, Compute Engine akan menonaktifkan fitur ekspor penggunaan, tetapi tidak akan menghapus akun tersebut dari daftar akses project. Anda dapat memilih untuk menghapus akun secara manual, jika ingin.

Memeriksa apakah laporan penggunaan diaktifkan

Anda dapat memeriksa setelan ekspor penggunaan project dengan mendapatkan informasi tentang project tersebut:

gcloud compute project-info describe

Cari bidangusageExportLocation:

+-------------------------+----------------------------------------------------+
| name                    | myproject                                          |
| description             |                                                    |
| creation-time           | 2019-10-18T16:31:52.308-07:00                      |
| usage                   |                                                    |
|   snapshots             | 1.0/1000.0                                         |
|   networks              | 2.0/2.0                                            |
|   firewalls             | 3.0/10.0                                           |
|...                      |                                                    |
| usageExportLocation     |                                                    |
|   bucketName            | https://storage.googleapis.com/usage-export-sample |
|   reportNamePrefix      |                                                    |
+-------------------------+----------------------------------------------------+

Menonaktifkan laporan penggunaan

Saat Anda menonaktifkan laporan penggunaan, Compute Engine akan otomatis menghapus akses tulis untuk Compute Engine ke bucket Cloud Storage Anda dan berhenti mengirim laporan baru.

Konsol

  1. Buka halaman Setelan Compute Engine.

    Buka Setelan Compute Engine.

  2. Hapus centang kotak Aktifkan ekspor penggunaan untuk menonaktifkan ekspor penggunaan.

gcloud

Di gcloud compute, nonaktifkan fitur ekspor penggunaan dengan menjalankan perintah gcloud compute project-info set-usage-bucket dengan flag --no-bucket:

gcloud compute project-info set-usage-bucket --no-bucket

Python

Untuk menonaktifkan ekspor penggunaan, gunakan metode set_usage_export_bucket() dalam koleksi Projects dengan usage_export_location_resource ditetapkan ke None. Contoh berikut menggunakan Library Klien Cloud untuk Python:

from __future__ import annotations

import sys
from typing import Any

from google.api_core.extended_operation import ExtendedOperation
from google.cloud import compute_v1

def wait_for_extended_operation(
    operation: ExtendedOperation, verbose_name: str = "operation", timeout: int = 300
) -> Any:
    """
    Waits for the extended (long-running) operation to complete.

    If the operation is successful, it will return its result.
    If the operation ends with an error, an exception will be raised.
    If there were any warnings during the execution of the operation
    they will be printed to sys.stderr.

    Args:
        operation: a long-running operation you want to wait on.
        verbose_name: (optional) a more verbose name of the operation,
            used only during error and warning reporting.
        timeout: how long (in seconds) to wait for operation to finish.
            If None, wait indefinitely.

    Returns:
        Whatever the operation.result() returns.

    Raises:
        This method will raise the exception received from `operation.exception()`
        or RuntimeError if there is no exception set, but there is an `error_code`
        set for the `operation`.

        In case of an operation taking longer than `timeout` seconds to complete,
        a `concurrent.futures.TimeoutError` will be raised.
    """
    result = operation.result(timeout=timeout)

    if operation.error_code:
        print(
            f"Error during {verbose_name}: [Code: {operation.error_code}]: {operation.error_message}",
            file=sys.stderr,
            flush=True,
        )
        print(f"Operation ID: {operation.name}", file=sys.stderr, flush=True)
        raise operation.exception() or RuntimeError(operation.error_message)

    if operation.warnings:
        print(f"Warnings during {verbose_name}:\n", file=sys.stderr, flush=True)
        for warning in operation.warnings:
            print(f" - {warning.code}: {warning.message}", file=sys.stderr, flush=True)

    return result

def disable_usage_export(project_id: str) -> None:
    """
    Disable Compute Engine usage export bucket for the Cloud Project.

    Args:
        project_id: project ID or project number of the project to update.
    """
    projects_client = compute_v1.ProjectsClient()

    # Setting `usage_export_location_resource` to an
    # empty object will disable the usage report generation.
    operation = projects_client.set_usage_export_bucket(
        project=project_id, usage_export_location_resource={}
    )

    wait_for_extended_operation(operation, "disabling GCE usage bucket")

Langkah selanjutnya