Como ver relatórios de uso


Com o Compute Engine, é possível exportar relatórios detalhados do uso dessa plataforma para um bucket do Cloud Storage utilizando o recurso correspondente. Os relatórios de uso fornecem informações sobre a duração dos seus recursos. Por exemplo, é possível ver quantas instâncias de VM no projeto estão executando um tipo de máquina n2-standard-4 e há quanto tempo cada instância está em execução. Também é possível revisar o espaço de armazenamento de um disco permanente e informações sobre outros recursos do Compute Engine.

Relatórios de uso não fornecem informações de faturamento nem de atividade, como informações sobre solicitações de API. Para ver informações de faturamento, consulte o recurso Exportação de faturamento. Para registros de atividades, consulte Registros de atividades.

Antes de começar

  • Configure a autenticação, caso ainda não tenha feito isso. A autenticação é o processo de verificação da sua identidade para acesso a serviços e APIs do Google Cloud. Para executar códigos ou amostras de um ambiente de desenvolvimento local, autentique-se no Compute Engine da seguinte maneira.

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

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

Informações gerais

Ao ativar os relatórios de uso, o Compute Engine envia dois tipos de relatórios para o bucket do Google Cloud Storage que você especificar:

  1. Relatórios de uso diário

    Esses relatórios são enviados diariamente e incluem dados de uso do dia anterior. Cada relatório é um arquivo separado que contém os dados do último período. Os dados nesses relatórios são imutáveis, o que significa que o Compute Engine não atualizará nem regravará o arquivo de registro em caso de imprecisões. Em vez disso, os dados serão corrigidos no próximo relatório novo que for enviado ao bucket.

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

    <bucket>/<report_prefix>_<numeric_project_id>_<YYYYMMDD>.csv
    
  2. Relatório cumulativo mensal

    Um único relatório cumulativo mensal é enviado diariamente, contendo dados mensais de uso para o projeto até o dia, sem incluí-lo. O relatório de uso mensal é substituído a cada dia com novos dados que refletem o uso mensal de recursos até aquela data. Há apenas um arquivo de dados de uso mensal por projeto e por mês.

    Relatórios cumulativos mensais têm o formato de nome a seguir:

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

    Os arquivos de relatórios diário e mensal são muito parecidos, exceto pela diferença no formato da data. 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 o dia (YYYYMMDD).

Todos os relatórios de uso são enviados no formato de valores separados por vírgulas (CSV, na sigla em inglês, link em inglês), e os arquivos de relatório de uso recebem o prefixo <report_prefix>. <report_prefix> é um valor personalizá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 indicados no horário do Pacífico (PST, na sigla em inglês).

Pré-requisitos

Antes de começar a utilizar a exportação de uso do Compute Engine, faça o seguinte:

Como configurar a exportação de uso

Quando você ativar o recurso de exportação de uso, o primeiro relatório será enviado no dia seguinte detalhando o uso do dia anterior. Depois disso, você receberá relatórios em intervalos de 24 horas.

Para configurar o recurso de exportação de uso, ative-o na ferramenta gcloud compute Ao ativar esse recurso, você precisa definir duas propriedades:

  1. O bucket do Google Cloud Storage para onde quer que os relatórios sejam enviados.

    É possível selecionar qualquer bucket do Cloud Storage de que seja proprietário, incluindo buckets de projetos diferentes. Esse bucket deve existir antes que você possa começar a exportar relatórios. Além disso, você deve ter acesso de proprietário no bucket. O Cloud Storage cobra pelo uso, portanto, revise os preços do Cloud Storage para informações sobre como pode ser que você receba cobranças pelo serviço.

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

  2. O prefixo de relatório dos arquivos.

    Você pode especificar o prefixo de relatório para os seus relatórios de uso. Os relatórios de uso terão nomes de arquivo contendo esse prefixo. Por exemplo, especificar "my-cool-project-report" como o prefixo de relatório resulta em um nome de arquivo semelhante a my-cool-project-report_1234567890_20131230.csv. Se você não especificar um prefixo de relatório, será usado o prefixo padrão usage_gce.

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

Console

  1. Acesse a página Configurações do Compute Engine (em inglês)

    Acesse Configurações do Compute Engine.

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

  3. Preencha o campo que solicita um Nome do bucket. Se quiser, forneça um Prefixo do relatório. Se você não informar o prefixo de relatório, será usado o prefixo padrão usage_gce. Todos os relatórios de uso entregues ao bucket são nomeados com esse prefixo.

  4. Clique em Save.

gcloud

Em gcloud compute, 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]]

Em que:

  • [BUCKET_NAME] é o nome de um bucket atual para receber os relatórios de uso. Precisa estar no formato gs://<bucket-name> ou https://storage.googleapis.com/<bucket-name>. O usuário que executa esse comando precisa ser um 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.

Python

Para ativar as 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 mais informações, consulte a documentação de referência da API para projects.setUsageExportBucket.

Como fazer o download de relatórios de exportação de uso

Após começar a receber relatórios de uso no bucket, faça download dos relatórios da maneira que faria com outros objetos do Cloud Storage. Para mais informações, consulte Como fazer o download de objetos.

Métricas compatíveis

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 da métrica
Report Date
  • Tipo de métrica: string
  • Descrição: a data do uso.
  • Exemplo: 2019-08-15
MeasurementId
  • Tipo da métrica: string
  • Descrição: o ID do tipo de recurso que está sendo medido.
    Por exemplo, VmimageN2StandardCore_Uswest2 para representar um n2-standard no tipo de máquina us-west2.
  • Exemplo: com.google.cloud/services/compute‑engine/VmimageN2StandardCore_Uswest2
  • Exemplo: com.google.cloud/services/compute‑engine/VmimageN2StandardRam_Uswest2
Quantity
  • Tipo da métrica: inteiro
  • Descrição: a quantidade de uso na data especificada.
  • Exemplo: 86400
Unit
  • Tipo da métrica: string
  • Descrição: o tipo de unidade, como contagem, segundos, horas e assim por diante.
  • Exemplo: segundos
Resource URI
  • Tipo de métrica: string
  • Descrição: o URI do recurso especificado
  • Exemplo: https://compute.googleapis.com/compute/v1/projects/<project‑id>/zones/<zone>/instances/<instance>
ResourceId
  • Tipo da métrica: inteiro
  • Descrição: um ID numérico que identifica o recurso específico.
  • Exemplo: 16557630484925648021
Location
  • Tipo de métrica: string
  • Descrição: a localização do recurso. Pode ser o nome da zona ou da região, ou GLOBAL para recursos globais.
  • Exemplo: us-central1-a

Este é um exemplo de entrada no relatório:

Report Date MeasurementId Quantity Unit Resource URI Resource ID Location
02/13/2019 com.google.cloud/services/compute-engine/VmimageE2Standard_2 86400 seconds https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances/my-instance 16557630484 us-central1-a

Controle de acesso

Ao ativar o recurso de exportação de uso para um bucket do Cloud Storage, o Compute Engine automaticamente adiciona a si mesmo ao bucket para enviar 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á a exportar relatórios de uso para o bucket especificado do Cloud Storage.

Para identificar que o Compute Engine tem acesso a um bucket, você verá a seguinte identidade adicionada à política de IAM do bucket:

cloud-cluster-analytics-export@google.com

Qualquer usuário que seja proprietário do projeto tem acesso completo ao bucket do Google Cloud Storage. Outros usuários, como gravadores e leitores, têm diferentes graus de acesso ao bucket. Para saber mais sobre o IAM para um bucket, leia IAM para o 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 no 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. Se você quiser, poderá remover a conta manualmente.

Como verificar se os relatórios de uso estão ativados

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

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

Como desativar relatórios de uso

Ao desativar os relatórios de uso, o Compute Engine automaticamente remove o acesso de gravação do Compute Engine ao seu bucket do Cloud Storage e interrompe o envio de novos relatórios.

Console

  1. Acesse a página Configurações do Compute Engine (em inglês)

    Acesse Configurações do Compute Engine.

  2. Desmarque a caixa Ativar exportação de uso para desativar essa função.

gcloud

Em gcloud compute, para desativar o recurso de exportação de uso, execute o comando gcloud compute project-info set-usage-bucket com a sinalização --no-bucket:

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

Python

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")

A seguir