Ver informes de uso


Compute Engine te permite exportar informes detallados de tu uso de Compute Engine a un segmento de Cloud Storage mediante la función de exportación de uso. Los informes de uso proporcionan información sobre el tiempo de vida de tus recursos. Por ejemplo, puedes ver cuántas instancias de máquina virtual de tu proyecto están ejecutando un tipo de máquina n2-standard-4 y cuánto tiempo lleva en ejecución cada instancia. También puedes consultar el espacio de almacenamiento de un disco persistente e información sobre otras funciones de Compute Engine.

Los informes de uso no proporcionan información sobre facturación ni actividad, como información sobre solicitudes de API. Para obtener información sobre la facturación, consulta la función Exportar datos de facturación de Cloud a BigQuery. Para consultar un registro de las actividades y los accesos administrativos de tus Google Cloud recursos, consulta los registros de auditoría.

Antes de empezar

  • Si aún no lo has hecho, configura la autenticación. La autenticación verifica tu identidad para acceder a Google Cloud servicios y APIs. Para ejecutar código o ejemplos desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:

    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. Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:

      gcloud init

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

    2. Set a default region and zone.

    Python

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

      Instala Google Cloud CLI.

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

      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.

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

Información general

Cuando habilitas los informes de uso, Compute Engine envía dos tipos de informes al segmento de Cloud Storage que especifiques:

  1. Informes de uso diarios

    Estos informes se envían a diario e incluyen datos de uso del día anterior. Cada informe es un archivo independiente que contiene datos del último periodo. Los datos de estos informes son inmutables, lo que significa que Compute Engine no actualiza ni reescribe el archivo de registro si hay imprecisiones. En su lugar, los datos se corrigen en el siguiente informe nuevo que se envía al contenedor.

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

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

  2. Informe acumulativo mensual

    Cada día se envía un único informe acumulativo mensual que contiene los datos de uso mensuales de ese proyecto hasta ese día (sin incluirlo). El informe de uso mensual se sobrescribe cada día con datos nuevos que reflejan el uso mensual de los recursos hasta esa fecha. Solo hay un archivo de datos de uso mensual por proyecto y por mes.

    Los informes acumulativos mensuales tienen el siguiente formato de nombre:

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

    Los archivos de informes diarios y mensuales son muy similares, excepto por el formato de fecha. Los informes mensuales se registran con el año y el mes (YYYYMM), mientras que los informes de uso diarios se registran con el año, el mes y el día (YYYYMMDD).

Todos los informes de uso se envían en formato de valores separados por comas (CSV) y los archivos de informes de uso tienen el prefijo <report_prefix>. El valor <report_prefix> es un valor personalizable que elige el usuario. Si no especificas un prefijo de informe, se usará el prefijo usage_gce de forma predeterminada. Todas las horas se indican en la hora del Pacífico (PST).

Requisitos previos

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

Configurar la exportación de uso

Cuando habilites por primera vez la función de exportación de uso, el primer informe se enviará al día siguiente y detallará el uso del día anterior. Después, recibirás informes cada 24 horas.

Cuando habilites esta función, debes definir dos propiedades:

  1. El segmento de Cloud Storage en el que quieres que se entreguen los informes.

    Puedes seleccionar cualquier segmento de Cloud Storage del que seas propietario, incluidos los segmentos de otros proyectos. Este debe existir para que puedas empezar a exportar informes y debes tener acceso de propietario al mismo. Cloud Storage cobra por el uso, por lo que debes consultar los precios de Cloud Storage para obtener información sobre cómo se te pueden aplicar cargos por el servicio.

    Cualquier usuario que tenga acceso de lectura al segmento de Cloud Storage puede ver los informes de uso del segmento. Cualquier usuario que tenga acceso de escritura al contenedor puede crear, ver y modificar los archivos que ya haya en él. Para obtener más información, consulta la sección Control de acceso.

  2. El prefijo del informe de tus archivos.

    Puede especificar el prefijo de informe que quiere usar en sus informes de uso. Los nombres de los informes de uso contendrán este prefijo. Por ejemplo, si especifica "my-cool-project-report" como prefijo del informe, el nombre del archivo será similar al formato my-cool-project-report_1234567890_20131230.csv. Si no especificas un prefijo de informe, se usará el prefijo predeterminado usage_gce.

Una vez que haya decidido qué propiedades va a usar, puede habilitar la función de exportación de uso de las siguientes formas:

Consola

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

    Ve a Configuración de Compute Engine.

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

  3. Rellena el campo Nombre del contenedor. También puedes proporcionar un prefijo de informe. Si dejas el prefijo del informe vacío, se usará el prefijo predeterminado usage_gce. Todos los informes de uso que se envían al segmento tienen este prefijo.

  4. Haz clic en Guardar.

gcloud

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

Haz los cambios siguientes:

  • BUCKET_NAME es el nombre de un segmento disponible en el que se recibirán los informes de uso. El nombre debe tener el formato gs://bucket-name o https://storage.googleapis.com/bucket-name. El usuario que ejecute este comando debe ser propietario del contenedor.
  • PREFIX es el prefijo opcional de los nombres de los informes de uso. Si no se especifica, el prefijo predeterminado es usage_gce.

Python

Para habilitar las exportaciones de uso, utiliza el método set_usage_export_bucket() de la colección Projects. En el siguiente ejemplo, se usan las bibliotecas de 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 REST para projects.setUsageExportBucket.

Descargar informes de exportación de uso

Cuando empieces a recibir informes de uso en tu segmento, descárgalos como harías con otros objetos de Cloud Storage. Para obtener más información, consulta Descargar objetos.

Métricas admitidas

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

  • Máquinas virtuales
  • Discos persistentes
  • Imágenes
  • Capturas
  • Direcciones IP estáticas
  • Balanceadores de carga
  • Reservas

Cada recurso se describe mediante las siguientes métricas:

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

Una entrada de ejemplo del informe sería similar a la siguiente:

Fecha del informe MeasurementId Cantidad Unidad URI del recurso ID de 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 en un segmento de Cloud Storage, Compute Engine se añade automáticamente al segmento con acceso de escritura para poder enviar los informes de uso. Siempre que Compute Engine tenga acceso al segmento y la función de exportación de uso esté habilitada, Compute Engine seguirá exportando informes de uso al segmento de Cloud Storage especificado.

Puedes comprobar si Compute Engine tiene acceso a un segmento si ves la siguiente identidad añadida a la política de gestión de identidades y accesos del segmento:

cloud-cluster-analytics-export@google.com

Cualquier usuario que sea propietario del proyecto tiene acceso completo al segmento de Cloud Storage. Otros usuarios, como los que tienen permisos de escritura y lectura, tienen diferentes grados de acceso al contenedor. Para obtener información sobre la gestión de identidades y accesos de un segmento, consulta Gestión de identidades y accesos 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 segmento. Si modificas los permisos de la cuenta cloud-cluster-analytics-export@google.com y, a continuación, 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. Puedes quitar la cuenta manualmente.

Comprobar si los informes de uso están habilitados

Para consultar la configuración de exportación de uso de un proyecto, obtén información sobre el proyecto:

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

Inhabilitar los informes de uso

Cuando inhabilita los informes de uso, Compute Engine elimina automáticamente el acceso de escritura de Compute Engine a su segmento de Cloud Storage y deja de enviar nuevos informes.

Consola

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

    Ve a Configuración de Compute Engine.

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

gcloud

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

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

Python

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

Siguientes pasos