Exercice : résumer les statistiques d’espace libre par ordinateur

Effectué

Vous allez ici récupérer et transformer des données à partir de la table Perf, à l’aide de requêtes KQL, pour analyser l’espace libre des machines qui consignent des données dans votre espace de travail Log Analytics.

1. Définir des objectifs

Rappelez-vous que l’équipe du service informatique a remarqué des problèmes récurrents liés à un espace libre insuffisant sur les machines virtuelles.

Pour analyser l’utilisation de l’espace libre des machines qui s’exécutent dans votre environnement informatique, vous avez besoin d’informations sur les données suivantes :

  • Espace libre total disponible sur chaque machine.
  • Pourcentage d’espace utilisé sur chaque machine.

2. Évaluer les journaux

Comme nous avons vu dans l’exercice précédent, la table Perf fournit des informations sur les performances des composants matériels, des systèmes d’exploitation et des applications.

Nous avons noté que la colonne ObjectName de la table Perf répertorie les noms de l’ensemble des objets supervisés et que la colonne CounterName contient les noms des différents compteurs de performances collectés par Azure Monitor. Nous avons également constaté que ces deux colonnes contiennent de nombreuses valeurs, dont beaucoup apparaissent plusieurs fois.

Nous allons exécuter une requête sur la table Perf pour répertorier des valeurs ObjectName distinctes :

Cliquer pour exécuter la requête dans l’environnement de démonstration Log Analytics

Perf // The table you’re querying
| distinct ObjectName // Lists distinct ObjectName values

Le jeu de résultats de cette requête inclut toutes les valeurs ObjectName qui figurent actuellement dans la table :

Screenshot that shows the results of the Distinct Object Name query on the Perf table with the Logical Disk values highlighted.

Dans notre scénario, nous souhaitons analyser les machines virtuelles. Les objets que nous souhaitons examiner sont donc LogicalDisk et Logical Disk (pour superviser la mémoire dans une machine physique, vous examinez l’objet memory). La raison pour laquelle deux objets qui portent un nom similaire est que LogicalDisk est le nom de l’objet dans les enregistrements Windows, tandis que Logical Disk est utilisé dans les enregistrements Linux.

Pour répertorier les noms distincts des compteurs qu’Azure Monitor collecte pour les objets LogicalDisk et Logical Disk, exécutez :

Cliquer pour exécuter la requête dans l’environnement de démonstration Log Analytics

Perf // The table you’re querying  
| where ObjectName == "LogicalDisk" or // The object name used in Windows records
ObjectName == "Logical Disk" // The object name used in Linux records
| distinct CounterName // Lists distinct CounterName values

Le jeu de résultats de cette requête inclut l’ensemble des compteurs de performances collectés pour les objets LogicalDisk et Logical Disk :

Screenshot that shows the results of a query that lists the distinct names of the counters Azure Monitor collects for the LogicalDisk (written as one word) and Logical Disk (written as two words) objects.

Les compteurs de performances qui fournissent des informations sur l’espace libre et l’espace utilisé sont % Used Space, % Free Space et Free Megabytes. Il existe deux compteurs similaires, % Free Space et % Used Space, qui sont collectés respectivement à partir d’enregistrements Windows et Linux.

Nous allons déterminer comment utiliser ces données et quelles opérations KQL permettent d’extraire et de transformer les données :

Colonne Description Objectif d’analyse Opérations KQL associées
TimeGenerated Indique quand la machine virtuelle a généré chaque journal. Définissez l’étendue de la durée de l’analyse. where TimeGenerated > ago(1d)
Pour plus d’informations, consultez les sections ago(), opérateur where et opérateurs numériques.
Computer Ordinateur à partir duquel l’événement a été collecté. Associez l’utilisation du processeur à un ordinateur spécifique. summarize... by Computer
Pour plus d’informations, consultez la section opérateur summarize.
ObjectName Contient les noms de l’ensemble des objets pour lesquels la table contient des données de performances. Pour votre analyse, vous vous intéressez aux objets LogicalDisk et Logical Disk. Supervisez les disques logiques dans les machines virtuelles. where ObjectName == "LogicalDisk" or ObjectName == "Logical Disk"
Pour plus d’informations, consultez les sections opérateur where et opérateur == (égal à).
CounterName Contient les noms de l’ensemble des compteurs de performances dans la table.
  • Supervisez les compteurs liés à l’espace libre.
  • Renommez % Used Space en % Free Space (en parallèle, convertissez la valeur CounterValue associée)
.
where CounterName == "Free Megabytes" or CounterName =="% Free Space" or CounterName == "% Used Space"
Pour simplifier les résultats et faciliter l’analyse plus approfondie :
  • Remplacer % Used Space par % Free Space (CounterName = iff(CounterName=="% Used Space", "% Free Space", CounterName)).
  • Remplacer Free Megabytes par OverallFreeSpaceInGB (CounterName= iff(CounterName=="Free Megabytes", "OverallFreeSpaceInGB", CounterName))
Pour plus d’informations, consultez les sections opérateur where et opérateur == (égal à).
InstanceName Répertorie les instances supervisées de l’objet supervisé. Supervisez tous les lecteurs sur la machine virtuelle. InstanceName == "_Total"
Pour plus d’informations, consultez les sections opérateur where et opérateur == (égal à).
CounterValue Mesure collectée pour le compteur. Récupérez les mesures de performances pour les compteurs de performances % Used Space, % Free Space et Free Megabytes.
  • CounterValue = iff(CounterName=="% Used Space", 100-CounterValue, CounterValue)
  • CounterValue = iff(CounterName=="Free Megabytes", (CounterValue)*0.001, CounterValue)
Pour plus d’informations, consultez les sections opérateur where et opérateur == (égal à).

3. Écrire votre requête

  1. Récupérez tous les journaux générés la veille qui signalaient les compteurs de performances % Used Space, % Free Space et Free Megabytes pour les objets LogicalDisk et Logical Disk :

    Cliquer pour exécuter la requête dans l’environnement de démonstration Log Analytics

    Perf
    | where TimeGenerated > ago(1d)
    | where ObjectName == "LogicalDisk" or // The object name used in Windows records
    ObjectName == "Logical Disk" // The object name used in Linux records
    | where CounterName == "Free Megabytes" or CounterName =="% Free Space" or CounterName == "% Used Space" // Filters for the performance counters Free Megabytes, % Free Space, and % Used Space performance counters
    | where InstanceName == "_Total"  // Retrieves data related to free space for all drives on a virtual machine  
    

    Le jeu de résultats de cette requête inclut probablement plusieurs enregistrements pour chaque machine à partir de laquelle vous collectez des compteurs de performances liés à l’espace libre.

    Screenshot that shows the results of a query for logs generated in the past day that report on virtual machine free space.

  2. Filtrez la dernière valeur du compteur qui est collectée pour chaque compteur signalé par chaque machine virtuelle :

    Cliquer pour exécuter la requête dans l’environnement de démonstration Log Analytics

    Perf
    | where TimeGenerated > ago(1d)
    | where ObjectName == "LogicalDisk" or // The object name used in Windows records
    ObjectName == "Logical Disk" // The object name used in Linux records
    | where CounterName == "Free Megabytes" or CounterName =="% Free Space" or CounterName == "% Used Space" // Filters for the performance counters Free Megabytes, % Free Space, and % Used Space performance counters
    | where InstanceName == "_Total"  // Retrieves data related to free space for all drives on a virtual disk  
    | summarize arg_max(TimeGenerated, CounterValue) by Computer, CounterName // Retrieves the last counter value collected for each counter for every virtual machine
    

    Vous disposez maintenant de la dernière valeur de compteur signalée pour chaque compteur lié à l’espace libre sur chaque machine.

    Screenshot that shows the results of a query that filters for the last counter value collected for each counter every virtual machine.

  3. Pour faciliter l’analyse :

    1. Convertissez la valeur du compteur % Used Space en % Free Space (en soustrayant la valeur % Used Space de 100 %) et modifiez le nom de la colonne % Used Space en % Free Space :

      Cliquer pour exécuter la requête dans l’environnement de démonstration Log Analytics

      Perf
      | where TimeGenerated > ago(1d)
      | where ObjectName == "LogicalDisk" or // The object name used in Windows records
      ObjectName == "Logical Disk" // The object name used in Linux records
      | where CounterName == "Free Megabytes" or CounterName =="% Free Space" or CounterName == "% Used Space" // Filters for the performance counters Free Megabytes, % Free Space, and % Used Space performance counters
      | where InstanceName == "_Total"  // Retrieves data related to free space for all drives on a virtual disk  
      | summarize arg_max(TimeGenerated, CounterValue) by Computer, CounterName // Retrieves the last counter value collected for each counter for every virtual machine
      | extend CounterValue = iff(CounterName=="% Used Space", 100-CounterValue, CounterValue) // Converts % Used Space to % Free Space
      | extend CounterName = iff(CounterName=="% Used Space", "% Free Space", CounterName) // Changes the column name from % Used Space to % Free Space
      

      Le jeu de résultats de cette requête présente le pourcentage d’espace libre sur les machines Windows et Linux de manière identique, ce qui rend l’analyse plus claire et plus facile.

      Screenshot that shows the results of a query that converts the Percentage Used Space counter value to Percentage Free Space.

    2. Convertissez Free Megabytes en gigaoctets (valeur Free Megabytes x 0,001 = gigaoctets libres) et réétiquetez Free Megabytes en OverallFreeSpaceInGB :

      Cliquer pour exécuter la requête dans l’environnement de démonstration Log Analytics

      Perf
      | where TimeGenerated > ago(1d)
      | where ObjectName == "LogicalDisk" or // The object name used in Windows records
      ObjectName == "Logical Disk" // The object name used in Linux records
      | where CounterName == "Free Megabytes" or CounterName =="% Free Space" or CounterName == "% Used Space" // Filters for the performance counters Free Megabytes, % Free Space, and % Used Space performance counters
      | where InstanceName == "_Total"  // Retrieves data related to free space for all drives on a virtual disk  
      | summarize arg_max(TimeGenerated, CounterValue) by Computer, CounterName // Retrieves the last counter value collected for each counter for every virtual machine
      | extend CounterValue = iff(CounterName=="% Used Space", 100-CounterValue, CounterValue) // Converts % Used Space to % Free Space
      | extend CounterName = iff(CounterName=="% Used Space", "% Free Space", CounterName) // Changes the column name from % Used Space to % Free Space
      | extend CounterValue = iff(CounterName=="Free Megabytes", (CounterValue)*0.001, CounterValue) // Converts megabytes to gigabytes
      | extend CounterName= iff(CounterName=="Free Megabytes", "OverallFreeSpaceInGB", CounterName) // Changes the column name fromFree Megabytes to OverallFreeSpaceInGB
      

      Vous avez désormais un aperçu clair de l’espace libre total sur chaque machine en gigaoctets et en pourcentage de la mémoire totale de la machine.

      Screenshot that shows the results of a query that converts the Free Megabytes column to Overall Free Space In Gigabytes.

Défi : regrouper des statistiques d’espace libre pour chaque ordinateur

Le jeu de résultats de notre requête comprend jusqu’à présent deux lignes pour chaque ordinateur. Une ligne affiche l’espace libre total en gigaoctets, l’autre affiche l’espace libre disponible en pourcentage.

Pouvez-vous créer un dictionnaire qui regroupe ces deux statistiques sur l’espace libre de chaque machine virtuelle ?

Conseil :

Solution :

  1. Regrouper les paires clé-valeur CounterName, CounterValue :

    Cliquer pour exécuter la requête dans l’environnement de démonstration Log Analytics

    Perf
    | where TimeGenerated > ago(1d)
    | where ObjectName == "LogicalDisk" or // The object name used in Windows records
    ObjectName == "Logical Disk" // The object name used in Linux records
    | where CounterName == "Free Megabytes" or CounterName =="% Free Space" or CounterName == "% Used Space" // Filters for the performance counters Free Megabytes, % Free Space, and % Used Space performance counters
    | where InstanceName == "_Total"  // Retrieves data related to free space for all drives on a virtual disk  
    | summarize arg_max(TimeGenerated, CounterValue) by Computer, CounterName // Retrieves the last counter value collected for each counter for every virtual machine
    | extend CounterValue = iff(CounterName=="% Used Space", 100-CounterValue, CounterValue) // Converts % Used Space to % Free Space
    | extend CounterName = iff(CounterName=="% Used Space", "% Free Space", CounterName) // Changes the column name from % Used Space to % Free Space
    | extend CounterValue = iff(CounterName=="Free Megabytes", (CounterValue)*0.001, CounterValue) // Converts megabytes to gigabytes
    | extend CounterName= iff(CounterName=="Free Megabytes", "OverallFreeSpaceInGB", CounterName) // Changes the column name fromFree Megabytes to OverallFreeSpaceInGB
    | extend packed = pack(CounterName, CounterValue) // Groups together CounterName-CounterValue key-value pairs
    

    Le regroupement de paires clé-valeur CounterName, CounterValue permet de créer un dictionnaire de statistiques d’espace libre pour chaque ordinateur à l’étape suivante.

    Screenshot that shows the results of a query that groups together Counter Name and Counter Value key-value pairs.

  2. Créez un conteneur des propriétés (dictionnaire), appelé SpaceStats, regroupant l’ensemble des statistiques d’espace libre collectées pour chaque machine, réalisez un résumé par ordinateur et filtrez les machines qui présentent moins de 50 % d’espace libre :

    Cliquer pour exécuter la requête dans l’environnement de démonstration Log Analytics

    Perf
    | where TimeGenerated > ago(1d)
    | where ObjectName == "LogicalDisk" or // The object name used in Windows records
    ObjectName == "Logical Disk" // The object name used in Linux records
    | where CounterName == "Free Megabytes" or CounterName =="% Free Space" or CounterName == "% Used Space" // Filters for the performance counters Free Megabytes, % Free Space, and % Used Space performance counters
    | where InstanceName == "_Total"  // Retrieves data related to free space for all drives on a virtual disk  
    | summarize arg_max(TimeGenerated, CounterValue) by Computer, CounterName // Retrieves the last counter value collected for each counter for every virtual machine
    | extend CounterValue = iff(CounterName=="% Used Space", 100-CounterValue, CounterValue) // Converts % Used Space to % Free Space
    | extend CounterName = iff(CounterName=="% Used Space", "% Free Space", CounterName) // Changes the column name from % Used Space to % Free Space
    | extend CounterValue = iff(CounterName=="Free Megabytes", (CounterValue)*0.001, CounterValue) // Converts megabytes to gigabytes
    | extend CounterName= iff(CounterName=="Free Megabytes", "OverallFreeSpaceInGB", CounterName) // Changes the column name fromFree Megabytes to OverallFreeSpaceInGB
    | extend packed = pack(CounterName, CounterValue) // Groups together CounterName-CounterValue key-value pairs
    | summarize SpaceStats = make_bag(packed) by Computer // Summarizes free space statstics by computer
    | where SpaceStats.["% Free Space"]<= 50
    

    Le jeu de résultats de cette requête résume les statistiques d’espace libre par machine, ce qui était l’objectif de votre analyse d’espace libre !

    La dernière ligne de la requête filtre les machines qui présentent moins de 50 % d’espace libre. Vous souhaitez peut-être effectuer une supervision ou une analyse plus détaillée, ou bien reconfigurer les machines pour vous assurer que l’espace est suffisant.

    Screenshot that shows the results of a query that summarizes free space statistics by machine.