Exercice : Identifier les machines avec une utilisation élevée du processeur
Ici, vous écrirez des requêtes KQL pour récupérer et transformer des données de la table Perf
afin de comprendre quelles machines ont atteint ou s’approchent de leur capacité de calcul totale et quelles machines sont sous-utilisées.
1. Définir des objectifs
Pour résoudre les problèmes de performances, atténuer les problèmes potentiels et identifier les possibilités d’exploitation plus efficacement, vous souhaitez analyser l’utilisation de l’unité centrale de traitement (processeur) des machines virtuelles dans votre environnement informatique.
Pour identifier les problèmes de performances liés au processeur et les opportunités de devenir plus efficace, vous avez besoin d’informations sur :
- Les tendances d’utilisation du processeur de chaque machine active.
- L’utilisation du processeur des machines aux heures de pointe et aux heures creuses.
2. Évaluer les journaux
Les agents Windows et Linux envoient des compteurs de performances de composants matériels, de systèmes d’exploitation et d’applications s’exécutant sur des machines surveillées vers la table Perf
dans Azure Monitor.
Exécutons une requête simple sur la table Perf
pour récupérer les journaux des dernières 24 heures et avoir une idée du schéma de la table et des données qu’elle contient :
Cliquez pour exécuter la requête dans l’environnement de démo Log Analytics
Perf // The table you’re querying
| where TimeGenerated > ago(1d) // Filters for entries generated in the past day
Vous pouvez voir que les colonnes TimeGenerated
, Computer
, ObjectName
, CounterName
, InstanceName
et CounterValue
contiennent des données pertinentes pour notre analyse.
La colonne ObjectName
répertorie les noms de tous les objets pour lesquels Azure Monitor collecte des données à partir de machines surveillées. La colonne CounterName
contient les noms des différents compteurs de performances collectés par Azure Monitor. Ces deux colonnes contiennent de nombreuses valeurs, dont beaucoup apparaissent plusieurs fois. Pour visualiser clairement les valeurs distinctes dans ces colonnes et déterminer quels compteurs sont pertinents pour l’analyse actuelle, exécutons cette requête :
Cliquez pour exécuter la requête dans l’environnement de démo Log Analytics
Perf // The table you’re querying
| distinct ObjectName,CounterName // Lists distinct combinations of ObjectName and CounterName values
Cette capture d’écran montre les combinaisons distinctes des valeurs ObjectName
et CounterName
dans la colonne CounterName
au cours des dernières 24 heures :
Le compteur % Processor Time
vous donne une compréhension de l’utilisation du processeur ou de l’unité centrale de traitement (UC). Ce sont des informations dont vous avez besoin !
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 l’opérateur summarize. |
ObjectName |
Contient les noms de l’ensemble des objets pour lesquels la table contient des données de performances. | Surveillez les performances du processeur. | where ObjectName == "Processor" Pour plus d’informations, consultez les sectionsopérateur == (égal à). |
CounterName |
Contient les noms de l’ensemble des compteurs de performances dans la table. | Surveillez le compteur de performances % Processor Time . |
where CounterName == "% Processor Time" 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é. | Surveillez tous les cœurs du processeur. | where 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 le compteur de performances % Processor Time . |
summarize min(CounterValue), avg(CounterValue), max(CounterValue), percentiles(CounterValue, 90,99) Pour plus d’informations, consultez opérateur summarize et les fonctions d’agrégation min(), max(), avg()et centiles(). |
3. Écrire votre requête
Écrivez une requête qui résume l’utilisation moyenne, minimale et maximale du processeur de toutes les machines au cours de la dernière journée.
Récupérez tous les journaux générés au cours de la dernière journée qui ont signalé le compteur de performances
% Processor Time
:Cliquez pour exécuter la requête dans l’environnement de démonstration Log Analytics.
Perf // The table you’re querying | where TimeGenerated > ago(1d) and ObjectName == "Processor" and CounterName == "% Processor Time" and InstanceName == "_Total" // Filters for entries generated in the past day related to total processor time measurements
Cette requête récupère tous les journaux liés aux mesures de temps total du processeur au cours de la dernière journée.
Trouvez les valeurs minimales, maximales et moyennes du compteur et calculez les valeurs du compteur des 90e et 99e centiles pour chaque ordinateur :
Cliquez pour exécuter la requête dans l’environnement de démo Log Analytics
Perf // The table you’re querying | where TimeGenerated > ago(1d) and ObjectName == "Processor" and CounterName == "% Processor Time" and InstanceName == "_Total" // Filters for entries generated in the past day related to total processor time measurements | summarize min(CounterValue), avg(CounterValue), max(CounterValue), percentiles(CounterValue, 90,99) by Computer // Presents the minimum, maximum, average, 90th and 99th percentile counter values for each computer
Le jeu de résultats de cette requête affiche les valeurs de compteur minimales, maximales, moyennes, 90e et 99e centiles
% Processor Time
pour chaque ordinateur pour lequel il y a des données dans votre espace de travail Log Analytics.Filtrez les résultats de la requête pour les entrées où la valeur du compteur
% Processor Time
est supérieure à 80 dans la plage des 90e et 99e centiles :Cliquez pour exécuter la requête dans l’environnement de démo Log Analytics
Perf // The table you’re querying | where TimeGenerated > ago(1d) and ObjectName == "Processor" and CounterName == "% Processor Time" and InstanceName == "_Total" // Filters for entries generated in the past day related to total processor time measurements | summarize min(CounterValue), avg(CounterValue), max(CounterValue), percentiles(CounterValue, 90,99) by Computer // Presents the minimum, maximum, average, 90th and 99th percentile counter values for each computer | where percentile_CounterValue_90 > 80 and percentile_CounterValue_99 > 80 // Filters previous query results for instances where the 90th and 99th percentile counters are higher than 80
Le jeu de résultats de cette requête se compose de tous les ordinateurs pour lesquels les valeurs
% Processor Time
des 10 % et 15 % les plus élevés sont supérieures à 80.
Test : Ajouter des informations sur le système d’exploitation de la table Heartbeat aux résultats de la requête
Vous pouvez souvent mieux comprendre les résultats de votre requête en corrélant des informations provenant d’une table différente à vos résultats de requête en utilisant l’opérateur join
. Pour plus d’informations, consultez Opérateur de jointure.
Pouvez-vous utiliser l’opérateur join
pour ajouter des informations sur le système d’exploitation s’exécutant sur chaque ordinateur, qui est disponible dans la tableHeartbeat
, comme nous l’avons vu dans le premier exercice ?
Solution :
Ajoutez des informations à partir de la table
Heartbeat
sur le système d’exploitation s’exécutant sur chacun des ordinateurs de vos résultats de requête :Cliquez pour exécuter la requête dans l’environnement de démo Log Analytics
Perf // The table you’re querying | where TimeGenerated > ago(1d) and ObjectName == "Processor" and CounterName == "% Processor Time" and InstanceName == "_Total" // Filters for entries generated in the past day related to total processor time measurements | summarize min(CounterValue), avg(CounterValue), max(CounterValue), percentiles(CounterValue, 90,99) by Computer // Presents the minimum, maximum, average, 90th and 99th percentile counter values for each computer | where percentile_CounterValue_90 > 80 and percentile_CounterValue_99 > 80 // Filters previous query results for instances where the 90th and 99th percentile counters are higher than 50 | join kind=inner (Heartbeat // Introduces data from the "Heartbeat" table to the previous query results | where TimeGenerated > ago(1d) // Time range for the data added from the "Heartbeat" table | distinct Computer, OSType) on Computer // Adds distinct combinations of computer and operating system
Cette itération de la requête ajoute les colonnes
Computer
etOSType
de la tableHeartbeat
aux résultats de la requête précédente.La colonne
Computer
apparaît maintenant deux fois dans les résultats de la requête : une fois à partir de la requête sur la tablePerf
et une fois à partir de la requête sur la tableHeartbeat
. La colonneComputer
de la tableHeartbeat
a été renomméeComputer1
, mais les deux tables contiennent des données identiques. La présence des deux colonnes permet de corréler les résultats des deux tables, mais vous pouvez désormais filtrer la colonne dupliquée.Supprimez la colonne
Computer1
des résultats de la requête :Cliquez pour exécuter la requête dans l’environnement de démo Log Analytics
Perf // The table you’re querying | where TimeGenerated > ago(1d) and ObjectName == "Processor" and CounterName == "% Processor Time" and InstanceName == "_Total" // Filters for entries generated in the past day related to total processor time measurements | summarize min(CounterValue), avg(CounterValue), max(CounterValue), percentiles(CounterValue, 90,99) by Computer // Presents the minimum, maximum, average, 90th and 99th percentile counter values for each computer | where percentile_CounterValue_90 > 80 and percentile_CounterValue_99 > 80 // Filters previous query results for instances where the 90th and 99th percentile counters are higher than 50 | join kind=inner (Heartbeat // Introduces data from the "Heartbeat" table to the previous query results | where TimeGenerated > ago(1d) // Time range for the data added from the "Heartbeat" table | distinct Computer, OSType) on Computer // Adds distinct combinations of computer and operating system | project-away Computer1 // Removes the "Computer1" column from the query results
Le jeu de résultats de cette requête répertorie tous les ordinateurs qui ont atteint leur pleine capacité de processeur et le système d’exploitation s’exécutant sur chaque ordinateur, ce qui sera utile pour une analyse plus approfondie.