Explication de l’agrégation et de l’affichage des métriques Azure Monitor

Cet article explique l’agrégation des métriques dans la base de données de série chronologique Azure Monitor où sont sauvegardées les métriques de plateforme et les métriques personnalisées Azure Monitor. Cet article s’applique également aux métriques Application Insights standard.

Vous n’êtes pas obligé de comprendre tout le contenu de cet article pour utiliser efficacement les métriques Azure Monitor, car il s’agit d’un sujet complexe.

Présentation et terminologie

Lorsque vous ajoutez une métrique à un graphique, Metrics Explorer présélectionne automatiquement son agrégation par défaut. La valeur par défaut convient aux scénarios de base. Toutefois, vous pouvez utiliser d’autres agrégations pour obtenir des insights supplémentaires sur la métrique. Pour afficher différentes agrégations sur un graphique, vous devez comprendre comment Metrics Explorer les gère.

Nous allons tout d’abord définir quelques termes :

  • Valeur de métrique : valeur de mesure collectée pour une ressource spécifique.
  • Base de données de série chronologique : base de données optimisée pour le stockage et la récupération de points de données contenant tous une valeur et un horodatage correspondant.
  • Période : période de temps générique.
  • Intervalle de temps : temps écoulé entre deux collectes de valeurs de métrique.
  • Plage temporelle : période affichée sur un graphique. La valeur par défaut est généralement de 24 heures. Seules les plages précises sont disponibles.
  • Granularité temporelle ou Fragment de temps : période utilisée pour agréger des valeurs en vue de leur affichage sur un graphique. Seules les plages précises sont disponibles. La valeur minimale est de 1 minute. Pour être utile, la valeur de granularité temporelle doit être inférieure à celle de la plage temporelle sélectionnée, sinon, une seule valeur sera affichée pour l’ensemble du graphique.
  • Type d’agrégation : type de statistique calculé à partir de plusieurs valeurs de métriques.
  • Agrégat : processus qui consiste à utiliser plusieurs valeurs d’entrée, puis à les utiliser pour produire une seule valeur de sortie via les règles définies par le type d’agrégation. Par exemple, en utilisant la moyenne de plusieurs valeurs.

Résumé du processus

Les métriques sont une série de valeurs stockées avec un horodatage. Dans Azure, la plupart des métriques sont stockées dans la base de données de série chronologique des métriques Azure. Lorsque vous tracez un graphique, les valeurs des métriques sélectionnées sont extraites de la base de données, puis agrégées séparément en fonction de la granularité temporelle choisie (également appelée fragment de temps). Vous sélectionnez la taille de la granularité temporelle à l’aide du sélecteur d’heure de l’explorateur de métriques. Si vous n’effectuez pas de sélection explicite, la granularité temporelle est automatiquement sélectionnée en fonction de la plage temporelle actuellement sélectionnée. Une fois la sélection effectuée, les valeurs de métriques qui ont été capturées à chaque intervalle de granularité temporelle sont agrégées et placées sur le graphique (un point de données par intervalle).

Types d’agrégation

Cinq types d’agrégation de base sont disponibles dans Metrics Explorer : Metrics Explorer masque les agrégations qui ne sont pas pertinentes et ne peut pas être utilisé pour une métrique donnée.

  • Somme : somme de toutes les valeurs capturées au cours de l’intervalle d’agrégation. La somme est parfois appelée « agrégation totale ».
  • Nombre : nombre de mesures capturées au cours de l’intervalle d’agrégation. Il ne s’intéresse pas à la valeur de la mesure, mais uniquement au nombre d’enregistrements.
  • Moyenne : moyenne des valeurs de métriques capturées au cours de l’intervalle d’agrégation. Pour la plupart des métriques, cette valeur correspond à celle de Somme ou de Nombre.
  • Min : la plus petite valeur capturée au cours de l’intervalle d’agrégation.
  • Max : la plus grande valeur capturée au cours de l’intervalle d’agrégation.

Supposons, par exemple, qu’un graphique montre la métrique Octets sortants réseau totaux pour une machine virtuelle, en utilisant l’agrégation SUM obtenue au cours des dernières 24 heures. La plage temporelle et la granularité peuvent être modifiées en haut à droite du graphique, comme le montre la capture d’écran suivante.

Screenshot showing time range and time granularity picker

Pour la granularité temporelle = 30 minutes et pour la plage temporelle = 24 heures :

  • Le graphique est dessiné à partir de 48 points de données se présentant sous la forme de points de données de 1 minute agrégés (24 heures x 2 points de données par heure (60 minutes/30 minutes)).
  • Le graphique en courbes connecte 48 points dans la zone de traçage du graphique.
  • Chaque point de données représente la somme de tous les octets sortants réseau qui sont envoyés au cours de chaque période de 30 minutes.

Screenshot showing data on a line graph set to 24-hour time range and 30-minute time granularity

Cliquez sur les images de cette section pour les afficher en plus grand.

Si vous configurez la granularité temporelle sur 15 minutes, le graphique sera dessiné à partir de 96 points de données agrégés. Autrement dit, 60 min/15 min = 4 points de données par heure x 24 heures.

Screenshot showing data on a line graph set to 24-hour time range and 15-minute time granularity

Pour une granularité temporelle de 5 minutes, vous obtenez 24 x (60/5) = 288 points.

Screenshot showing data on a line graph set to 24-hour time range and 5-minute time granularity

Pour une granularité temporelle de 1 minute (la plus petite possible sur le graphique), vous obtenez 24 x 60/1 = 1 440 points.

Screenshot showing data on a line graph set to 24-hour time range and 1-minute time granularity

Comme vous pouvez le voir dans les captures d’écran précédentes, les graphiques ont une apparence différente selon les sommes. Remarquez que cette machine virtuelle présente un grand nombre de sorties pendant une courte période par rapport au reste de la fenêtre de temps.

La granularité temporelle vous permet d’ajuster le rapport signal/bruit sur un graphique. Les agrégations les plus élevées suppriment le bruit et aplanissent les pics. Remarquez les variations du graphique avec une granularité de 1 minute, ainsi que la façon dont elles s’aplanissent à mesure que les valeurs de granularité augmentent.

Ce comportement d’aplanissement est important lorsque vous envoyez ces données à d’autres systèmes, par exemple pour des alertes. En règle générale, vous ne souhaitez pas être alerté pour des pics très courts en temps processeur dépassant 90 %. Toutefois, si le processeur reste à 90 % pendant 5 minutes, il s’agit probablement d’un problème important. Si vous configurez une règle d’alerte pour le processeur (ou pour n’importe quelle métrique), le fait d’augmenter la granularité temporelle pourra réduire le nombre de fausses alertes que vous recevez.

Il est important de déterminer ce qui est « normal » pour votre charge de travail afin de savoir quel intervalle de temps est le mieux adapté. Cela fait partie des avantages des alertes dynamiques, qui ne seront pas abordées ici.

Comment le système collecte les métriques

La collecte des données varie selon la métrique.

Fréquence de collecte des mesures

Il existe deux types de périodes de collecte.

  • Régulier : la métrique est collectée à un intervalle de temps qui ne varie pas.

  • D’après l’activité : la métrique est collectée en fonction du moment où se produit une transaction d’un certain type. Chaque transaction est associée à une entrée de métrique et à un horodatage. Elle n’est pas collectée à intervalles réguliers. Par conséquent, le nombre d’enregistrements varie sur une période donnée.

Granularité

La granularité temporelle minimale est de 1 minute, mais le système sous-jacent peut capturer des données plus rapidement en fonction de la métrique. Par exemple, le pourcentage d’UC pour une machine virtuelle Azure est capturé selon un intervalle de temps de 15 secondes. Étant donné que les échecs HTTP sont capturés comme des transactions, ils peuvent dépasser largement 1 minute. D’autres métriques, telles que le stockage SQL, sont capturées selon un intervalle de temps de 20 minutes. Ce choix dépend du fournisseur et du type de ressources. La plupart tentent de fournir le plus petit intervalle de temps possible.

Dimensions, fractionnement et filtrage

Des métriques sont capturées pour chaque ressource. Toutefois, le niveau auquel les métriques sont collectées, stockées et représentées sous forme de graphique peut varier. Ce niveau est représenté par des métriques supplémentaires qui sont disponibles dans les dimensions de métriques. Chaque fournisseur de ressources choisit le niveau de détail des données collectées. Azure Monitor définit uniquement la manière dont ces détails sont présentés et stockés.

Dans Metrics Explorer, lorsque vous représentez une métrique sous forme de graphique, vous avez la possibilité de « fractionner » le graphique en fonction d’une dimension. Le fractionnement d’un graphique vous permet d’examiner les données sous-jacentes pour obtenir plus de détails, et de voir que les données sont représentées sous forme graphique ou qu’elles sont filtrées dans Metrics Explorer.

Par exemple, pour Microsoft.ApiManagement/service, Emplacement est une dimension qui est définie pour de nombreuses métriques.

  • Capacité fait partie de ces métriques. L’utilisation de la dimension Emplacement signifie que le système sous-jacent va stocker un enregistrement de métrique pour la capacité de chaque emplacement, plutôt qu’un seul pour la quantité agrégée. Vous pouvez ensuite récupérer ou fractionner ces informations dans un graphique de métriques.

  • Lorsque vous regardez Durée globale des demandes de passerelle, vous voyez deux dimensions : Emplacement et Nom d’hôte. Celles-ci vous indiquent l’emplacement d’une durée, ainsi que le nom d’hôte dont elle provient.

  • L’une des métriques les plus flexibles, Demandes, comporte 7 dimensions.

Pour plus d’informations sur chacune des métriques et sur les dimensions disponibles, consultez l’article Azure Monitor sur les métriques prises en charge. De plus, la documentation de chaque type et chaque fournisseur de ressources peut fournir des informations supplémentaires sur les dimensions et sur ce qu’elles permettent de mesurer.

Vous pouvez utiliser à la fois le fractionnement et le filtrage des données pour examiner un problème. Vous trouverez ci-dessous un exemple de graphique présentant la métrique Moy. disque, octets/écriture pour un groupe de machines virtuelles au sein d’un groupe de ressources. Avec cette métrique, nous avons un récapitulatif pour toutes les machines virtuelles. Toutefois, nous pourrions vouloir connaître les machines qui sont responsables des pics qui se sont produits aux environs de 6 h 00. S’agit-il d’une seule et même machine ? Combien de machines sont impliquées ?

Screenshot showing total Disk Write Bytes for all virtual machines in Contoso Hotels resource group

Cliquez sur les images de cette section pour les afficher en plus grand.

Lorsque nous appliquons le fractionnement, nous pouvons voir les données sous-jacentes, toutefois, leur affichage n’est pas très clair. Il se trouve que 20 machines virtuelles sont agrégées dans le graphique ci-dessus. Ici, nous avons utilisé notre souris pour pointer sur le pic de 6 h 00, qui nous indique que CH-DCVM11 est en cause. Toutefois, il est difficile de voir les autres données associées à cette machine virtuelle, car d’autres machines virtuelles encombrent le graphique.

Screenshot showing Disk Write Bytes for all virtual machines in Contoso Hotels resource group split by virtual machine name

L’utilisation du filtrage nous permet de nettoyer le graphique pour voir ce qu’il se passe vraiment. Vous pouvez cocher ou décocher les machines virtuelles que vous souhaitez afficher. Remarquez les lignes en pointillés. Celles-ci seront mentionnées dans une prochaine section.

Screenshot showing Disk Write Bytes for all virtual machines in Contoso Hotels resource group split and filtered by virtual machine name

Pour plus d’informations sur la façon d’afficher des données fractionnées par dimension sur un graphique Metrics Explorer, consultez Fonctionnalités avancées de Metrics Explorer - Filtres et fractionnement.

Valeurs NULL et égales à zéro

Lorsque le système s’attend à recevoir des données de métriques d’une ressource, mais ne les reçoit pas, il enregistre une valeur NULL. Une valeur NULL n’équivaut pas à une valeur de zéro, ce qu’il est très important de prendre en compte lors du calcul des agrégations et de la génération des graphiques. Les valeurs NULL ne sont pas comptabilisées comme des mesures valides.

Les valeurs NULL s’affichent différemment selon les graphiques. Les nuages de points ne montrent pas l’un des points sur le graphique. Les graphiques à barres ne montrent pas la barre. Sur les graphiques en courbes, les valeurs NULL peuvent s’afficher sous forme de lignes en traits ou en pointillés, comme celles que montre la capture d’écran de la section précédente. Lorsque vous calculez des moyennes comprenant des valeurs NULL, il y a moins de points de données desquels utiliser la moyenne. Ce comportement peut parfois entraîner une baisse inattendue des valeurs d’un graphique, même si, généralement, cela se produit plus fréquemment lorsque la valeur a été convertie en une valeur de zéro, puis utilisée comme un point de données valide.

Les métriques personnalisées utilisent toujours des valeurs NULL lorsqu’elles ne reçoivent aucune donnée. Avec les métriques de plateforme, chaque fournisseur de ressources décide s’il faut utiliser des zéros ou des valeurs NULL en fonction de ce qui convient le mieux pour une métrique donnée.

Les alertes Azure Monitor utilisent les valeurs que le fournisseur de ressources écrit dans la base de données de métriques. Il est donc important de savoir comment le fournisseur de ressources gère les valeurs NULL en affichant d’abord les données.

Fonctionnement de l’agrégation

Les graphiques de métriques du système précédent affichent différents types de données agrégées. Le système préagrège les données afin que les graphiques demandés puissent s’afficher plus rapidement sans nécessiter de nombreux de calculs répétés.

Dans cet exemple :

  • Nous collectons une métrique transactionnelle fictive appelée Échecs HTTP.
  • La dimension Serveur est une dimension pour la métrique Échecs HTTP.
  • Nous avons trois serveurs : les serveurs A, B et C.

Pour simplifier l’explication, nous allons commencer par le type d’agrégation SUM uniquement.

Agrégation allant de moins d’une minute à 1 minute

Les premières données de métriques brutes sont collectées et stockées dans la base de données de métriques Azure Monitor. Dans ce cas, chaque serveur stocke des enregistrements de transaction avec un horodatage, car Serveur est une dimension. Étant donné que la plus courte période que vous pouvez afficher en tant que client est égale à 1 minute, ces horodatages sont d’abord regroupés en valeurs de métriques d’une minute pour chacun des serveurs. Le processus d’agrégation pour le serveur B est indiqué dans le graphique ci-dessous. L’agrégation des serveurs A et C est effectuée de la même façon, et ceux-ci comportent des données différentes.

Screenshot showing sub minute transactional entries into 1-minute aggregations.

Les valeurs agrégées de 1 minute obtenues sont stockées en tant que nouvelles entrées dans la base de données de métriques, afin qu’elles puissent être collectées dans le cadre de prochains calculs.

Screenshot showing multiple 1-minute aggregated entries across dimension of server. Server A, B, and C shown individually

Agrégation des dimensions

Les calculs de 1 minute sont ensuite réduits par dimension et stockés à nouveau comme des enregistrements individuels. Dans ce cas, toutes les données de tous les serveurs sont agrégées dans une métrique d’intervalle de 1 minute, puis elles sont stockées dans la base de données de métriques en vue d’une utilisation dans de prochaines agrégations.

Screenshot showing multiple 1-minute aggregated entries of Server A, B, and C aggregated into 1-minute All Servers entires

Par souci de clarté, le tableau suivant montre la méthode d’agrégation.

Période Serveur A serveur B. le serveur C. Somme (A+B+C)
Minute 1 1 1 1 3
Minute 2 0 5 1 6
Minute 3 0 5 1 6
Minute 4 2 3 4 9
Minute 5 1 0 3 4
Minute 6 1 0 4 5
Minute 7 1 2 4 7
Minute 8 0 1 0 1
Minute 9 1 1 4 6
Minute 10 2 1 0 3

Une seule dimension est présentée ci-dessus. Toutefois, le même processus d’agrégation et de stockage se produit pour toutes les dimensions qui sont prises en charge par une métrique.

  • Collectez les valeurs dans un ensemble agrégé de 1 minute selon cette dimension. Stockez ces valeurs.
  • Réduisez la dimension en une somme agrégée de 1 minute. Stockez ces valeurs.

Nous allons présenter une autre dimension de la métrique Échecs HTTP : « NetworkAdapter ». Supposons que nous ayons un nombre variable de cartes par serveur.

  • Le serveur A a 1 carte
  • Le serveur B a 2 cartes
  • Le serveur C a 3 cartes

Nous allons collecter les données des transactions suivantes séparément. Celles-ci seront associées aux éléments suivants :

  • Un horodatage
  • Une valeur
  • Le serveur d’où provient la transaction
  • La carte d’où provient la transaction

Ces flux inférieurs à 1 minute sont ensuite agrégés en valeurs de série chronologique de 1 minute, puis ils sont stockés dans la base de données de métriques Azure Monitor :

  • Serveur A, Carte 1
  • Serveur B, Carte 1
  • Serveur B, Carte 2
  • Serveur C, Carte 1
  • Serveur C, Carte 2
  • Serveur C, Carte 3

En outre, les agrégations réduites suivantes sont également stockées :

  • Serveur A, carte 1 (étant donné qu’il n’y a rien à réduire, les données seront à nouveau stockées)
  • Serveur B, Cartes 1+2
  • Serveur C, Cartes 1+2+3
  • Tous les serveurs et toutes les cartes

Cela montre que les métriques qui ont un grand nombre de dimensions comportent un plus grand nombre d’agrégations. Il n’est pas nécessaire de connaître toutes les permutations, mais simplement de comprendre le raisonnement. Le système souhaite que les données individuelles et les données agrégées soient stockées en vue d’être récupérées rapidement à partir de n’importe quel graphique. Le système sélectionne l’agrégation stockée ou les données brutes sous-jacentes les plus pertinentes en fonction de ce que vous choisissez d’afficher.

Agrégation sans dimension

Étant donné que cette métrique comporte une dimension Serveur, vous pouvez accéder aux données sous-jacentes des serveurs A, B et C ci-dessus via le fractionnement et le filtrage, comme expliqué plus haut dans cet article. Si la métrique n’avait pas la dimension Serveur, vous, en tant que client, pourriez uniquement accéder aux sommes agrégées de 1 minute qui s’affichent en noir sur le diagramme. Ce sont les valeurs 3, 6, 6, 9, etc. Le système n’effectuera pas non plus le travail sous-jacent pour agréger les valeurs fractionnées, il ne les utilisera pas dans Metrics Explorer et il ne les enverra pas via l’API REST Metrics.

Affichage des granularités temporelles supérieures à 1 minute

Si vous demandez des métriques en utilisant une granularité plus longue, le système utilisera les sommes agrégées de 1 minute afin de calculer les sommes pour des granularités temporelles supérieures. Les lignes en pointillés ci-dessous montrent la méthode de somme qui est employée pour les granularités temporelles de 2 et 5 minutes. Là encore, nous n’affichons que le type d’agrégation SUM pour des raisons de simplicité.

Screenshot showing multiple 1-minute aggregated entries across dimension of server aggregated into 2-min and 5-min time periods.

Pour la granularité temporelle de 2 minutes.

Période Sommes
Minutes 1 et 2 (3 + 6) = 9
Minutes 3 et 4 (6 + 9) = 15
Minutes 4 et 5 (4 + 5) = 9
Minutes 6 et 7 (7 + 1) = 8
Minutes 8 et 9 (6 + 3) = 9

Pour la granularité temporelle de 5 minutes.

Période Sommes
Minutes de 1 à 5 3 + 6 + 6 + 9 + 4 = 28
Minutes de 6 à 10 5 + 7 + 1 + 6 + 3 = 22

Le système utilise les données agrégées stockées qui offrent les meilleures performances.

Vous trouverez ci-dessous une version plus complexe du diagramme montrant le processus d’agrégation de 1 minute, auquel nous avons retiré certaines flèches pour améliorer la lisibilité.

Screenshot showing consolidation of previous 3 screenshots. Multiple 1-minute aggregated entries across dimension of server aggregated in 1-minute, 2-minute, and 5-minute intervals. Server A, B, and C shown individually

Exemple plus complexe

Voici un exemple plus complexe qui utilise des valeurs pour une métrique fictive appelée « Temps de réponse HTTP en millisecondes ». Ici, nous utilisons d’autres niveaux de complexité.

  1. Nous affichons l’agrégation pour Somme, Nombre, Min et Max, et le calcul pour Moyenne.
  2. Nous montrons les valeurs NULL et la façon dont elles affectent les calculs.

Considérez l'exemple suivant. Les flèches et les données encadrées montrent comment les valeurs sont agrégées et calculées.

Le processus de préagrégation de 1 minute qui est décrit dans la section précédente se produit également pour Sommes, Nombre, Minimum et Maximum. Toutefois, la Moyenne n’est pas préagrégée. Elle est recalculée à l’aide de données agrégées pour éviter les erreurs de calcul.

Screenshot showing complex example of aggregation and calculation of sum, count, min, max and average from 1 minute to 10 minutes.

Prenons la minute 6 pour l’agrégation de 1 minute qui est mise en évidence ci-dessus. Cette minute correspond au moment où le serveur B a été mis hors connexion et a arrêté les données de rapport, peut-être en raison d’un redémarrage.

À partir de la minute 6 ci-dessus, les types d’agrégation de 1 minute calculés sont les suivants :

Type d’agrégation Valeur Notes
SUM 53+20=73
Nombre 2 Montre l’effet des valeurs NULL. Si le serveur avait été en ligne, la valeur aurait été de 3.
Minimum 20
Maximale 53
Average 73/2 Toujours la somme divisée par le nombre. Elle n’est jamais stockée et toujours recalculée pour chaque granularité temporelle à l’aide des nombres agrégés pour cette granularité. Remarquez le recalcul pour les granularités temporelles de 5 minutes et 10 minutes qui est mis en évidence ci-dessus.

Le texte en rouge indique les valeurs qui peuvent être considérées comme étant en dehors de la plage normale, et montre comment elles se propagent (ou échouent) à mesure que la granularité temporelle augmente. Remarquez que les valeurs Min et Max indiquent des anomalies sous-jacentes, et que Moyenne et Sommes perdent ces informations à mesure que la granularité temporelle augmente.

Vous pouvez également voir que les valeurs NULL offrent un meilleur calcul de moyenne que les zéros.

Notes

Même si ce n’est pas le cas dans cet exemple, Nombre est égal à Somme lorsqu’une métrique est systématiquement capturée avec une valeur de 1. C’est courant lorsqu’une métrique effectue le suivi de l’occurrence d’un événement transactionnel (par exemple, le nombre d’échecs HTTP mentionnés dans un précédent exemple de cet article).

Étapes suivantes