Visualizando relatórios de uso,Visualizando relatórios de uso


O Compute Engine permite exportar relatórios detalhados do uso do Compute Engine para um bucket do Cloud Storage usando o recurso de exportação de uso. Os relatórios de uso fornecem informações sobre a vida útil dos seus recursos. Por exemplo, você pode ver quantas instâncias de VM em seu projeto estão executando um tipo de máquina n2-standard-4 e há quanto tempo cada instância está em execução. Você também pode analisar o espaço de armazenamento de um disco permanente e informações sobre outros recursos do Compute Engine.

Os relatórios de uso não fornecem informações de faturamento ou atividades, como informações sobre solicitações de API. Para informações de faturamento, consulte o recurso Exportar dados do Cloud Billing para o BigQuery . Para um registro das atividades administrativas e acessos dentro do seuGoogle Cloud recursos, consulte Logs de auditoria .

Antes de começar

  • Se ainda não o fez, configure a autenticação. Autenticação é o processo pelo qual sua identidade é verificada para acesso a Google Cloud serviços e APIs. Para executar códigos ou amostras em um ambiente de desenvolvimento local, você pode se autenticar no Compute Engine selecionando uma das seguintes opções:

    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

      Para usar os exemplos Python desta página em um ambiente de desenvolvimento local, instale e inicialize o gcloud CLI e e configure o Application Default Credentials com suas credenciais de usuário.

      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, confirm that you have configured the gcloud CLI to use Workforce Identity Federation.

      Confira mais informações em Set up authentication for a local development environment.

Visão geral

Quando você ativa relatórios de uso, o Compute Engine fornece dois tipos de relatórios para o bucket do Cloud Storage especificado:

  1. Relatórios de uso diário

    Esses relatórios são entregues diariamente e incluem dados de uso do dia anterior. Cada relatório é um arquivo separado que contém dados do último período. Os dados nesses relatórios são imutáveis, o que significa que o Compute Engine não atualiza nem reescreve o arquivo de log se houver imprecisões. Em vez disso, os dados são corrigidos no próximo novo relatório entregue ao bucket.

    Os relatórios de uso diário têm o seguinte formato de nome:

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

  2. Relatório cumulativo mensal

    Um único relatório cumulativo mensal é entregue diariamente, contendo dados de uso mensal desse projeto até, mas não incluindo, aquele dia. O relatório de utilização mensal é substituído todos os dias por novos dados que refletem a utilização mensal de recursos até essa data. Existe apenas um arquivo de dados de uso mensal por projeto, por mês.

    Os relatórios cumulativos mensais têm o seguinte formato de nome:

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

    Os arquivos de relatório diário e mensal são muito semelhantes, exceto pela diferença no formato de data, onde os relatórios cumulativos mensais são datados usando o ano e o mês ( YYYYMM ) e os relatórios de uso diário são datados usando o ano, o mês e a data ( YYYYMMDD ).

Todos os relatórios de uso são entregues em formato de valores separados por vírgula (CSV) e os arquivos de relatório de uso são prefixados usando <report_prefix> . O <report_prefix> é um valor customizável escolhido pelo usuário. Se você não especificar um prefixo de relatório, o prefixo usage_gce será usado por padrão. Todos os horários são fornecidos no horário do Pacífico (PST).

Pré-requisitos

Antes de começar a usar a exportação de uso do Compute Engine:

Configurando a exportação de uso

Quando você ativa o recurso de exportação de uso pela primeira vez, o primeiro relatório é enviado no dia seguinte, detalhando o uso do dia anterior. Depois, você recebe relatórios em intervalos de 24 horas.

Ao ativar esse recurso, você deve definir duas propriedades:

  1. O bucket do Cloud Storage onde você gostaria que seus relatórios fossem entregues.

    Você pode selecionar qualquer bucket do Cloud Storage do qual você seja proprietário, incluindo buckets de projetos diferentes. Esse bucket deve existir antes que você possa começar a exportar relatórios e você deve ter acesso de proprietário ao bucket. O Cloud Storage cobra pelo uso, portanto, você deve revisar os preços do Cloud Storage para obter informações sobre como você pode incorrer em cobranças pelo serviço.

    Qualquer usuário que tenha acesso de leitura ao bucket do Cloud Storage pode visualizar os relatórios de uso no bucket. Qualquer usuário que tenha acesso de gravação ao bucket pode criar, visualizar e modificar arquivos existentes no bucket. Para obter mais informações, consulte a seção Controle de acesso .

  2. O prefixo do relatório para seus arquivos.

    Você pode especificar o prefixo do relatório a ser usado em seus relatórios de uso. Seus relatórios de uso terão nomes de arquivos que contêm esse prefixo. Por exemplo, especificar "my-cool-project-report" como prefixo do relatório resulta em um nome de arquivo semelhante ao formato my-cool-project-report_1234567890_20131230.csv . Se você não especificar um prefixo de relatório, o prefixo padrão usage_gce será usado.

Depois de decidir sobre essas duas propriedades, você poderá ativar o recurso de exportação de uso das seguintes maneiras:

Console

  1. Acesse a página Configurações do Compute Engine .

    Acesse Configurações do Compute Engine .

  2. Marque a caixa Habilitar exportação de uso .

  3. Preencha o campo solicitando um nome de bucket . Opcionalmente, forneça um prefixo de relatório . Se você deixar o prefixo do relatório vazio, o prefixo padrão usage_gce será usado. Todos os relatórios de uso entregues ao bucket são nomeados com esse prefixo.

  4. Clique em Salvar .

gcloud

Use o comando gcloud compute project-info set-usage-bucket para ativar este recurso:

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

Substitua o seguinte:

  • BUCKET_NAME é o nome de um bucket existente para receber os relatórios de uso. O nome deve estar no formato gs:// bucket-name ou https://storage.googleapis.com/ bucket-name . O usuário que executa este comando deve ser proprietário do bucket.
  • PREFIX é o prefixo opcional para os nomes dos relatórios de uso. Se não for especificado, o prefixo padrão será usage_gce .

Pitão

Para habilitar exportações de uso, use o método set_usage_export_bucket() na coleção Projects . O exemplo a seguir usa as bibliotecas de cliente do 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 obter mais informações, consulte a documentação de referência REST para projects.setUsageExportBucket

Fazendo download de relatórios de exportação de uso

Depois de começar a receber relatórios de uso no bucket, faça download dos relatórios como faria com outros objetos do Cloud Storage. Para obter mais informações, consulte Baixar objetos .

Métricas suportadas

Os relatórios de uso diário fornecem informações de uso sobre os seguintes recursos:

  • Máquinas virtuais
  • Discos permanentes
  • Imagens
  • Instantâneos
  • Endereços IP estáticos
  • Balanceadores de carga
  • Reservas

Cada recurso é descrito usando as seguintes métricas:

Nome da métrica Propriedades métricas
Data do relatório
  • Tipo de métrica: string
  • Descrição: A data do uso.
  • Exemplo: 15/08/2019
ID de medição
  • Tipo de métrica: string
  • Descrição: O ID do tipo de recurso que está sendo medido.
    Por exemplo, VmimageN2StandardCore_Uswest2 para representar um tipo de máquina n2-standard em us-west2 .
  • Exemplo: com.google.cloud/services/compute‑engine/VmimageN2StandardCore_Uswest2
  • Exemplo: com.google.cloud/services/compute‑engine/VmimageN2StandardRam_Uswest2
Quantidade
  • Tipo de métrica: inteiro
  • Descrição: A quantidade de uso para a data especificada.
  • Exemplo: 86400
Unidade
  • Tipo de métrica: string
  • Descrição: O tipo de unidade, como contagem, segundos ou horas.
  • Exemplo: segundos
URI do recurso
  • Tipo de métrica: string
  • Descrição: O URI do recurso especificado.
  • Exemplo: https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instances/my-n2-vm
ID do recurso
  • Tipo de métrica: inteiro
  • Descrição: um ID numérico que identifica o recurso específico.
  • Exemplo: 16557630484925648021
Localização
  • Tipo de métrica: string
  • Descrição: A localização do recurso. Um nome de zona ou região ou GLOBAL para recursos globais.
  • Exemplo: us-central1-a

Um exemplo de entrada no relatório seria semelhante ao seguinte:

Data do relatório ID de medição Quantidade Unidade URI do recurso ID do recurso Localização
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

Controle de acesso

Quando você ativa o recurso de exportação de uso para um bucket do Cloud Storage, o Compute Engine se adiciona automaticamente ao bucket com acesso de gravação para fornecer relatórios de uso. Enquanto o Compute Engine tiver acesso ao bucket e o recurso de exportação de uso estiver ativado, o Compute Engine continuará exportando relatórios de uso para o bucket especificado do Cloud Storage.

Você poderá identificar que o Compute Engine tem acesso a um bucket se vir a seguinte identidade adicionada à política do IAM do bucket:

cloud-cluster-analytics-export@google.com

Qualquer usuário proprietário do projeto tem acesso total ao intervalo do Cloud Storage. Outros usuários, como escritores e leitores, têm diferentes graus de acesso ao bucket. Para saber mais sobre o IAM para um bucket, leia IAM para Cloud Storage .

Se você desativar o recurso de exportação de uso, o Compute Engine removerá automaticamente o acesso de gravação do Compute Engine para o bucket. Se você modificar as permissões na conta cloud-cluster-analytics-export@google.com e desativar o recurso de exportação de uso, o Compute Engine desativará o recurso de exportação de uso, mas não removerá a conta da lista de acesso do projeto. Você pode remover a conta manualmente.

Verificando se os relatórios de uso estão ativados

Você pode verificar as configurações de exportação de uso de um projeto obtendo informações sobre o projeto:

gcloud compute project-info describe

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

Desativando relatórios de uso

Quando você desativa os relatórios de uso, o Compute Engine remove automaticamente o acesso de gravação do Compute Engine ao bucket do Cloud Storage e interrompe o envio de novos relatórios.

Console

  1. Acesse a página Configurações do Compute Engine .

    Acesse Configurações do Compute Engine .

  2. Desmarque a caixa Habilitar exportação de uso para desabilitar a exportação de uso.

gcloud

Desative o recurso de exportação de uso usando o comando gcloud compute project-info set-usage-bucket com a sinalização --no-bucket :

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

Pitão

Para desabilitar as exportações de uso, use o método set_usage_export_bucket() na coleção Projects com usage_export_location_resource definido como None . O exemplo a seguir usa as bibliotecas de cliente do 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")

O que vem a seguir

,

O Compute Engine permite exportar relatórios detalhados do uso do Compute Engine para um bucket do Cloud Storage usando o recurso de exportação de uso. Os relatórios de uso fornecem informações sobre a vida útil dos seus recursos. Por exemplo, você pode ver quantas instâncias de VM em seu projeto estão executando um tipo de máquina n2-standard-4 e há quanto tempo cada instância está em execução. Você também pode analisar o espaço de armazenamento de um disco permanente e informações sobre outros recursos do Compute Engine.

Os relatórios de uso não fornecem informações de faturamento ou atividades, como informações sobre solicitações de API. Para informações de faturamento, consulte o recurso Exportar dados do Cloud Billing para o BigQuery . Para um registro das atividades administrativas e acessos dentro do seuGoogle Cloud recursos, consulte Logs de auditoria .

Antes de começar

  • Se ainda não o fez, configure a autenticação. Autenticação é o processo pelo qual sua identidade é verificada para acesso a Google Cloud serviços e APIs. Para executar códigos ou amostras em um ambiente de desenvolvimento local, você pode se autenticar no Compute Engine selecionando uma das seguintes opções:

    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

      Para usar os exemplos Python desta página em um ambiente de desenvolvimento local, instale e inicialize o gcloud CLI e e configure o Application Default Credentials com suas credenciais de usuário.

      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, confirm that you have configured the gcloud CLI to use Workforce Identity Federation.

      Confira mais informações em Set up authentication for a local development environment.

Visão geral

Quando você ativa relatórios de uso, o Compute Engine fornece dois tipos de relatórios para o bucket do Cloud Storage especificado:

  1. Relatórios de uso diário

    Esses relatórios são entregues diariamente e incluem dados de uso do dia anterior. Cada relatório é um arquivo separado que contém dados do último período. Os dados nesses relatórios são imutáveis, o que significa que o Compute Engine não atualiza nem reescreve o arquivo de log se houver imprecisões. Em vez disso, os dados são corrigidos no próximo novo relatório entregue ao bucket.

    Os relatórios de uso diário têm o seguinte formato de nome:

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

  2. Relatório cumulativo mensal

    Um único relatório cumulativo mensal é entregue diariamente, contendo dados de uso mensal desse projeto até, mas não incluindo, aquele dia. O relatório de utilização mensal é substituído todos os dias por novos dados que refletem a utilização mensal de recursos até essa data. Existe apenas um arquivo de dados de uso mensal por projeto, por mês.

    Os relatórios cumulativos mensais têm o seguinte formato de nome:

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

    Os arquivos de relatório diário e mensal são muito semelhantes, exceto pela diferença no formato de data, onde os relatórios cumulativos mensais são datados usando o ano e o mês ( YYYYMM ) e os relatórios de uso diário são datados usando o ano, o mês e a data ( YYYYMMDD ).

Todos os relatórios de uso são entregues em formato de valores separados por vírgula (CSV) e os arquivos de relatório de uso são prefixados usando <report_prefix> . O <report_prefix> é um valor customizável escolhido pelo usuário. Se você não especificar um prefixo de relatório, o prefixo usage_gce será usado por padrão. Todos os horários são fornecidos no horário do Pacífico (PST).

Pré-requisitos

Antes de começar a usar a exportação de uso do Compute Engine:

Configurando a exportação de uso

Quando você ativa o recurso de exportação de uso pela primeira vez, o primeiro relatório é enviado no dia seguinte, detalhando o uso do dia anterior. Depois, você recebe relatórios em intervalos de 24 horas.

Ao ativar esse recurso, você deve definir duas propriedades:

  1. O bucket do Cloud Storage onde você gostaria que seus relatórios fossem entregues.

    Você pode selecionar qualquer bucket do Cloud Storage do qual você seja proprietário, incluindo buckets de projetos diferentes. Esse bucket deve existir antes que você possa começar a exportar relatórios e você deve ter acesso de proprietário ao bucket. O Cloud Storage cobra pelo uso, portanto, você deve revisar os preços do Cloud Storage para obter informações sobre como você pode incorrer em cobranças pelo serviço.

    Qualquer usuário que tenha acesso de leitura ao bucket do Cloud Storage pode visualizar os relatórios de uso no bucket. Qualquer usuário que tenha acesso de gravação ao bucket pode criar, visualizar e modificar arquivos existentes no bucket. Para obter mais informações, consulte a seção Controle de acesso .

  2. O prefixo do relatório para seus arquivos.

    Você pode especificar o prefixo do relatório a ser usado em seus relatórios de uso. Seus relatórios de uso terão nomes de arquivos que contêm esse prefixo. Por exemplo, especificar "my-cool-project-report" como prefixo do relatório resulta em um nome de arquivo semelhante ao formato my-cool-project-report_1234567890_20131230.csv . Se você não especificar um prefixo de relatório, o prefixo padrão usage_gce será usado.

Depois de decidir sobre essas duas propriedades, você poderá ativar o recurso de exportação de uso das seguintes maneiras:

Console

  1. Acesse a página Configurações do Compute Engine .

    Acesse Configurações do Compute Engine .

  2. Marque a caixa Habilitar exportação de uso .

  3. Preencha o campo solicitando um nome de bucket . Opcionalmente, forneça um prefixo de relatório . Se você deixar o prefixo do relatório vazio, o prefixo padrão usage_gce será usado. Todos os relatórios de uso entregues ao bucket são nomeados com esse prefixo.

  4. Clique em Salvar .

gcloud

Use o comando gcloud compute project-info set-usage-bucket para ativar este recurso:

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

Substitua o seguinte:

  • BUCKET_NAME é o nome de um bucket existente para receber os relatórios de uso. O nome deve estar no formato gs:// bucket-name ou https://storage.googleapis.com/ bucket-name . O usuário que executa este comando deve ser proprietário do bucket.
  • PREFIX é o prefixo opcional para os nomes dos relatórios de uso. Se não for especificado, o prefixo padrão será usage_gce .

Pitão

Para habilitar exportações de uso, use o método set_usage_export_bucket() na coleção Projects . O exemplo a seguir usa as bibliotecas de cliente do 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 obter mais informações, consulte a documentação de referência REST para projects.setUsageExportBucket

Fazendo download de relatórios de exportação de uso

Depois de começar a receber relatórios de uso no bucket, faça download dos relatórios como faria com outros objetos do Cloud Storage. Para obter mais informações, consulte Baixar objetos .

Métricas suportadas

Os relatórios de uso diário fornecem informações de uso sobre os seguintes recursos:

  • Máquinas virtuais
  • Discos permanentes
  • Imagens
  • Instantâneos
  • Endereços IP estáticos
  • Balanceadores de carga
  • Reservas

Cada recurso é descrito usando as seguintes métricas:

Nome da métrica Propriedades métricas
Data do relatório
  • Tipo de métrica: string
  • Descrição: A data do uso.
  • Exemplo: 15/08/2019
ID de medição
  • Tipo de métrica: string
  • Descrição: O ID do tipo de recurso que está sendo medido.
    Por exemplo, VmimageN2StandardCore_Uswest2 para representar um tipo de máquina n2-standard em us-west2 .
  • Exemplo: com.google.cloud/services/compute‑engine/VmimageN2StandardCore_Uswest2
  • Exemplo: com.google.cloud/services/compute‑engine/VmimageN2StandardRam_Uswest2
Quantidade
  • Tipo de métrica: inteiro
  • Descrição: A quantidade de uso para a data especificada.
  • Exemplo: 86400
Unidade
  • Tipo de métrica: string
  • Descrição: O tipo de unidade, como contagem, segundos ou horas.
  • Exemplo: segundos
URI do recurso
  • Tipo de métrica: string
  • Descrição: O URI do recurso especificado.
  • Exemplo: https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instances/my-n2-vm
ID do recurso
  • Tipo de métrica: inteiro
  • Descrição: um ID numérico que identifica o recurso específico.
  • Exemplo: 16557630484925648021
Localização
  • Tipo de métrica: string
  • Descrição: A localização do recurso. Um nome de zona ou região ou GLOBAL para recursos globais.
  • Exemplo: us-central1-a

Um exemplo de entrada no relatório seria semelhante ao seguinte:

Data do relatório ID de medição Quantidade Unidade URI do recurso ID do recurso Localização
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

Controle de acesso

Quando você ativa o recurso de exportação de uso para um bucket do Cloud Storage, o Compute Engine se adiciona automaticamente ao bucket com acesso de gravação para fornecer relatórios de uso. Enquanto o Compute Engine tiver acesso ao bucket e o recurso de exportação de uso estiver ativado, o Compute Engine continuará exportando relatórios de uso para o bucket especificado do Cloud Storage.

Você poderá identificar que o Compute Engine tem acesso a um bucket se vir a seguinte identidade adicionada à política do IAM do bucket:

cloud-cluster-analytics-export@google.com

Qualquer usuário proprietário do projeto tem acesso total ao intervalo do Cloud Storage. Outros usuários, como escritores e leitores, têm diferentes graus de acesso ao bucket. Para saber mais sobre o IAM para um bucket, leia IAM para Cloud Storage .

Se você desativar o recurso de exportação de uso, o Compute Engine removerá automaticamente o acesso de gravação do Compute Engine para o bucket. Se você modificar as permissões na conta cloud-cluster-analytics-export@google.com e desativar o recurso de exportação de uso, o Compute Engine desativará o recurso de exportação de uso, mas não removerá a conta da lista de acesso do projeto. Você pode remover a conta manualmente.

Verificando se os relatórios de uso estão ativados

Você pode verificar as configurações de exportação de uso de um projeto obtendo informações sobre o projeto:

gcloud compute project-info describe

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

Desativando relatórios de uso

Quando você desativa os relatórios de uso, o Compute Engine remove automaticamente o acesso de gravação do Compute Engine ao bucket do Cloud Storage e interrompe o envio de novos relatórios.

Console

  1. Acesse a página Configurações do Compute Engine .

    Acesse Configurações do Compute Engine .

  2. Desmarque a caixa Habilitar exportação de uso para desabilitar a exportação de uso.

gcloud

Desative o recurso de exportação de uso usando o comando gcloud compute project-info set-usage-bucket com a sinalização --no-bucket :

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

Pitão

Para desativar as exportações de uso, use o método set_usage_export_bucket() na coleção Projects com usage_export_location_resource definido como None . O exemplo a seguir usa as bibliotecas de cliente do 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")

O que vem a seguir