Ver relatórios de utilização


O Compute Engine permite-lhe exportar relatórios detalhados da sua utilização do Compute Engine para um contentor do Cloud Storage através da funcionalidade de exportação de utilização. Os relatórios de utilização fornecem informações sobre o ciclo de vida dos seus recursos. Por exemplo, pode ver quantas instâncias de VM no seu projeto estão a executar um tipo de máquina n2-standard-4 e durante quanto tempo cada instância está a ser executada. Também pode rever o espaço de armazenamento de um disco persistente e informações sobre outras funcionalidades do Compute Engine.

Os relatórios de utilização não fornecem informações de faturação nem de atividade, como informações sobre pedidos de API. Para informações de faturação, consulte a funcionalidade Exporte dados de faturação do Google Cloud para o BigQuery. Para um registo das atividades e acessos administrativos nos seus Google Cloud recursos, consulte os registos de auditoria.

Antes de começar

  • Se ainda não o tiver feito, configure a autenticação. A autenticação valida a sua identidade para aceder a Google Cloud serviços e APIs. Para executar código ou exemplos a partir de um ambiente de desenvolvimento local, pode autenticar-se 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. Instale a CLI Google Cloud. Após a instalação, inicialize a CLI gcloud executando o seguinte comando:

      gcloud init

      Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.

    2. Set a default region and zone.

    Python

    Para usar os Python exemplos nesta página num ambiente de desenvolvimento local, instale e inicialize a CLI gcloud e, em seguida, configure as Credenciais predefinidas da aplicação com as suas credenciais de utilizador.

      Instale a CLI Google Cloud.

      Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade 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 mais informações, consulte Set up authentication for a local development environment.

Vista geral

Quando ativa os relatórios de utilização, o Compute Engine envia dois tipos de relatórios para o contentor do Cloud Storage que especificar:

  1. Relatórios de utilização diários

    Estes relatórios são enviados diariamente e incluem dados de utilização do dia anterior. Cada relatório é um ficheiro separado que contém dados do último período. Os dados nestes relatórios são imutáveis, o que significa que o Compute Engine não atualiza nem reescreve o ficheiro de registo se existirem imprecisões. Em alternativa, os dados são corrigidos no novo relatório seguinte que é enviado para o contentor.

    Os relatórios de utilização diária têm o seguinte formato de nome:

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

  2. Relatório de agregação mensal

    É enviado diariamente um único relatório de agregação mensal, que contém dados de utilização mensais desse projeto até, mas não incluindo, esse 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 ficheiro de dados de utilização mensal por projeto, por mês.

    Os relatórios de agregação mensais têm o seguinte formato de nome:

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

    Os ficheiros de relatórios diários e mensais são muito semelhantes, exceto na diferença no formato de data, em que os relatórios de agregação mensais têm a data no formato ano e mês (YYYYMM) e os relatórios de utilização diária têm a data no formato ano, mês e dia (YYYYMMDD).

Todos os relatórios de utilização são fornecidos no formato de valores separados por vírgulas (CSV) e os ficheiros de relatórios de utilização têm o prefixo <report_prefix>. O <report_prefix> é um valor personalizável escolhido pelo utilizador. Se não especificar um prefixo do relatório, o prefixo usage_gce é usado por predefinição. Todas as horas são indicadas na Hora do Pacífico (PST).

Pré-requisitos

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

Configurar exportação de utilização

Quando ativa pela primeira vez a funcionalidade de exportação de utilização, o primeiro relatório é enviado no dia seguinte, com detalhes sobre a utilização do dia anterior. Depois disso, recebe relatórios a intervalos de 24 horas.

Quando ativa esta funcionalidade, tem de definir duas propriedades:

  1. O contentor do Cloud Storage onde quer que os seus relatórios sejam entregues.

    Pode selecionar qualquer contentor do Cloud Storage do qual seja proprietário, incluindo contentores de projetos diferentes. Este contentor tem de existir antes de poder começar a exportar relatórios e tem de ter acesso de proprietário ao contentor. O Cloud Storage cobra pela utilização, pelo que deve rever os preços do Cloud Storage para obter informações sobre como pode incorrer em cobranças pelo serviço.

    Qualquer utilizador com acesso de leitura ao contentor do Cloud Storage pode ver os relatórios de utilização no contentor. Qualquer utilizador com acesso de escrita ao contentor pode criar, ver e modificar ficheiros existentes no contentor. Para mais informações, consulte a secção Controlo de acesso.

  2. O prefixo do relatório para os seus ficheiros.

    Pode especificar o prefixo do relatório a usar nos seus relatórios de utilização. Os seus relatórios de utilização têm, então, nomes de ficheiros que contêm este prefixo. Por exemplo, se especificar "my-cool-project-report" como o prefixo do relatório, o nome do ficheiro vai ter um formato semelhante a my-cool-project-report_1234567890_20131230.csv. Se não especificar um prefixo do relatório, é usado o prefixo predefinido usage_gce.

Depois de decidir sobre estas duas propriedades, pode ativar a funcionalidade de exportação de utilização das seguintes formas:

Consola

  1. Aceda à página Definições do Compute Engine.

    Aceda às definições do Compute Engine.

  2. Selecione a caixa Ativar exportação de utilização.

  3. Preencha o campo que pede um Nome do contentor. Opcionalmente, faculte um prefixo do relatório. Se deixar o prefixo do relatório vazio, é usado o prefixo predefinido usage_gce. Todos os relatórios de utilização enviados para o contentor são denominados com este prefixo.

  4. Clique em Guardar.

gcloud

Use o comando gcloud compute project-info set-usage-bucket para ativar esta funcionalidade:

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

Substitua o seguinte:

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

Python

Para ativar as exportações de utilização, use o método set_usage_export_bucket() na coleção Projects. O exemplo seguinte usa as bibliotecas cliente da Google 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 REST para projects.setUsageExportBucket

Transferir relatórios de exportação de utilização

Depois de começar a receber relatórios de utilização no seu contentor, transfira os relatórios como transferiria outros objetos do Cloud Storage. Para mais informações, consulte o artigo Transfira objetos.

Métricas compatíveis

Os relatórios de utilização diária fornecem informações de utilização sobre os seguintes recursos:

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

Cada recurso é descrito através das seguintes métricas:

Nome da métrica Propriedades das métricas
Data de comunicação do resultado
  • Tipo de métrica: string
  • Descrição: a data de utilização.
  • Exemplo: 2019-08-15
MeasurementId
  • Tipo de métrica: string
  • Descrição: o ID do tipo de recurso que está a ser medido.
    Por exemplo, VmimageN2StandardCore_Uswest2 para representar um n2-standard tipo de máquina 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: número inteiro
  • Descrição: a quantidade de utilização 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
ResourceId
  • Tipo de métrica: número 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

Uma entrada de exemplo no relatório teria o seguinte aspeto:

Data de comunicação do resultado MeasurementId 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

Controlo de acesso

Quando ativa a funcionalidade de exportação de utilização para um contentor do Cloud Storage, o Compute Engine adiciona-se automaticamente ao contentor com acesso de escrita para fornecer relatórios de utilização. Enquanto o Compute Engine tiver acesso ao contentor e a funcionalidade de exportação de utilização estiver ativada, o Compute Engine continua a exportar relatórios de utilização para o contentor do Cloud Storage especificado.

Pode identificar que o Compute Engine tem acesso a um contentor se vir a seguinte identidade adicionada à política de IAM do contentor:

cloud-cluster-analytics-export@google.com

Qualquer utilizador que seja proprietário do projeto tem acesso total ao contentor do Cloud Storage. Outros utilizadores, como autores e leitores, têm diferentes graus de acesso ao contentor. Para saber mais sobre o IAM para um contentor, leia o artigo IAM para o Cloud Storage.

Se desativar a funcionalidade de exportação de utilização, o Compute Engine remove automaticamente o acesso de escrita do Compute Engine ao contentor. Se modificar as autorizações na conta e, em seguida, desativar a funcionalidade de exportação de utilização, o Compute Engine desativa a funcionalidade de exportação de utilização, mas não remove a conta da lista de acesso ao projeto.cloud-cluster-analytics-export@google.com Pode remover a conta manualmente.

A verificar se os relatórios de utilização estão ativados

Pode verificar as definições de exportação de utilização 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      |                                                    |
+-------------------------+----------------------------------------------------+

Desativar relatórios de utilização

Quando desativa os relatórios de utilização, o Compute Engine remove automaticamente o acesso de escrita do Compute Engine ao seu contentor do Cloud Storage e deixa de enviar novos relatórios.

Consola

  1. Aceda à página Definições do Compute Engine.

    Aceda às definições do Compute Engine.

  2. Desmarque a caixa Ativar exportação de utilização para desativar a exportação de utilização.

gcloud

Desative a funcionalidade de exportação de utilização através do comando gcloud compute project-info set-usage-bucket com a flag --no-bucket:

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

Python

Para desativar as exportações de utilização, use o método set_usage_export_bucket() na coleção Projects com usage_export_location_resource definido como None. O exemplo seguinte usa as bibliotecas cliente da Google 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 se segue?