Exercício - Identificar máquinas com alto uso de CPU

Concluído

Aqui, você escreverá consultas KQL para recuperar e transformar dados da tabela Perf para obter uma compreensão de quais máquinas atingiram ou estão se aproximando de sua capacidade total de computação e quais máquinas estão sendo subutilizadas.

1. Estabeleça metas

Para resolver problemas de desempenho, mitigar possíveis problemas e identificar oportunidades de operar com mais eficiência, você deseja analisar o uso da unidade central de processamento (CPU) de máquinas virtuais em seu ambiente de TI.

Para identificar problemas de desempenho relacionados à CPU e oportunidades para se tornar mais eficiente, você precisa de informações sobre:

  • Tendências de uso da CPU de cada máquina ativa.
  • Uso de CPU de máquinas em horários de pico e silêncio.

2. Avalie os logs

Os agentes Windows e Linux enviam contadores de desempenho de componentes de hardware, sistemas operacionais e aplicativos executados em máquinas monitoradas para a tabela Perf no Azure Monitor.

Vamos executar uma consulta simples na tabela Perf para recuperar logs das últimas 24 horas e ter uma noção do esquema da tabela e dos dados que a tabela retém:

Clique para executar a consulta no ambiente de demonstração do Log Analytics

Perf  // The table you’re querying
| where TimeGenerated > ago(1d) // Filters for entries generated in the past day 

Captura de tela que mostra os resultados de uma consulta na tabela Perf com as colunas ObjectName, CounterName, InstanceName e CounterValue realçadas.

Você pode ver que as colunas TimeGenerated, Computer, ObjectName, CounterName, InstanceNamee CounterValue contêm dados relevantes para nossa análise.

A coluna ObjectName lista os nomes de todos os objetos para os quais o Azure Monitor coleta dados de máquinas monitoradas. A coluna CounterName contém os nomes dos vários contadores de desempenho que o Azure Monitor coleta. Ambas as colunas contêm muitos valores, muitos dos quais aparecem várias vezes. Para ver claramente os valores distintos nessas colunas e determinar quais contadores são relevantes para a análise atual, vamos executar esta consulta:

Clique para executar a consulta no ambiente de demonstração do Log Analytics

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

Esta captura de tela mostra as combinações distintas de valores de ObjectName e CounterName na coluna CounterName nas últimas 24 horas:

Captura de tela que mostra os resultados da consulta CounterName distinta na tabela Perf com o valor Porcentagem de Tempo do Processador realçado.

O contador de % Processor Time fornece uma compreensão da utilização do processador, ou Unidade Central de Processamento (CPU). Esta é a informação que você precisa!

Vamos avaliar como podemos usar esses dados e quais operações KQL podem ajudar a extrair e transformar os dados:

Coluna Descrição Objetivo da análise Operações KQL relacionadas
TimeGenerated Indica quando a máquina virtual gerou cada log. Definir o escopo temporal da análise. where TimeGenerated > ago(1d)
Para obter mais informações, consulte ago(), onde o operadore Operadores numéricos.
Computer Computador a partir do qual o evento foi recolhido. Associe o uso da CPU a um computador específico. summarize... by Computer
Para obter mais informações, consulte o operador de resumo .
ObjectName Contém os nomes de todos os objetos para os quais a tabela contém dados de desempenho. Monitore o desempenho do processador. where ObjectName == "Processor"
Para obter mais informações, consulte operador == (igual).
CounterName Contém os nomes de todos os contadores de desempenho na tabela. Monitore o contador de desempenho % Processor Time. where CounterName == "% Processor Time"
Para mais informações, consulte onde o operador e == (equivale a) o operador.
InstanceName Lista as instâncias sob monitorização do objeto em observação. Monitore todos os núcleos do processador. where InstanceName == "_Total"
Para obter mais informações, consulte , onde o operador e == (igual) ao operador.
CounterValue A medição recolhida para o contador. Recupere medições de desempenho para o contador de desempenho % Processor Time. summarize min(CounterValue), avg(CounterValue), max(CounterValue), percentiles(CounterValue, 90,99)
Para obter mais informações, consulte o operador de resumo e as funções de agregação min(), max(), avg()e percentis().

3. Escreva a sua consulta

Escreva uma consulta que resuma o uso médio, mínimo e máximo da CPU de todas as máquinas no dia anterior.

  1. Recupere todos os logs gerados no dia anterior que relataram o contador de desempenho % Processor Time:

    Clique para executar a consulta no ambiente de demonstração do 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  
    

    Esta consulta recupera todos os logs relacionados às medições de tempo total do processador do dia anterior.

    Captura de ecrã que mostra os resultados de uma consulta para todos os logs gerados no dia anterior que relataram o contador de desempenho Percentagem de Tempo de Processador.

  2. Encontre os valores mínimos, máximos e médios dos contadores e calcule os valores dos contadores dos percentis 90 e 99 para cada computador:

    Clique para executar a consulta no ambiente de demonstração do 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 
    

    O conjunto de resultados desta consulta mostra os valores mínimos, máximos, médios, e os percentis 90 e 99 dos contadores % Processor Time para cada computador onde existem dados no seu espaço de trabalho do Log Analytics.

    Captura de tela que mostra os resultados mínimos, máximos, médios, percentis 90 e 99 da consulta na tabela Perf.

  3. Filtre os resultados da consulta para entradas em que o valor do contador de % Processor Time é superior a 80 no intervalo de percentis 90 e 99:

    Clique para executar a consulta no ambiente de demonstração do 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
    

    O conjunto de resultados desta consulta consiste em todos os computadores para os quais os 10 principais% e 15% % Processor Time valores são superiores a 80.

    Captura de ecrã que mostra os resultados de uma consulta que filtra entradas em que o valor do contador Percentagem de Tempo do Processador é superior a 80 no intervalo de percentis 90 e 99.

Desafio: Adicionar informações do sistema operacional da tabela Heartbeat aos resultados da consulta

Muitas vezes, você pode entender melhor os resultados da consulta correlacionando informações de uma tabela diferente com os resultados da consulta usando o operador join. Para obter mais informações, consulte o operador de junção .

Você pode usar o operador join para adicionar informações sobre o sistema operacional em execução em cada computador, que está disponível na tabela Heartbeat, como vimos no primeiro exercício?

Solução:

  1. Adicione informações da tabela Heartbeat sobre o sistema operacional em execução em cada um dos computadores nos resultados da consulta:

    Clique para executar a consulta no ambiente de demonstração do 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 
    

    Esta iteração da consulta adiciona as colunas Computer e OSType da tabela Heartbeat aos resultados da consulta anterior.

    Captura de tela que mostra os resultados de uma consulta que adiciona informações do sistema operacional da tabela Heartbeat aos resultados da consulta anterior.

    A coluna Computer agora aparece duas vezes nos resultados da consulta - uma vez da consulta na tabela Perf e outra da consulta na tabela Heartbeat. A coluna Computer da tabela Heartbeat foi renomeada Computer1, mas as duas tabelas contêm dados idênticos. Ter ambas as colunas permite correlacionar os resultados das duas tabelas, mas agora você pode filtrar a coluna duplicada.

  2. Remova a coluna Computer1 dos resultados da consulta:

    Clique para executar a consulta no ambiente de demonstração do 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 
    

    O conjunto de resultados desta consulta lista todos os computadores que atingiram a sua capacidade total de CPU e o sistema operativo em execução em cada computador, o que será útil para uma análise mais aprofundada.

    Captura de ecrã que mostra os resultados de uma consulta que remove a coluna Computador 1 dos resultados da consulta anterior.