Exercice : Identifier les machines avec une utilisation élevée du processeur

Effectué

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 

Screenshot that shows the results of a query on the Perf table with the ObjectName, CounterName, InstanceName, and CounterValue columns highlighted.

Vous pouvez voir que les colonnes TimeGenerated, Computer, ObjectName, CounterName, InstanceNameet 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 :

Screenshot that shows the results of the distinct CounterName query on the Perf table with the Percentage Processor Time value highlighted.

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.

  1. 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.

    Screenshot that shows the results of a query for all logs generated in the past day that reported the Percentage Processor Time performance counter.

  2. 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.

    Screenshot that shows the minimum, maximum, average, 90th and 99th percentile results of the query on the Perf table.

  3. 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.

    Screenshot that shows the results of a query that filters for entries where the Percentage Processor Time counter value is higher than 80 in the 90th and 99th percentile range.

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 :

  1. 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 table Heartbeat aux résultats de la requête précédente.

    Screenshot that shows the results of a query that adds operating system information from the Heartbeat table to the previous query results.

    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 colonne Computer de la table Heartbeat a été renommée Computer1, 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.

  2. 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.

    Screenshot that shows the results of a query that removes the Computer 1 column from the previous query results.