Composants du modèle de métrique

Comprendre comment les types de ressources surveillées, les types de métriques, les étiquettes et les séries temporelles fonctionnent ensemble dans Cloud Monitoring vous aide à interroger des données, à créer des graphiques et des alertes, et à concevoir des métriques personnalisées. Vous appliquez ces concepts lorsque vous inspectez des métriques dans l'explorateur de métriques, configurez des règles d'alerte, récupérez des données de séries temporelles avec l'API Cloud Monitoring ou créez des métriques définies par l'utilisateur.

Si vous ne connaissez pas ces concepts, commencez par Métriques, séries temporelles et ressources. Pour en savoir plus sur les schémas d'objets de l'API Monitoring et les métriques personnalisées, consultez la page Structure des séries temporelles.

Un mot sur les libellés

Les types de ressources surveillées et les types de métriques prennent en charge les libellés, ce qui permet de classer les données lors de l'analyse. Exemple :

  • Un type de ressource surveillée pour une machine virtuelle peut inclure des étiquettes pour l'emplacement de la machine et l'ID du projet associé à la machine. Lorsque des informations sur la ressource surveillée sont enregistrées, elles incluent les valeurs des libellés. Une ressource surveillée peut également comporter des libellés de métadonnées fournis par le système ou l'utilisateur, en plus des libellés définis pour le type de ressource surveillée.
  • Un type de métrique qui compte les requêtes API peut avoir des libellés pour enregistrer le nom de la méthode appelée et l'état de la requête.

L'utilisation des libellés est décrite plus en détail dans la section Libellés.

Types de ressources surveillées

Une ressource surveillée est une ressource à partir de laquelle les données de métrique sont capturées. Cloud Monitoring accepte environ 270 types de ressources surveillées.

Les types de ressources surveillées incluent les nœuds et les tâches génériques, les composants architecturaux de Google Kubernetes Engine, les tables de Bigtable, diverses ressources AWS, etc.

Chaque type de ressource surveillée est officiellement décrit dans une structure de données appelée descripteur de ressources surveillées. Pour en savoir plus, consultez Descripteurs de ressources surveillées.

Chacun des types de ressources surveillées compatibles contient une entrée dans la liste des ressources surveillées. Les entrées de la liste sont créées à partir des descripteurs de ressources surveillées. Cette section décrit les informations capturées dans un descripteur de ressource surveillée et montre comment elles sont présentées dans la liste.

Exemple de type de ressources surveillées

L'image suivante montre l'entrée dans la liste pour un bucket Cloud Storage :

Entrée de la liste pour le bucket Cloud Storage.

Toutes les entrées de la liste incluent les informations suivantes :

  • Type : l'en-tête de l'entrée indique le type de ressource surveillée, gcs_bucket dans l'exemple.
  • Display name (Nom à afficher) : brève description de la ressource surveillée.
  • Description : description plus longue de la ressource surveillée.
  • Libellés : ensemble de dimensions permettant de classer les données. Pour plus d'informations, consultez la section Libellés.

Types de métriques

Un type de métrique décrit les mesures pouvant être collectées à partir d'une ressource surveillée. Un type de métrique inclut une description de ce qui est mesuré et comment les mesures sont interprétées. Cloud Monitoring accepte environ 6 500 types de métriques et vous permet d'en définir de nouveaux.

Les types de métriques incluent le nombre d'appels d'API, les statistiques d'utilisation du disque, la consommation de l'espace de stockage, etc.

Chaque type de métrique est officiellement décrit dans une structure de données appelée descripteur de la métrique. Pour en savoir plus, consultez Descripteurs de métriques.

Chacun des types de métriques intégrés possède une entrée dans les pages de la liste des métriques. Les entrées de ces tables sont créées à partir des descripteurs de métriques. Cette section décrit les informations capturées dans un type de métrique et montre comment elles sont présentées dans la documentation de référence.

Exemple de type de métriques

L'image suivante montre une entrée pour un type de métrique Cloud Storage :

Extrait de la liste des métriques pour Cloud Storage.

Les types de métriques sont affichés dans une table, dont l'en-tête explique la disposition des informations. Cette section utilise une entrée comme exemple, mais toutes les tables utilisent le même format.

L'exemple d'entrée de table Cloud Storage fournit les informations suivantes sur un type de métrique :

  • Metric type (Type de métrique) : identifiant du type de métrique, storage.googleapis.com/api/request_count dans le cas présent.

    Le préfixe storage.googleapis.com fait office d'espace de noms pour Cloud Storage. Tous les types de métriques associés à un type de ressource surveillée spécifique utilisent le même espace de noms.

    Les espaces de noms sont omis dans les entrées des tables.

    Tous les types de métriques associés à Cloud Storage sont répertoriés dans la table des métriques Cloud Storage.

  • Étape de lancement : bloc de couleur qui indique l'étape de lancement du type de métrique avec une valeur telle que Alpha, Bêta ou DG.

  • Display name (Nom à afficher) : brève chaîne décrivant le type de métrique, "Request count" (Nombre de requêtes) dans le cas présent.

  • Kind, Type, Unit (Genre, Type, Unité) : cette ligne fournit des informations permettant d'interpréter les valeurs des données. L'exemple montre une métrique delta enregistrée sous forme d'entier de 64 bits sans unité (valeur 1).

    • Genre : cet exemple est une métrique delta, qui enregistre une modification sur une période donnée. Autrement dit, chaque point de données enregistre le nombre d'appels d'API depuis l'écriture du point de données précédent. Pour plus d'informations sur les genres, consultez la section Types de valeurs et genres de métriques.

    • Type : cet exemple enregistre ses valeurs sous forme d'entiers 64 bits. Pour en savoir plus sur les types, consultez Types de valeurs et genres de métriques.

    • Unit (Unité) : cette métrique n'a pas besoin d'une unité explicite, car elle représente un décompte. Le chiffre 1 est utilisé pour indiquer qu'aucune unité n'est nécessaire.

  • Ressources surveillées : ressources surveillées pour lesquelles ce type de métrique est disponible. Les valeurs indiquées ici sont les mêmes que celles décrites dans la section Types de ressources surveillées.

  • Description : informations plus détaillées ce qui est enregistré et selon quelle méthode. Indiquez-la en italique pour la distinguer des libellés.

  • Libellés : ensemble de dimensions permettant de classer les données. Pour plus d'informations, consultez la section Libellés.

Lorsque vous accédez aux données de surveillance via l'API Cloud Monitoring, vous incluez un projet Google Cloud dans l'appel d'API. Vous ne pouvez récupérer que les données visibles par ce projet Google Cloud . Par exemple, si vous demandez les données de votre projet pour le type de métrique storage.googleapis.com/api/request_count, vous ne verrez que le nombre d'API pour les buckets Cloud Storage de votre projet. Si votre projet n'utilise pas de buckets Cloud Storage, aucune donnée de métrique n'est renvoyée.

Types de métriques intégrées

Les types de métriques intégrés sont définis par des services Google Cloud , y compris Cloud Monitoring. Ces types de métriques décrivent des mesures standards pour large part de l'infrastructure commune et sont accessibles à tous.

La liste des métriques affiche l'ensemble des types de métriques intégrés. Les métriques répertoriées sur la page Liste des métriques externes constituent un sous-ensemble spécial de métriques intégrées définies par Cloud Monitoring en partenariat avec des projets Open Source ou des fournisseurs tiers. En règle générale, ces métriques ont le préfixe external.googleapis.com.

Métriques personnalisées

Lorsque vous créez votre application, vous pouvez avoir certaines propriétés que vous souhaitez mesurer, des éléments pour lesquels il n'existe pas de métriques intégrées à Cloud Monitoring. Avec Cloud Monitoring, vous pouvez définir vos propres types de métriques ou importer des types de métriques à partir de sources externes. Ces types de métriques sont appelés métriques personnalisées. Si une métrique comporte le préfixe custom.googleapis.com ou prometheus.googleapis.com, il s'agit d'une métrique personnalisée. Ces dernières métriques proviennent généralement de Google Cloud Managed Service pour Prometheus.

Par exemple, si vous souhaitez suivre le nombre de widgets vendus par vos magasins, vous devez utiliser une métrique personnalisée. Pour en savoir plus, consultez Présentation des métriques définies par l'utilisateur.

Étiquettes

Une étiquette est une paire clé/valeur qui peut être utilisée pour fournir des informations sur une valeur de données.

Libellés de métriques et de ressources surveillées

Les définitions des types de métriques et de ressources surveillées incluent des libellés. Les libellés sont des outils de classification des données collectées. Ils permettent de classer les données pour une analyse plus approfondie. Exemple :

  • Le type de métrique Cloud Storage storage.googleapis.com/api/request_count comporte deux libellés : response_code et method.
  • Le type de ressource surveillée Cloud Storage gcs_bucket comporte trois libellés : project_id, bucket_name et location. Les libellés identifient des instances spécifiques du type de ressource.

Par conséquent, toutes les données collectées pour les requêtes API d'un bucket Cloud Storage sont classées selon la méthode appelée, le code de réponse de l'appel, ainsi que le nom, l'emplacement et le projet du bucket concerné. L'ensemble de libellés varie en fonction du type de métrique ou de ressource surveillée. Les libellés disponibles sont présentés dans les pages Liste des métriques et Liste des ressources surveillées.

En suivant le code de réponse, le nom de la méthode et l'emplacement lors du comptage des appels d'API, vous pouvez ensuite récupérer le nombre d'appels à une méthode d'API particulière, le nombre d'appels ayant échoué à n'importe quelle méthode ou le nombre d'appels ayant échoué à une méthode spécifique dans un emplacement spécifique.

Le nombre de libellés et le nombre de valeurs que chacun peut accepter est appelé cardinalité. La cardinalité correspond au nombre de séries temporelles pouvant être collectées pour une paire de type de métrique et de type de ressource surveillée : il existe une série temporelle pour chaque combinaison de valeurs de leurs libellés. Pour en savoir plus, consultez Cardinalité : séries temporelles et étiquettes.

Libellés de métadonnées de ressources

En plus des libellés définis sur les types de métriques et de ressources surveillées, Monitoring collecte en interne des informations supplémentaires sur les ressources surveillées et stocke ces informations dans les libellés de métadonnées système. Ces libellés de métadonnées système sont disponibles pour les utilisateurs sous forme de valeurs en lecture seule. Certaines ressources permettent également aux utilisateurs de créer leurs propres libellés de métadonnées de ressources lorsqu'ils configurent des ressources telles que des instances de VM dans la console Google Cloud .

Les libellés de métadonnées système et utilisateur sont collectivement appelés libellés de métadonnées de ressource. Vous pouvez utiliser ces libellés, tels que les libellés définis sur la métrique et les types de ressources surveillées dans les filtres de séries temporelles.

Les étiquettes de métadonnées de ressource n'apparaissent dans le résultat de la requête que si vous les agrégez explicitement.

Pour en savoir plus sur le filtrage, consultez Filtres Monitoring.

Séries temporelles : données d'une ressource surveillée

Cette section décrit les données de surveillance et leur organisation en séries temporelles. C'est là que les composants conceptuels du modèle de métrique deviennent des artefacts concrets.

Cloud Monitoring stocke des mesures régulières au fil du temps pour les paires de types de métriques et de ressources surveillées. Les mesures sont collectées en séries temporelles, et chaque série temporelle contient les éléments suivants :

  • Le nom du type de métrique auquel appartient la série temporelle, et une combinaison de valeurs pour les libellés de la métrique.

  • Une série de paires (horodatage, valeur). La valeur correspond à la mesure, et l'horodatage correspond à l'heure à laquelle la mesure a été effectuée.

  • La ressource surveillée qui est la source des données de séries temporelles, et une combinaison de valeurs pour les libellés de la ressource.

Une série temporelle est créée pour chaque combinaison d'étiquettes de métriques et de ressources qui génère des données.

Exemple stylisé : le type de métrique storage.googleapis.com/api/request_count peut comporter de nombreuses séries temporelles pour les buckets Cloud Storage de votre projet. Le tableau suivant présente quelques séries temporelles possibles.

Dans le tableau, la valeur bucket: xyz représente la valeur de l'étiquette bucket_name dans le type de ressource surveillée, et response_code et method sont des étiquettes dans le type de métrique. Il existe une série temporelle pour chaque combinaison de valeurs dans les étiquettes de ressource et de métrique. Le tableau en présente quelques-unes :

Étiquette de ressource surveillée
Étiquettes de métriques Données de métriques
bucket: 1234 response_code: OK,
method: read
{
(3, Wed 2:00pm),
(2, Wed 2:05pm),
(8, Wed 2:10pm),
...}
bucket: 1234 response_code: OK,
method: write
{
(1, Wed 2:01pm),
(2, Wed 2:04pm),
(7, Wed 2:09pm),
...}
bucket: 1234 response_code: FAIL,
method: write
{
(1, Wed 2:01pm),
(0, Wed 2:04pm),
(0, Wed 2:09pm),
...}
bucket: 9876 response_code: OK,
method: read
{
(2, Wed 1:59pm),
(4, Wed 2:05pm),
(3, Wed 2:10pm),
...}

Cloud Monitoring n'enregistre pas les séries temporelles "vides". Dans l'exemple des buckets Cloud Storage, si vous n'utilisez pas un bucket particulier ou si vous n'appelez jamais une méthode d'API particulière, aucune donnée n'est collectée pour ce libellé et aucune série temporelle ne le mentionne. Cela signifie que, si votre projet ne contient aucune donnée pour une métrique spécifique, le type de métrique ne s'affiche jamais.

Les types de métriques n'indiquent pas les types de ressources surveillées trouvés dans les séries temporelles des métriques. Pour Cloud Storage, il n'existe qu'un seul type de ressource surveillée : gcs_bucket. Certains types de métriques sont associés à plusieurs ressources surveillées.

Exemple concret : si vous disposez d'un projet Google Cloud , vous pouvez essayer le widget APIs Explorer, situé sur la page de référence de la méthode timeSeries.list dans l'API Monitoring.

  1. Ouvrez la page de référence timeSeries.list.

  2. Dans le volet intitulé Essayer cette méthode, saisissez les informations suivantes :

    • name : projects/PROJECT_ID. Remplacez PROJECT_ID par l'ID de votre projet Google Cloud .
    • filter : metric.type="logging.googleapis.com/log_entry_count" resource.type="gce_instance"
    • interval.start_time : saisissez l'heure de début et assurez-vous qu'elle est antérieure de 20 minutes à l'heure de fin.
    • interval.end_time : saisissez l'heure de fin.

Si la requête aboutit, elle renvoie les données de séries temporelles qui correspondent à la requête. Cela ressemble à l'extrait suivant :

{
  "timeSeries": [
    {
      "metric": {
        "labels": {
          "severity": "INFO",
          "log": "compute.googleapis.com/activity_log"
        },
        "type": "logging.googleapis.com/log_entry_count"
      },
      "resource": {
        "type": "gce_instance",
        "labels": {
          "instance_id": "0",
          "zone": "us-central1",
          "project_id": "your-project-id"
        }
      },
      "metricKind": "DELTA",
      "valueType": "INT64",
      "points": [
        {
        "interval": {
            "startTime": "2024-03-29T13:53:00Z",
            "endTime": "2024-03-29T13:54:00Z"
          },
          "value": {
            "int64Value": "0"
          }
        },
        ...
      ]
    },
    ...
  ]
}

Pour en savoir plus sur l'utilisation du widget APIs Explorer, y compris sur le dépannage, consultez APIs Explorer.

Cardinalité : séries temporelles et libellés

Chaque série temporelle est associée à une paire spécifique de types de métriques et de ressources surveillées. Les types de métriques et de ressources surveillées fournissent chacun un certain nombre d'étiquettes. Dans Cloud Monitoring, le nombre de combinaisons uniques de valeurs pour l'ensemble d'étiquettes correspond à la cardinalité du type de métrique ou du type de ressource surveillée. Ces valeurs sont appelées cardinalité de métrique et cardinalité de ressource. Elles déterminent le nombre de séries temporelles possibles, la cardinalité totale, qui peuvent être générées.

Cardinalité des métriques, des ressources et totale

Supposons que vous disposiez d'un type de métrique qui spécifie deux étiquettes, color et zone. La cardinalité de la métrique dépend du nombre de valeurs possibles de ces étiquettes :

  • S'il n'y a que trois couleurs possibles, "rouge", "vert" et "bleu", l'étiquette color peut avoir jusqu'à trois valeurs distinctes.
  • S'il n'y a que deux zones possibles, "est" et "ouest", l'étiquette zone peut avoir jusqu'à deux valeurs distinctes.

La cardinalité de cette métrique est de 6 (3 × 2). S'il existe 1 000 valeurs possibles pour l'étiquette color et que chaque couleur peut apparaître dans chaque zone, la cardinalité de la métrique est de 2 000 (1 000 × 2). Le même calcul s'applique s'il s'agit d'étiquettes sur un type de ressource surveillée plutôt que sur un type de métrique.

Cette valeur de cardinalité est un maximum, basé sur le nombre de combinaisons de valeurs d'étiquettes possibles. La valeur réelle peut être nettement inférieure lorsque toutes les combinaisons de valeurs d'étiquettes ne se produisent pas réellement. Par exemple, si chaque couleur n'apparaît que dans une seule zone, et non dans les deux, le nombre maximal de séries temporelles que vous voyez dans le système en cours d'exécution est de 1 000. Toutefois, l'utilité de la cardinalité effective dépend des raisons pour lesquelles certaines combinaisons n'apparaissent pas et de la possibilité qu'elles apparaissent à l'avenir.

La cardinalité dépend des valeurs que les étiquettes peuvent avoir.

Lorsque des données de séries temporelles sont écrites, elles sont classées par types de métriques et de ressources surveillées. Pour toute paire de types de métriques et de ressources, la cardinalité totale est le produit de la cardinalité des métriques et de la cardinalité des ressources. Si vous disposez d'une métrique avec une cardinalité de 1 000 et d'une ressource avec une cardinalité de 100, et si chaque valeur d'étiquette apparaît, vous disposez de 100 000 séries temporelles (1 000 x 100).

Lorsque vous concevez vos propres métriques, assurez-vous que l'ensemble des valeurs possibles pour chaque étiquette est limité. Il est préférable d'utiliser un petit ensemble de valeurs distinctes (comme "rouge", "vert" et "bleu"). Par exemple, si vous utilisez des valeurs RVB 8 bits pour une étiquette color, vous pouvez avoir plus de 16 millions de valeurs différentes. N'utilisez pas de valeurs à haute résolution telles que des codes temporels, des identifiants uniques, des ID utilisateur, des adresses IP, des URL non paramétrées, etc., pour les étiquettes de métriques.

Performances des requêtes et cardinalité

Lorsque vous émettez une requête de données, le volume de données que vous demandez est le facteur le plus important pour les performances de la requête : une requête portant sur une heure de données est généralement plus rapide que la même requête couvrant six mois. Toutefois, le volume de données renvoyé par une requête est également sensible au nombre de séries temporelles d'une requête. Une requête récupérant deux mois de données pour une métrique à faible cardinalité sera probablement plus rapide qu'une autre requête récupérant deux mois de données pour une métrique à cardinalité très élevée, en raison de la quantité de données récupérées.

La cardinalité dépend principalement du nombre de valeurs que vos étiquettes peuvent avoir, et non du nombre d'étiquettes. En général, vous n'avez aucun contrôle sur la cardinalité des ressources, par exemple lorsque le nombre de pods ou de VM change en fonction des besoins de l'entreprise. Toutefois, lorsque vous ingérez des métriques dans Cloud Monitoring, vous pouvez souvent contrôler la cardinalité des métriques, plutôt que d'utiliser des métriques système. Par exemple, avec les métriques personnalisées définies par l'utilisateur, vous déterminez les étiquettes et leurs valeurs possibles. Si vous ingérez des métriques Prometheus, vous pouvez utiliser la réécriture des libellés pour modifier l'ensemble de libellés et supprimer les séries temporelles que vous ne souhaitez pas ingérer.

Vous pouvez utiliser la page Gestion des métriques de Cloud Monitoring pour identifier les métriques susceptibles de présenter des problèmes de cardinalité. Procédez comme suit pour afficher la page Gestion des métriques :

  1. Dans la console Google Cloud , accédez à la page  Gestion des métriques :

    Accédez à la page Gestion des métriques

    Si vous utilisez la barre de recherche pour trouver cette page, sélectionnez le résultat dont le sous-titre est Monitoring.

  2. Dans la barre d'outils, sélectionnez votre période. Par défaut, la page Gestion des métriques affiche des informations sur les métriques collectées au cours du jour précédent.

Pour en savoir plus sur la page Gestion des métriques, consultez la section Afficher et gérer l'utilisation des métriques.

Pour en savoir plus sur la façon dont Cloud Monitoring stocke et récupère les données de séries temporelles, consultez Monarch : la base de données de séries temporelles en mémoire de Google à l'échelle mondiale.

Pour en savoir plus sur les limites des métriques définies par l'utilisateur dans Cloud Monitoring, consultez Métriques définies par l'utilisateur.