Visualizzazione dei rapporti di utilizzo


Compute Engine ti consente di esportare report dettagliati sul tuo utilizzo di Compute Engine in un bucket Cloud Storage tramite la funzionalità di esportazione dell'utilizzo. I report sull'utilizzo forniscono informazioni sul ciclo di vita delle risorse. Ad esempio, puoi vedere quante istanze VM nel tuo progetto eseguono un tipo di macchina n2-standard-4 e da quanto tempo ogni istanza è in esecuzione. Puoi anche esaminare lo spazio di archiviazione di un disco permanente e informazioni su altre funzionalità di Compute Engine.

I report sull'utilizzo non forniscono informazioni sulla fatturazione o sulle attività, ad esempio informazioni sulle richieste API. Per informazioni sulla fatturazione, consulta la funzionalità Esporta i dati di fatturazione Cloud in BigQuery. Per un record delle attività amministrative e degli accessi all'interno delle tue risorseGoogle Cloud , consulta Audit log.

Prima di iniziare

  • Se non l'hai ancora fatto, configura l'autenticazione. L'autenticazione è il processo mediante il quale la tua identità viene verificata per l'accesso ai servizi e alle API Google Cloud . Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su Compute Engine selezionando una delle seguenti opzioni:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

      1. After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      2. Set a default region and zone.
      3. Python

        Per utilizzare gli esempi di Python questa pagina in un ambiente di sviluppo locale, installa e inizializza gcloud CLI, quindi configura le Credenziali predefinite dell'applicazione con le tue credenziali utente.

        1. Install the Google Cloud CLI.

        2. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

        3. To initialize the gcloud CLI, run the following command:

          gcloud init
        4. If you're using a local shell, then create local authentication credentials for your user account:

          gcloud auth application-default login

          You don't need to do this if you're using Cloud Shell.

          If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

        Per ulteriori informazioni, vedi Set up authentication for a local development environment.

Panoramica

Quando attivi i report sull'utilizzo, Compute Engine genera due tipi di report nel bucket Cloud Storage specificato:

  1. Report giornalieri sull'utilizzo

    Questi report vengono generati quotidianamente e includono i dati sull'utilizzo del giorno precedente. Ogni report è un file separato che contiene i dati dell'ultimo periodo. I dati di questi report sono immutabili, il che significa che Compute Engine non aggiorna né riscrive il file di log se sono presenti imprecisioni. I dati vengono corretti nel nuovo report successivo inviato al bucket.

    I report sull'utilizzo giornaliero hanno il seguente formato del nome:

     <bucket>/<reportprefix><numeric_projectid><YYYYMMDD>.csv
     

  2. Report mensile di riepilogo

    Ogni giorno viene generato un singolo report di riepilogo mensile contenente i dati di utilizzo mensile del progetto fino al giorno precedente. Il report sull'utilizzo mensile viene sovrascritto ogni giorno con nuovi dati che riflettono l'utilizzo mensile delle risorse fino a quella data. Esiste un solo file di dati sull'utilizzo mensile per ciascun progetto e ciascun mese.

    I report di riepilogo mensile hanno il seguente formato del nome:

     <bucket>/<reportprefix><numeric_projectid><YYYYMM>.csv
     

    I file dei report giornalieri e mensili sono molto simili, tranne per la differenza nel formato della data, in cui i report di riepilogo mensili sono datati utilizzando l'anno e il mese (YYYYMM) e i report sull'utilizzo giornaliero sono datati utilizzando l'anno, il mese e il giorno (YYYYMMDD).

Tutti i report sull'utilizzo vengono generati in formato CSV (valori separati da virgola) e i file dei report sull'utilizzo sono preceduti da <report_prefix>. <report_prefix> è un valore personalizzabile scelto dall'utente. Se non specifichi un prefisso per i report, per impostazione predefinita viene utilizzato il prefisso usage_gce. Tutti gli orari sono indicati nel fuso orario del Pacifico (PST, UTC-8).

Prerequisiti

Prima di poter iniziare a utilizzare la funzionalità di esportazione dell'utilizzo di Compute Engine:

Configurazione dell'esportazione dell'utilizzo

Quando attivi per la prima volta la funzionalità di esportazione dell'utilizzo, il primo report viene inviato il giorno successivo e fornisce informazioni dettagliate sull'utilizzo del giorno precedente. Successivamente, riceverai i report a intervalli di 24 ore.

Quando attivi questa funzionalità, devi definire due proprietà:

  1. Il bucket Cloud Storage in cui vuoi che vengano inviati i report.

    Puoi selezionare qualsiasi bucket Cloud Storage di tua proprietà, inclusi i bucket di progetti diversi. Puoi iniziare a esportare i report a condizione che il bucket esista e devi disporre dell'accesso come proprietario al bucket. Cloud Storage prevede un addebito per l'utilizzo, pertanto ti consigliamo di consultare la pagina Prezzi di Cloud Storage per informazioni su eventuali addebiti per il servizio.

    Qualsiasi utente con accesso in lettura al bucket Cloud Storage può visualizzare i report sull'utilizzo nel bucket. Qualsiasi utente che dispone dell'accesso in scrittura al bucket può creare, visualizzare e modificare i file esistenti al suo interno. Per ulteriori informazioni, consulta la sezione Controllo dell'accesso.

  2. Il prefisso del report per i file.

    Puoi specificare il prefisso del report da utilizzare per i report sull'utilizzo. Quindi i nomi file dei report di utilizzo contengono questo prefisso. Ad esempio, se specifichi "my-cool-project-report" come prefisso del report, il nome del file sarà simile al formato my-cool-project-report_1234567890_20131230.csv. Se non specifichi un prefisso per i report, viene utilizzato quello predefinito usage_gce.

Dopo aver scelto queste due proprietà, puoi attivare la funzionalità di esportazione dell'utilizzo nei seguenti modi:

Console

  1. Vai alla pagina Impostazioni di Compute Engine.

    Vai a Impostazioni di Compute Engine.

  2. Seleziona la casella Attiva esportazione dell'utilizzo.

  3. Compila il campo che richiede un nome del bucket. In via facoltativa, fornisci un prefisso per i report. Se lasci vuoto il prefisso del report, viene utilizzato il prefisso predefinito usage_gce. Tutti i report sull'utilizzo inviati al bucket vengono denominati con questo prefisso.

  4. Fai clic su Salva.

gcloud

Utilizza il comando gcloud compute project-info set-usage-bucket per attivare questa funzionalità:

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

Sostituisci quanto segue:

  • BUCKET_NAME è il nome di un bucket esistente in cui ricevere i report sull'utilizzo. Il nome deve essere nel formato gs://bucket-name o https://storage.googleapis.com/bucket-name. L'utente che esegue questo comando deve essere un proprietario del bucket.
  • PREFIX è il prefisso facoltativo per i nomi dei report sull'utilizzo. Se non specificato, il prefisso predefinito è usage_gce.

Python

Per attivare le esportazioni dell'utilizzo, utilizza il metodo set_usage_export_bucket() nella raccolta Projects. L'esempio seguente utilizza le librerie client di Cloud per 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")

Per saperne di più, consulta la documentazione di riferimento REST per projects.setUsageExportBucket

Download dei report sull'esportazione dell'utilizzo

Dopo aver iniziato a ricevere i report sull'utilizzo nel tuo bucket, scaricali come faresti con altri oggetti da Cloud Storage. Per ulteriori informazioni, vedi Scarica gli oggetti.

Metriche supportate

I report sull'utilizzo giornaliero forniscono informazioni sull'utilizzo delle seguenti risorse:

  • Macchine virtuali
  • Dischi permanenti
  • Immagini
  • Snapshot
  • Indirizzi IP statici
  • Bilanciatori del carico
  • Prenotazioni

Ogni risorsa è descritta utilizzando le seguenti metriche:

Nome metrica Proprietà metrica
Data report
  • Tipo di metrica: stringa
  • Descrizione: la data di utilizzo.
  • Esempio: 2019-08-15
ID misurazione
  • Tipo di metrica: stringa
  • Descrizione: l'ID del tipo di risorsa misurata.
    Ad esempio, VmimageN2StandardCore_Uswest2 per rappresentare un tipo di macchina n2-standard in us-west2.
  • Esempio: com.google.cloud/services/compute‑engine/VmimageN2StandardCore_Uswest2
  • Esempio: com.google.cloud/services/compute‑engine/VmimageN2StandardRam_Uswest2
Quantità
  • Tipo di metrica: numero intero
  • Descrizione: la quantità di utilizzo per la data specificata.
  • Esempio: 86400
Unità
  • Tipo di metrica: stringa
  • Descrizione: il tipo di unità, ad esempio conteggio, secondi o ore.
  • Esempio: secondi
URI risorsa
  • Tipo di metrica: stringa
  • Descrizione: l'URI della risorsa specificata.
  • Esempio: https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instances/my-n2-vm
ID risorsa
  • Tipo di metrica: numero intero
  • Descrizione: un ID numerico che identifica la risorsa specifica.
  • Esempio: 16557630484925648021
Posizione
  • Tipo di metrica: stringa
  • Descrizione: la località della risorsa. Il nome di una zona o regione oppure GLOBAL per le risorse globali.
  • Esempio: us-central1-a

Ecco una voce di esempio nel report:

Data report ID misurazione Quantità Unità URI risorsa ID risorsa Posizione
02/13/2019 com.google.cloud/services/compute-engine/VmimageE2Standard_2 86.400 secondi https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances/my-instance 16557630484 us-central1-a

Controllo degli accessi

Quando attivi la funzionalità di esportazione dell'utilizzo per un bucket Cloud Storage, Compute Engine si aggiunge automaticamente al bucket con accesso in scrittura per generare i report sull'utilizzo. Finché Compute Engine ha accesso al bucket e la funzionalità di esportazione dell'utilizzo è attivata, Compute Engine continua a esportare i report sull'utilizzo nel bucket Cloud Storage specificato.

Puoi identificare il fatto che Compute Engine ha accesso a un bucket se vedi che la seguente identità è stata aggiunta al criterio IAM del bucket:

cloud-cluster-analytics-export@google.com

Qualsiasi utente che è proprietario del progetto ha accesso completo al bucket Cloud Storage. Altri utenti, come autori e lettori, hanno diversi gradi di accesso al bucket. Per informazioni su IAM per un bucket, consulta IAM per Cloud Storage.

Se disattivi la funzionalità di esportazione dell'utilizzo, Compute Engine rimuove automaticamente l'accesso in scrittura da Compute Engine al bucket. Se modifichi le autorizzazioni dell'account cloud-cluster-analytics-export@google.com e poi disattivi la funzionalità di esportazione dell'utilizzo, Compute Engine disattiva la funzionalità, ma non rimuove l'account dall'elenco per gli accessi al progetto. Puoi rimuovere l'account manualmente.

Verifica per controllare se i report sull'utilizzo sono attivi

Puoi controllare le impostazioni di esportazione dell'utilizzo di un progetto ottenendo informazioni sul progetto:

gcloud compute project-info describe

Cerca il campo usageExportLocation:

+-------------------------+----------------------------------------------------+
| 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      |                                                    |
+-------------------------+----------------------------------------------------+

Disattivazione dei report sull'utilizzo

Quando disattivi i report sull'utilizzo, Compute Engine rimuove automaticamente l'accesso in scrittura di Compute Engine al tuo bucket Cloud Storage e interrompe l'invio di nuovi report.

Console

  1. Vai alla pagina Impostazioni di Compute Engine.

    Vai a Impostazioni di Compute Engine.

  2. Deseleziona la casella Attiva esportazione dell'utilizzo per disattivarla.

gcloud

Disattiva la funzionalità di esportazione dell'utilizzo utilizzando il comando gcloud compute project-info set-usage-bucket con il flag --no-bucket:

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

Python

Per disattivare le esportazioni dell'utilizzo, utilizza il metodo set_usage_export_bucket() nella raccolta Projects con usage_export_location_resource impostato su None. L'esempio seguente utilizza le librerie client di Cloud per 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")

Passaggi successivi