Afficher les rapports d'utilisation


Compute Engine permet d'exporter des rapports détaillés sur votre utilisation de Compute Engine vers un bucket Cloud Storage à l'aide de la fonctionnalité d'exportation des données d'utilisation. Les rapports d'utilisation fournissent des informations sur la durée de vie de vos ressources. Par exemple, vous pouvez voir combien d'instances de VM de votre projet exécutent un type de machine n2-standard-4 et depuis combien de temps chaque instance est exécutée. Vous pouvez également examiner l'espace de stockage d'un disque persistant et obtenir des informations sur les autres fonctionnalités de Compute Engine.

Les rapports d'utilisation ne fournissent pas d'informations sur la facturation ou l'activité, telles que des informations sur les requêtes API. Pour obtenir des informations sur la facturation, consultez la section sur la fonctionnalité d'exportation de la facturation. Pour en savoir plus sur les journaux d'activité, consultez la page sur les journaux d'activité.

Avant de commencer

  • Si ce n'est pas déjà fait, configurez l'authentification. L'authentification est le processus permettant de valider votre identité pour accéder aux services et aux API Google Cloud. Pour exécuter du code ou des exemples depuis un environnement de développement local, vous pouvez vous authentifier auprès de Compute Engine comme suit :

    Sélectionnez l'onglet correspondant à la façon dont vous prévoyez d'utiliser les exemples de cette page :

    Console

    Lorsque vous utilisez la console Google Cloud pour accéder aux services et aux API Google Cloud, vous n'avez pas besoin de configurer l'authentification.

    gcloud

    1. Installez Google Cloud CLI, puis initialisez-la en exécutant la commande suivante :

      gcloud init
    2. Définissez une région et une zone par défaut.

    Python

    Pour utiliser les exemples Python de cette page dans un environnement de développement local, installez et initialisez gcloud CLI, puis configurez le service Identifiants par défaut de l'application à l'aide de vos identifiants utilisateur.

    1. Installez Google Cloud CLI.
    2. Pour initialiser gcloudCLI, exécutez la commande suivante :

      gcloud init
    3. Créez des identifiants d'authentification locaux pour votre compte Google :

      gcloud auth application-default login

    Pour en savoir plus, consultez les sections sur Configurer l'authentification pour un environnement de développement local.

Présentation

Lorsque vous activez les rapports d'utilisation, Compute Engine fournit deux types de rapports au bucket Google Cloud Storage que vous spécifiez :

  1. Rapports d'utilisation quotidiens

    Ces rapports, qui sont fournis quotidiennement, incluent les données d'utilisation du jour précédent. Chaque rapport est un fichier distinct contenant des données de la dernière période. Les données figurant dans ces rapports sont immuables, ce qui signifie que Compute Engine ne met pas à jour ni ne réécrit le fichier journal en cas d'inexactitudes. À la place, les données sont corrigées dans le rapport suivant fourni au bucket.

    Le nom des rapports d'utilisation quotidiens a le format suivant :

    <bucket>/<report_prefix>_<numeric_project_id>_<YYYYMMDD>.csv
    
  2. Rapport de cumul mensuel

    Un seul rapport de cumul mensuel est fourni chaque jour. Il contient des données sur l'utilisation mensuelle pour ce projet jusqu'à ce jour (celui-ci n'étant pas compris). Le rapport d'utilisation mensuel est remplacé chaque jour par de nouvelles données reflétant l'utilisation mensuelle des ressources jusqu'à cette date. Il n'y a qu'un fichier de données d'utilisation mensuelle par projet et par mois.

    Le nom des rapports de cumul mensuels a le format suivant :

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

    Les fichiers de rapport quotidiens et mensuels se ressemblent beaucoup, à l'exception du format de date. En effet, les rapports de cumul mensuels sont datés à l'aide de l'année et du mois (YYYYMM), tandis que les rapports d'utilisation quotidiens indiquent également le jour (YYYYMMDD).

Tous les rapports d'utilisation sont fournis au format CSV (valeurs séparées par une virgule), et le nom des fichiers de rapport d'utilisation est précédé de <report_prefix>. Le préfixe <report_prefix> est une valeur personnalisable choisie par l'utilisateur. Si vous ne spécifiez pas de préfixe de rapport, le préfixe usage_gce est utilisé par défaut. Toutes les heures sont indiquées selon le fuseau horaire PST (heure normale du Pacifique).

Prérequis

Avant de pouvoir utiliser la fonctionnalité d'exportation de l'utilisation de Compute Engine, vous devez :

  • Vous devez déjà avoir créé un bucket pour stocker les journaux d'utilisation.

Configurer l'exportation des données d'utilisation

Lorsque vous activez pour la première fois la fonctionnalité d'exportation des données d'utilisation, le premier rapport est envoyé le jour suivant. Il détaille l'utilisation pour le jour précédent. Vous recevez ensuite des rapports toutes les 24 heures.

Pour configurer la fonctionnalité d'exportation de l'utilisation, activez-la dans l'outil gcloud compute. Lorsque vous activez cette fonctionnalité, vous devez définir deux propriétés :

  1. Le bucket Cloud Storage auquel vous souhaitez fournir les rapports.

    Vous pouvez sélectionner n'importe quel bucket Cloud Storage dont vous êtes propriétaire, y compris ceux issus de projets différents. Ce bucket doit exister avant que vous ne commenciez à exporter des rapports, et vous devez y avoir accès en tant que propriétaire. L'utilisation de Cloud Storage est facturée. Vous devez donc consulter les tarifs de Cloud Storage pour connaître le montant des frais que ce service peut entraîner.

    Tout utilisateur disposant d'un accès en lecture au bucket Cloud Storage peut afficher les rapports d'utilisation stockés dedans. Si un utilisateur dispose d'un accès en écriture au bucket, il peut créer des fichiers et afficher ou modifier les fichiers existants. Pour plus d'informations, consultez la section Contrôle des accès.

  2. Le préfixe de rapport pour vos fichiers

    Vous pouvez spécifier le préfixe de rapport à employer pour vos rapports d'utilisation. Ce préfixe sera inséré dans leur nom. Par exemple, si vous spécifiez "my-cool-project-report" comme préfixe de rapport, le format du nom de fichier est de type "my-cool-project-report_1234567890_20131230.csv". Si vous ne spécifiez pas de préfixe de rapport, le préfixe par défaut "usage_gce" est utilisé.

Une fois que vous avez choisi ces deux propriétés, vous pouvez activer la fonctionnalité d'exportation des données d'utilisation comme suit :

Console

  1. Accédez à la page Paramètres de Compute Engine.

    Accéder à la page "Paramètres" de Compute Engine.

  2. Cochez la case Activer l'exportation de l'utilisation.

  3. Remplissez le champ vous demandant de saisir un nom de bucket. Si vous le souhaitez, vous pouvez fournir un préfixe de rapport. Si vous ne renseignez pas le champ de préfixe de rapport, le préfixe par défaut usage_gce est utilisé. Tous les rapports d'utilisation envoyés au bucket sont nommés avec ce préfixe.

  4. Cliquez sur Enregistrer.

gcloud

Dans gcloud compute, exécutez la commande gcloud compute project-info set-usage-bucket pour activer cette fonctionnalité :

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

Où :

  • [BUCKET_NAME] correspond au nom d'un bucket existant qui recevra les rapports d'utilisation. Il doit être au format gs://<bucket-name> ou https://storage.googleapis.com/<bucket-name>. L'utilisateur qui exécute cette commande doit être propriétaire du bucket.
  • [PREFIX] correspond au préfixe facultatif pour les noms des rapports d'utilisation. Si aucune valeur n'est spécifiée, le préfixe par défaut est usage_gce.

Python

Pour activer les exportations d'utilisation, utilisez la méthode set_usage_export_bucket() de la collection Projects. L'exemple suivant utilise les bibliothèques clientes Cloud pour 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")

Pour en savoir plus, consultez la documentation de référence sur projects.setUsageExportBucket

Télécharger des rapports d'utilisation exportés

Une fois que vous avez commencé à recevoir des rapports d'utilisation dans votre bucket, téléchargez-les comme vous le feriez pour d'autres objets à partir de Cloud Storage. Pour en savoir plus, consultez la page Télécharger des objets.

Métriques acceptées

Les rapports d'utilisation quotidiens fournissent des informations sur l'utilisation des ressources suivantes :

  • Machines virtuelles
  • Disques persistants
  • Images
  • Instantanés
  • Adresses IP statiques
  • Équilibreurs de charge
  • Réservations

Chaque ressource est décrite à l'aide des métriques suivantes :

Nom de la métrique Propriétés de la métrique
Date du rapport
  • Type de métrique : chaîne
  • Description : date d'utilisation.
  • Exemple : 2019-08-15
MeasurementId
  • Type de métrique : chaîne
  • Description : ID du type de ressource en cours de mesure.
    Par exemple, VmimageN2StandardCore_Uswest2 pour représenter un n2-standard dans le type de machine us-west2.
  • Exemple : com.google.cloud/services/compute‑engine/VmimageN2StandardCore_Uswest2
  • Exemple : com.google.cloud/services/compute‑engine/VmimageN2StandardRam_Uswest2
Quantité
  • Type de métrique : entier
  • Description : quantité utilisée pour la date spécifiée.
  • Exemple : 86 400
Unité
  • Type de métrique : chaîne
  • Description : type d'unité, par exemple des secondes, des heures, la comptabilisation d'une valeur, etc.
  • Exemple : secondes
URI de ressource
  • Type de métrique : chaîne
  • Description : URI de la ressource spécifiée.
  • Exemple : https://compute.googleapis.com/compute/v1/projects/<project‑id>/zones/<zone>/instances/<instance>
ResourceId
  • Type de métrique : entier
  • Description : ID numérique identifiant la ressource spécifique.
  • Exemple : 16557630484925648021
Emplacement
  • Type de métrique : chaîne
  • Description : zone de la ressource. Nom de zone ou de région, ou GLOBAL pour les ressources globales.
  • Exemple : us-central1-a

Un exemple d'entrée dans le rapport pourrait ressembler à ceci :

Date du rapport MeasurementId Quantité Unité URI de ressource ID de ressource Emplacement
02/13/2019 com.google.cloud/services/compute-engine/VmimageE2Standard_2 86400 secondes https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances/my-instance 16557630484 us-central1-a

Contrôle des accès

Lorsque vous activez la fonctionnalité d'exportation des données d'utilisation pour un bucket Cloud Storage, Compute Engine s'ajoute automatiquement au bucket avec un accès en écriture afin de fournir les rapports d'utilisation. Tant que Compute Engine a accès au bucket et que la fonctionnalité est activée, Compute Engine continue d'exporter les rapports d'utilisation vers le bucket Cloud Storage spécifié.

Si vous voyez que l'identité suivante a été ajoutée à la stratégie IAM du bucket, cela signifie que Compute Engine a accès au bucket en question :

cloud-cluster-analytics-export@google.com

Tout utilisateur propriétaire du projet dispose d'un accès total au bucket Cloud Storage. Les autres utilisateurs, tels que les rédacteurs et les lecteurs, ont différents niveaux d'accès au bucket. Pour en savoir plus sur les stratégies IAM pour un bucket, consultez la page IAM pour Cloud Storage.

Si vous désactivez la fonctionnalité d'exportation des données d'utilisation, Compute Engine supprime automatiquement son accès en écriture au bucket. Si vous modifiez les autorisations sur le compte cloud-cluster-analytics-export@google.com, puis désactivez la fonctionnalité d'exportation des données d'utilisation, Compute Engine désactive cette même fonctionnalité, mais ne supprime pas le compte de la liste d'accès au projet. Vous pouvez choisir de supprimer le compte manuellement si vous le souhaitez.

Vérifier si les rapports d'utilisation sont activés

Pour vérifier les paramètres d'exportation des données d'utilisation d'un projet, obtenez des informations sur ce dernier :

gcloud compute project-info describe

Repérez le champ 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      |                                                    |
+-------------------------+----------------------------------------------------+

Désactiver les rapports d'utilisation

Lorsque vous désactivez les rapports d'utilisation, Compute Engine supprime automatiquement son accès en écriture au bucket Cloud Storage et cesse d'envoyer de nouveaux rapports.

Console

  1. Accédez à la page Paramètres de Compute Engine.

    Accéder à la page "Paramètres" de Compute Engine.

  2. Décochez la case Activer l'exportation de l'utilisation pour désactiver l'exportation de l'utilisation.

gcloud

Dans gcloud compute, désactivez la fonctionnalité d'exportation des données d'utilisation en exécutant la commande gcloud compute project-info set-usage-bucket avec l'option --no-bucket :

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

Python

Pour désactiver les exportations d'utilisation, utilisez la méthode set_usage_export_bucket() de la collection Projects avec la valeur de usage_export_location_resource définie sur None. L'exemple suivant utilise les bibliothèques clientes Cloud pour 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")

Étapes suivantes