Cvičení – identifikace počítačů s vysokým využitím procesoru

Dokončeno

V této části napíšete dotazy KQL, které načítají a transformují data z Perf tabulky, abyste pochopili, které počítače dosáhly nebo se blíží jejich celkové výpočetní kapacitě a které počítače jsou nedostatečně spotřebované.

1. Nastavení cílů

Pokud chcete řešit problémy s výkonem, zmírnit potenciální problémy a identifikovat příležitosti k efektivnějšímu provozu, chcete analyzovat využití procesoru virtuálních počítačů ve vašem IT prostředí.

Pokud chcete identifikovat problémy s výkonem související s procesorem a příležitosti k efektivnějšímu fungování, potřebujete informace o:

  • Trendy využití procesoru jednotlivých aktivních počítačů
  • Využití procesoru počítačů ve špičce a klidu

2. Posouzení protokolů

Agenti pro Windows a Linux odesílají čítače výkonu hardwarových komponent, operačních systémů a aplikací spuštěných na monitorovaných počítačích do tabulky ve službě Perf Azure Monitor.

Pojďme na tabulku spustit jednoduchý dotaz, Perf který načte protokoly z posledních 24 hodin a získáme představu o schématu tabulky a datech, která tabulka obsahuje:

Kliknutím spustíte dotaz v ukázkové prostředí 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.

Vidíte, že sloupce TimeGenerated, , Computer, ObjectNameCounterNameInstanceNamea CounterValue sloupce obsahují data, která jsou relevantní pro naši analýzu.

Ve ObjectName sloupci jsou uvedeny názvy všech objektů, pro které Azure Monitor shromažďuje data z monitorovaných počítačů. Sloupec CounterName obsahuje názvy různých čítačů výkonu, které Azure Monitor shromažďuje. Oba tyto sloupce obsahují velké množství hodnot, z nichž mnohé se zobrazují vícekrát. Abychom jasně viděli jedinečné hodnoty v těchto sloupcích a zjistili, které čítače jsou relevantní pro aktuální analýzu, spusťme tento dotaz:

Kliknutím spustíte dotaz v ukázkové prostředí Log Analytics.

Perf // The table you’re querying
| distinct ObjectName,CounterName // Lists distinct combinations of ObjectName and CounterName values

Tento snímek obrazovky ukazuje jedinečné kombinace ObjectName a CounterName hodnoty ve CounterName sloupci za posledních 24 hodin:

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

% Processor Time Čítač vám poskytne informace o využití procesoru nebo procesoru (CPU). To jsou informace, které potřebujete!

Pojďme posoudit, jak můžeme tato data používat a které operace KQL můžou pomoct extrahovat a transformovat data:

Sloupec Popis Cíl analýzy Související operace KQL
TimeGenerated Označuje, kdy virtuální počítač vygeneroval každý protokol. Definujte časový rozsah analýzy. where TimeGenerated > ago(1d)
Další informace naleznete v tématu ago() kde operátor a numerické operátory.
Computer Počítač, ze kterého byla událost shromážděna. Přidružte využití procesoru ke konkrétnímu počítači. summarize... by Computer
Další informace najdete v operátoru summarize.
ObjectName Obsahuje názvy všech objektů, pro které tabulka uchovává údaje o výkonu. Monitorujte výkon procesoru. where ObjectName == "Processor"
Další informace najdete v operátoru == (rovná se).
CounterName Obsahuje názvy všech čítačů výkonu v tabulce. Monitorujte čítač výkonu % Processor Time . where CounterName == "% Processor Time"
Další informace naleznete v tématu, kde operátor a == (rovná se).
InstanceName Zobrazí seznam monitorovaných instancí monitorovaného objektu. Monitorujte všechna jádra procesoru. where InstanceName == "_Total"
Další informace naleznete v tématu, kde operátor a == (rovná se).
CounterValue Měření shromážděné pro čítač. Načtěte měření výkonu pro čítač výkonu % Processor Time . summarize min(CounterValue), avg(CounterValue), max(CounterValue), percentiles(CounterValue, 90,99)
Další informace najdete v tématu operátor sumarizace a agregační funkce min(), max(), avg() a percentils().

3. Napište svůj dotaz.

Napište dotaz, který shrnuje průměrné, minimální a maximální využití procesoru všech počítačů za poslední den.

  1. Načtěte všechny protokoly vygenerované za poslední den, které ohlásily čítač výkonu % Processor Time :

    Kliknutím spustíte dotaz v ukázkové prostředí 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  
    

    Tento dotaz načte všechny protokoly související s celkovým měřením času procesoru z posledního dne.

    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. Vyhledejte minimální, maximální a průměrné hodnoty čítače a vypočítejte hodnoty 90. a 99. percentilu pro každý počítač:

    Kliknutím spustíte dotaz v ukázkové prostředí 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 
    

    Sada výsledků tohoto dotazu zobrazuje minimální, maximální, průměrnou, 90. a 99. hodnotu čítače percentilu % Processor Time pro každý počítač, pro který jsou data v pracovním prostoru služby Log Analytics.

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

  3. Vyfiltrujte výsledky dotazu pro položky, ve kterých % Processor Time je hodnota čítače vyšší než 80 v rozsahu 90. a 99. percentilu:

    Kliknutím spustíte dotaz v ukázkové prostředí 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
    

    Sada výsledků tohoto dotazu se skládá ze všech počítačů, pro které je 10 % a 15 % % Processor Time hodnot více než 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.

Výzva: Přidání informací o operačním systému z tabulky Prezenčních signálů do výsledků dotazu

Výsledky dotazu můžete často lépe pochopit korelací informací z jiné tabulky s výsledky dotazu pomocí operátoru join . Další informace naleznete v tématu operátor join.

Můžete pomocí operátoru join přidat informace o operačním systému spuštěném na každém počítači, který je k dispozici v Heartbeat tabulce, jak jsme viděli v prvním cvičení?

Řešení:

  1. Přidejte informace z Heartbeat tabulky o operačním systému spuštěném na každém počítači ve výsledcích dotazu:

    Kliknutím spustíte dotaz v ukázkové prostředí 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 
    

    Tato iterace dotazu přidá Computer sloupce z OSType Heartbeat tabulky do výsledků předchozího dotazu.

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

    Sloupec Computer se teď ve výsledcích dotazu zobrazí dvakrát – jednou z dotazu v Perf tabulce a jednou z dotazu v Heartbeat tabulce. Sloupec Computer z Heartbeat tabulky byl přejmenován Computer1, ale dvě tabulky obsahují identická data. Obě sloupce umožňují korelaci výsledků ze dvou tabulek, ale duplicitní sloupec teď můžete filtrovat.

  2. Computer1 Odeberte sloupec z výsledků dotazu:

    Kliknutím spustíte dotaz v ukázkové prostředí 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 
    

    Sada výsledků tohoto dotazu obsahuje seznam všech počítačů, které dosáhly plné kapacity procesoru, a operačního systému spuštěného na každém počítači, což bude užitečné pro další analýzu.

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