Consulta los informes de uso


Compute Engine te permite exportar informes detallados del uso de Compute Engine a un bucket de Cloud Storage mediante la función de exportación de uso. Los informes de uso proporcionan información sobre el ciclo de vida de los recursos. Por ejemplo, puedes ver cuántas instancias de VM en tu proyecto ejecutan un tipo de máquina n2-standard-4 y por cuánto tiempo se ejecutó cada instancia. También puedes revisar el espacio de almacenamiento de un disco persistente y la información sobre otras funciones de Compute Engine.

Los informes de uso no proporcionan datos de facturación o de actividad, como información sobre solicitudes a la API. Para obtener datos de facturación, consulta la función de exportación de facturación. Para ver los registros de actividad, consulta Registros de actividad.

Antes de comenzar

  • Configura la autenticación si aún no lo hiciste. La autenticación es el proceso mediante el cual se verifica tu identidad para acceder a los servicios y las API de Google Cloud. Para ejecutar código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine de la siguiente manera.

    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. Install the Google Cloud CLI, then initialize it by running the following command:

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

      Para usar las muestras de Python de esta página en un entorno de desarrollo local, instala e inicializa gcloud CLI y, luego, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.

      1. Install the Google Cloud CLI.
      2. To initialize the gcloud CLI, run the following command:

        gcloud init
      3. 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.

      Para obtener más información, consulta Set up authentication for a local development environment.

Descripción general

Cuando habilitas los informes de uso, Compute Engine entrega dos tipos de informes al bucket de Cloud Storage que especifiques:

  1. Informes de uso diario

    Estos informes se envían diariamente y contienen datos de uso del día anterior. Cada informe es un archivo separado que contiene datos del último período. Los datos en estos informes son inmutables, lo que significa que Compute Engine no actualizará ni reescribirá el archivo de registro si hay errores. En cambio, los datos se corrigen en el próximo informe nuevo que se entrega al bucket.

    Los informes de uso diario tienen el siguiente formato de nombre:

    <bucket>/<report_prefix>_<numeric_project_id>_<YYYYMMDD>.csv
    
  2. Informe acumulativo mensual

    Se entrega un solo informe acumulativo mensual, que contiene los datos de uso mensual para ese proyecto hasta ese día, pero sin incluirlo. El informe de uso mensual se reemplaza cada día con nuevos datos que reflejan el uso mensual de los recursos hasta esa fecha. Solo hay un archivo de datos de uso mensual por proyecto, por mes.

    Los informes acumulativos mensuales tienen el siguiente formato de nombre:

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

    Los archivos de informes diarios y mensuales tienen un aspecto muy similar, pero se diferencian en el formato de fecha. Los informes acumulativos mensuales tienen un formato de año y mes (YYYYMM), mientras que los informes de uso diario tienen un formato de año, mes y día (YYYYMMDD).

Todos los informes de uso se entregan en formato de valores separados por comas (CSV) y los archivos de informes de uso tienen el prefijo <report_prefix>. <report_prefix> es un valor personalizable elegido por el usuario. Si no se especifica un prefijo de informe, se usa el prefijo usage_gce de forma predeterminada. Todas las horas se expresan según la hora del Pacífico (PST).

Requisitos previos

Antes de que puedas comenzar a usar la exportación de uso de Compute Engine, debes hacer lo siguiente:

Configura la exportación de uso

Cuando habilitas por primera vez la función de exportación de uso, el primer informe se enviará al día siguiente y contendrá información detallada sobre el uso del día anterior. Luego, recibirás informes cada 24 horas.

Para configurar la función de exportación de uso, habilítala en la herramienta gcloud compute. Cuando habilitas la función, debes definir dos propiedades:

  1. El bucket de Cloud Storage al que deseas enviar tus informes.

    Puedes seleccionar cualquier bucket de Cloud Storage del que seas propietario, incluidos los bucket s de diferentes proyectos. Este bucket debe existir antes de que puedas comenzar a exportar informes y debes tener acceso de propietario al bucket. Cloud Storage cobra por el uso, por lo tanto, deberás revisar los precios de Cloud Storage para obtener información sobre los gastos en los que puedes incurrir por el servicio.

    Cualquier usuario que tenga acceso de lectura al bucket de Cloud Storage puede ver los informes de uso en el bucket. Cualquier usuario que tenga acceso de escritura al bucket puede crear, ver y modificar archivos existentes en el bucket. Para obtener más información, consulta la sección Control de acceso.

  2. El prefijo de informe para tus archivos

    Puedes especificar el prefijo de informe para usar en tus informes de uso. Los informes de uso tendrán nombres de archivo que incluirán este prefijo. Por ejemplo, si especificas “my-cool-project-report” como el prefijo de tu informe, se obtiene un nombre de archivo similar al formato my-cool-project-report_1234567890_20131230.csv. Si no especificas un prefijo de informe, se usa el prefijo predeterminado usage_gce.

Después de definir estas dos propiedades, puedes habilitar la función de exportación de uso de las siguientes maneras:

Console

  1. Ve a la página Configuración de Compute Engine.

    Ve a la configuración de Compute Engine.

  2. Marca la casilla Habilitar la exportación de uso.

  3. Completa el campo que solicita un Nombre del depósito. De manera opcional, proporciona un Prefijo del informe, si lo deseas. Si dejas vacío el prefijo del informe, se usará el prefijo predeterminado usage_gce. Todos los informes de uso entregados al bucket se nombran con este prefijo.

  4. Haz clic en Guardar.

gcloud

En gcloud compute, usa el comando gcloud compute project-info set-usage-bucket para habilitar esta función:

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

En el comando anterior, se ilustra lo siguiente:

  • [BUCKET_NAME] es el nombre de un depósito existente que recibirá los informes de uso. Debe tener el formato gs://<bucket-name> o https://storage.googleapis.com/<bucket-name>. El usuario que ejecuta este comando debe ser el propietario del bucket.
  • [PREFIX] es el prefijo opcional para los nombres de los informes de uso. Si no se especifica, el prefijo predeterminado es usage_gce.

Python

Para habilitar las exportaciones de uso, usa el método set_usage_export_bucket() en la colección Projects. En el siguiente ejemplo, se usan las bibliotecas cliente de Cloud para 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")

Para obtener más información, consulta la documentación de referencia de projects.setUsageExportBucket.

Descarga informes de exportación de uso

Una vez que comiences a recibir informes de uso en tu bucket, descarga los informes como lo harías con otros objetos en Cloud Storage. Para obtener más información, consulta Descarga objetos.

Métricas admitidas

Los informes de uso diario proporcionan información de uso sobre los siguientes recursos:

  • Máquinas virtuales
  • Discos persistentes
  • Imágenes
  • Instantáneas
  • Direcciones IP estáticas
  • Balanceadores de cargas
  • Reservas

Cada recurso se describe según las siguientes métricas:

Nombre de la métrica Propiedades de la métrica
Fecha del informe
  • Tipo de métrica: string
  • Descripción: la fecha de uso
  • Ejemplo: 15/08/2019
MeasurementId
  • Tipo de métrica: string
  • Descripción: ID del tipo de recurso que se mide.
    Por ejemplo, VmimageN2StandardCore_Uswest2 para representar un n2-standard en un tipo de máquina us-west2.
  • Ejemplo: com.google.cloud/services/compute‑engine/VmimageN2StandardCore_Uswest2
  • Ejemplo: com.google.cloud/services/compute‑engine/VmimageN2StandardRam_Uswest2
Cantidad
  • Tipo de métrica: número entero
  • Descripción: la cantidad de uso para la fecha especificada
  • Ejemplo: 86400
Unidad
  • Tipo de métrica: string
  • Descripción: el tipo de unidad, como conteo, segundos, horas y más
  • Ejemplo: segundos
URI de recursos
  • Tipo de métrica: string
  • Descripción: el URI del recurso especificado.
  • Ejemplo: https://compute.googleapis.com/compute/v1/projects/<project‑id>/zones/<zone>/instances/<instance>
ResourceId
  • Tipo de métrica: número entero
  • Descripción: un ID numérico que identifica el recurso específico
  • Ejemplo: 16557630484925648021
Ubicación
  • Tipo de métrica: string
  • Descripción: la ubicación del recurso, Puede ser un nombre de zona o región, o GLOBAL para recursos globales
  • Ejemplo: us-central1-a

Una entrada de ejemplo en el informe tendría el siguiente aspecto:

Fecha del informe ID de medición Cantidad Unidad URI de recursos ID del recurso Ubicación
13/02/2019 com.google.cloud/services/compute-engine/VmimageE2Standard_2 86400 segundos https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances/my-instance 16557630484 us-central1-a

Control de acceso

Cuando habilitas la función de exportación de uso para un bucket de Cloud Storage, Compute Engine se agrega automáticamente al bucket con acceso de escritura para entregar informes de uso. Mientras Compute Engine tenga acceso al bucket y la función de exportación de uso esté habilitada, Compute Engine continuará exportando informes de uso al bucket de Cloud Storage especificado.

Si ves que se agrega la siguiente identidad a la política de IAM del bucket, significa que Compute Engine tiene acceso al bucket:

cloud-cluster-analytics-export@google.com

Cualquier usuario que sea propietario del proyecto tiene acceso completo al bucket de Cloud Storage. Otros usuarios, como escritores y lectores, tienen diferentes grados de acceso al bucket. Si deseas obtener información sobre IAM para un bucket, consulta IAM para Cloud Storage.

Si inhabilitas la función de exportación de uso, Compute Engine quitará automáticamente el acceso de escritura de Compute Engine al bucket. Si modificas los permisos en la cuenta cloud-cluster-analytics-export@google.com y, luego, inhabilitas la función de exportación de uso, Compute Engine inhabilitará la función de exportación de uso, pero no quitará la cuenta de la lista de acceso al proyecto. Si lo deseas, puedes quitar la cuenta de forma manual.

Verifica que los informes de uso están habilitados

Puedes verificar la configuración de exportación de uso de un proyecto si obtienes información sobre él:

gcloud compute project-info describe

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

Inhabilita informes de uso

Cuando inhabilitas los informes de uso, Compute Engine quita de forma automática el acceso de escritura de Compute Engine a tu bucket de Cloud Storage y deja de enviar informes nuevos.

Consola

  1. Ve a la página Configuración de Compute Engine.

    Ve a la configuración de Compute Engine.

  2. Desmarca la casilla Habilitar la exportación de uso para inhabilitar la exportación de uso.

gcloud

En gcloud compute, ejecuta el comando gcloud compute project-info set-usage-bucket con la marca --no-bucket para inhabilitar la función de exportación de uso:

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

Python

Para inhabilitar las exportaciones de uso, usa el método set_usage_export_bucket() en la colección Projects con usage_export_location_resource configurado como None. En el siguiente ejemplo, se usan las bibliotecas cliente de Cloud para 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")

¿Qué sigue?