Exercice : résumer les statistiques d’espace libre par ordinateur
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 :
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
:
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. |
|
where CounterName == "Free Megabytes" or CounterName =="% Free Space" or CounterName == "% Used Space" Pour simplifier les résultats et faciliter l’analyse plus approfondie :
|
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 . |
|
3. Écrire votre requête
Récupérez tous les journaux générés la veille qui signalaient les compteurs de performances
% Used Space
,% Free Space
etFree Megabytes
pour les objetsLogicalDisk
etLogical 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.
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.
Pour faciliter l’analyse :
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.
Convertissez
Free Megabytes
en gigaoctets (valeurFree Megabytes
x 0,001 = gigaoctets libres) et réétiquetezFree Megabytes
enOverallFreeSpaceInGB
: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.
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 :
- Utilisez la fonction bag_pack() pour créer des paires clé-valeur pour chacun des deux compteurs de performances.
- Utilisez la fonction d’agrégation make_bag() pour regrouper les deux valeurs clé-valeur pour chaque ordinateur.
Solution :
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.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.