Visualizzazione dei rapporti di utilizzo

Compute Engine consente di esportare report dettagliati sull'utilizzo di Compute Engine in un bucket Cloud Storage utilizzando la funzionalità di esportazione dell'utilizzo. I report sull'utilizzo forniscono informazioni sulla durata delle risorse. Ad esempio, puoi vedere quante istanze VM nel tuo progetto eseguono un tipo di macchina n2-standard-4 e da quanto tempo è in esecuzione ogni istanza. Puoi inoltre 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 i dati di fatturazione, consulta la funzionalità di esportazione della fatturazione. Per i log delle attività, vedi Log delle attività.

Prima di iniziare

  • Se non l'hai ancora fatto, configura l'autenticazione. L'autenticazione è il processo mediante il quale viene verificata l'identità per l'accesso ai servizi e alle API Google Cloud. Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti in Compute Engine nel seguente modo.

    Seleziona la scheda relativa a come prevedi di utilizzare gli esempi in questa pagina:

    Console

    Quando utilizzi la console Google Cloud per accedere ai servizi e alle API di Google Cloud, non devi configurare l'autenticazione.

    gcloud

    1. Installa Google Cloud CLI, quindi initialize eseguendo questo comando:

      gcloud init
    2. Imposta una regione e una zona predefinite.

    Python

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

    1. Installa Google Cloud CLI.
    2. Per initialize gcloud CLI, esegui questo comando:

      gcloud init
    3. Crea credenziali di autenticazione locali per il tuo Account Google:

      gcloud auth application-default login

    Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.

Panoramica

Quando abiliti i report sull'utilizzo, Compute Engine invia due tipi di report al bucket Cloud Storage specificato:

  1. Report sull'utilizzo giornaliero

    Questi report vengono pubblicati ogni giorno e includono i dati sull'utilizzo del giorno precedente. Ogni report è un file separato contenente i dati dell'ultimo periodo. I dati in questi report sono immutabili, il che significa che Compute Engine non aggiorna o riscrive il file di log in caso di inesattezze. Vengono invece corretti nel nuovo report successivo pubblicato nel bucket.

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

    <bucket>/<report_prefix>_<numeric_project_id>_<YYYYMMDD>.csv
    
  2. Report di aggregazione mensile

    Viene pubblicato un singolo report di aggregazione mensile contenente i dati sull'utilizzo mensili per il progetto fino al giorno escluso. Il report sull'utilizzo mensile viene sovrascritto ogni giorno con nuovi dati che riflettono l'utilizzo mensile delle risorse fino a quella data. È disponibile un solo file di dati sull'utilizzo al mese per progetto.

    I report mensili di aggregazione hanno il seguente formato dei nomi:

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

    I file dei report giornalieri e mensili sembrano molto simili, ad eccezione della differenza di formato della data, in cui i report di aggregazione mensili vengono aggiornati con l'anno e il mese (YYYYMM), mentre i report sull'utilizzo giornaliero riportano la data secondo l'anno, il mese e la data (YYYYMMDD).

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

Prerequisiti

Prima di poter iniziare a utilizzare l'esportazione dell'utilizzo di Compute Engine:

Configurazione dell'esportazione dell'utilizzo

Quando abiliti 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. In seguito, riceverai i report a intervalli di 24 ore.

Per configurare la funzionalità di esportazione dell'utilizzo, abilitala nello strumento gcloud compute. Quando attivi questa funzionalità, devi definire due proprietà:

  1. Il bucket Cloud Storage in cui vuoi ricevere i report.

    Puoi selezionare qualsiasi bucket Cloud Storage di cui sei proprietario, inclusi i bucket di progetti diversi. Questo bucket deve esistere prima che tu possa iniziare a esportare i report e tu devi disporre dell'accesso come proprietario al bucket. Cloud Storage addebita costi per l'utilizzo, perciò ti consigliamo di consultare i prezzi di Cloud Storage per avere informazioni su come potrebbero esserti addebitati costi per il servizio.

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

  2. Il prefisso del report per i tuoi file.

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

Dopo aver deciso queste due proprietà, puoi abilitare 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 Abilita esportazione dell'utilizzo.

  3. Compila il campo in cui inserisci il Nome bucket. Se vuoi, puoi fornire un prefisso del report. Se lasci vuoto il prefisso del report, viene utilizzato il prefisso predefinito usage_gce. Tutti i report sull'utilizzo pubblicati nel bucket hanno questo prefisso.

  4. Fai clic su Salva.

gcloud

In gcloud compute, usa il comando gcloud compute project-info set-usage-bucket per abilitare questa funzionalità:

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

Dove:

  • [BUCKET_NAME] è il nome di un bucket esistente che riceverà i report sull'utilizzo. 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 abilitare le esportazioni dell'utilizzo, usa il metodo set_usage_export_bucket() nella raccolta Projects. Nell'esempio seguente vengono utilizzate 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 maggiori informazioni, consulta la documentazione di riferimento API per projects.setUsageExportBucket

Download dei report sull'esportazione dell'utilizzo

Dopo aver iniziato a ricevere i report sull'utilizzo nel bucket, scaricali come faresti con altri oggetti da Cloud Storage. Per ulteriori informazioni, consulta la sezione Download degli 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 viene descritta utilizzando le seguenti metriche:

Nome metrica Proprietà metrica
Data report
  • Tipo di metrica: stringa
  • Descrizione: la data di utilizzo.
  • Esempio: 15-08-2019
MeasurementId
  • Tipo di metrica: stringa
  • Descrizione: l'ID del tipo di risorsa che viene misurata.
    Ad esempio, VmimageN2StandardCore_Uswest2 per rappresentare un n2-standard nel tipo di macchina 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: quantità di utilizzo per la data specificata.
  • Esempio: 86400
Unità
  • Tipo di metrica: stringa
  • Descrizione: il tipo di unità, ad esempio conteggio, secondi, ore e così via.
  • Esempio: secondi
URI risorsa
  • Tipo di metrica: stringa
  • Descrizione: l'URI della risorsa specificata.
  • Esempio: https://compute.googleapis.com/compute/v1/projects/<project‑id>/zones/<zone>/instances/<instance>
ResourceId
  • Tipo di metrica: numero intero
  • Descrizione: un ID numerico che identifica la risorsa specifica.
  • Esempio: 16557630484925648021
Località
  • Tipo di metrica: stringa
  • Descrizione: la località della risorsa. Nome di una zona o di una regione oppure GLOBAL per le risorse globali.
  • Esempio: us-central1-a

Ecco un esempio di voce nel report:

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

Controllo dell'accesso

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

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

cloud-cluster-analytics-export@google.com

Qualsiasi utente proprietario del progetto ha accesso completo al bucket Cloud Storage. Altri utenti, ad esempio autori e lettori, hanno diversi gradi di accesso al bucket. Per saperne di più su IAM per un bucket, consulta IAM per Cloud Storage.

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

Controllo dell'abilitazione dei report sull'utilizzo in corso...

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 disabiliti i report sull'utilizzo, Compute Engine rimuove automaticamente l'accesso in scrittura per Compute Engine al bucket Cloud Storage e smette di inviare nuovi report.

Console

  1. Vai alla pagina Impostazioni di Compute Engine.

    Vai a Impostazioni di Compute Engine.

  2. Deseleziona la casella Abilita esportazione dell'utilizzo per disabilitare l'esportazione dell'utilizzo.

gcloud

In gcloud compute, disabilita la funzionalità di esportazione dell'utilizzo eseguendo 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 disabilitare le esportazioni relative all'utilizzo, usa il metodo set_usage_export_bucket() nella raccolta Projects con usage_export_location_resource impostato su None. Nell'esempio seguente vengono utilizzate 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