Exercício - Resumir estatísticas de espaço livre por computador

Concluído

Aqui, você recuperará e transformará dados da tabela Perf, usando consultas KQL, para analisar o espaço livre das máquinas registrando dados em seu espaço de trabalho do Log Analytics.

1. Estabeleça metas

Lembre-se de que sua equipe de TI notou problemas recorrentes relacionados ao espaço livre insuficiente em máquinas virtuais.

Para analisar o uso de espaço livre de máquinas em execução em seu ambiente de TI, você precisa de informações sobre:

  • Espaço livre total disponível em cada máquina.
  • Percentagem de espaço utilizado em cada máquina.

2. Avalie os logs

Como vimos no exercício anterior, a tabela Perf fornece informações sobre o desempenho de componentes de hardware, sistemas operacionais e aplicativos.

Observamos que a coluna ObjectName da tabela Perf lista os nomes de todos os objetos que estão sendo monitorados e a coluna CounterName contém os nomes dos vários contadores de desempenho que o Azure Monitor coleta. Também vimos que ambas as colunas possuem muitos valores, muitos dos quais aparecem várias vezes.

Vamos executar uma consulta na tabela Perf para listar valores de ObjectName distintos:

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

Perf // The table you’re querying
| distinct ObjectName // Lists distinct ObjectName values

O conjunto de resultados desta consulta inclui todos os valores ObjectName atualmente na tabela.

Captura de tela que mostra os resultados da consulta Nome de objeto distinto na tabela Perf com os valores de disco lógico realçados.

Em nosso cenário, estamos interessados em analisar máquinas virtuais, então os objetos que queremos examinar são LogicalDisk e Logical Disk (para monitorar a memória em uma máquina física, você olharia para o objeto memory). A razão pela qual existem dois objetos com nomes semelhantes é que LogicalDisk é o nome do objeto nos registros do Windows, enquanto Logical Disk é usado nos registros do Linux.

Para listar os nomes distintos dos contadores que o Azure Monitor coleta para os objetos LogicalDisk e Logical Disk, execute:

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

O conjunto de resultados desta consulta inclui todos os contadores de desempenho coletados para os objetos LogicalDisk e Logical Disk:

Captura de tela que mostra os resultados de uma consulta que lista os nomes distintos dos contadores que o Azure Monitor coleta para os objetos LogicalDisk (escrito como uma palavra) e Logical Disk (escrito como duas palavras).

Os contadores de desempenho que fornecem informações sobre espaço livre e usado são % Used Space, % Free Spacee Free Megabytes. Temos dois contadores semelhantes - % Free Space e % Used Space - coletados de registros do Windows e Linux, respectivamente.

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 operador de resumo.
ObjectName Contém os nomes de todos os objetos para os quais a tabela contém dados de desempenho. Para a tua análise, estás interessado nos objetos LogicalDisk e Logical Disk. Monitore os discos lógicos em máquinas virtuais. where ObjectName == "LogicalDisk" or ObjectName == "Logical Disk"
Para obter mais informações, consulte onde o operador e == (igual) ao operador.
CounterName Contém os nomes de todos os contadores de desempenho na tabela.
  • Monitorize contadores relacionados com o espaço livre.
  • Renomeie % Used Space para % Free Space (em paralelo, converta os CounterValuerelacionados )
.
where CounterName == "Free Megabytes" or CounterName =="% Free Space" or CounterName == "% Used Space"
Para simplificar os resultados e facilitar uma análise mais aprofundada:
  • Altere % Used Space para % Free Space (CounterName = iff(CounterName=="% Used Space", "% Free Space", CounterName)).
  • Alterar Free Megabytes para OverallFreeSpaceInGB (CounterName= iff(CounterName=="Free Megabytes", "OverallFreeSpaceInGB", CounterName))
Para mais informações, consulte onde o operador e == (igual a) o operador.
InstanceName Lista as instâncias monitoradas do objeto monitorado. Monitore todas as unidades na máquina virtual. InstanceName == "_Total"
Para obter mais informações, consulte em que operador e == (igual) operador.
CounterValue A medida recolhida para o contador. Recupere medições de desempenho para os contadores de desempenho % Used Space, % Free Spacee Free Megabytes.
  • CounterValue = iff(CounterName=="% Used Space", 100-CounterValue, CounterValue)
  • CounterValue = iff(CounterName=="Free Megabytes", (CounterValue)*0.001, CounterValue)
Para obter mais informações, consulte , onde o operador e o operador == (é igual a) o operador.

3. Escreva a sua consulta

  1. Recupere todos os logs gerados nas últimas 24 horas que reportaram os contadores de desempenho % Used Space, % Free Spacee Free Megabytes para os objetos LogicalDisk e Logical Disk.

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

    O conjunto de resultados dessa consulta provavelmente inclui vários registros para cada máquina a partir da qual você coleta contadores de desempenho relacionados ao espaço livre.

    Captura de tela que mostra os resultados de uma consulta para logs gerados no dia anterior que relatam o espaço livre da máquina virtual.

  2. Filtre o último valor do contador coletado para cada contador relatado por cada máquina virtual:

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

    Agora você tem o último valor de contador relatado para cada contador relacionado ao espaço livre de cada máquina.

    Captura de tela que mostra os resultados de uma consulta que filtra o último valor de contador coletado para cada contador de cada máquina virtual.

  3. Para facilitar a análise:

    1. Converta o % Used Space valor do contador em % Free Space (subtraindo o valor % Used Space de 100%) e altere o nome da coluna % Used Space para % Free Space:

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

      O conjunto de resultados desta consulta apresenta a percentagem de espaço livre em máquinas Windows e Linux da mesma forma, o que torna a análise mais clara e fácil.

      Captura de tela que mostra os resultados de uma consulta que converte o valor do contador Porcentagem de Espaço Usado em Porcentagem de Espaço Livre.

    2. Converta Free Megabytes em Gigabytes (valorFree Megabytes * 0,001 = Gigabytes Livres) e rerotule Free Megabytes para OverallFreeSpaceInGB:

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

      Agora você pode obter uma imagem clara do espaço livre total em cada máquina em gigabytes e como uma porcentagem da memória total da máquina.

      Captura de tela que mostra os resultados de uma consulta que converte a coluna Megabytes livres em espaço livre geral em gigabytes.

Desafio: agrupar estatísticas de espaço livre para cada computador

O conjunto de resultados da nossa consulta até agora inclui duas linhas para cada computador - uma linha mostra o espaço livre total em Gigabytes e a outra mostra a percentagem de espaço livre disponível.

Você pode criar um dicionário que agrupe essas duas estatísticas de espaço livre juntas para cada máquina virtual?

Dica:

  • Use a função bag_pack() para criar pares chave-valor para cada um dos dois contadores de desempenho.
  • Use a função de agregação make_bag() para combinar ambos os valores valor-chave para cada computador.

Solução:

  1. Agrupe CounterName, CounterValue pares chave-valor:

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

    Agrupar os pares chave-valor CounterName, CounterValue permite criar um dicionário de estatísticas de espaço livre para cada computador na etapa seguinte.

    Captura de ecrã que mostra os resultados de uma consulta que agrupa os pares chave-valor de Nome do Contador e Valor do Contador.

  2. Crie uma coleção de atributos (dicionário), chamada SpaceStats, de todas as estatísticas de espaço livre coletadas para cada máquina, resuma as estatísticas por computador e filtre para máquinas com menos de 50% de espaço livre.

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

    O conjunto de resultados desta consulta resume as estatísticas de espaço livre por máquina, que era o objetivo da sua análise de espaço livre!

    A última linha da consulta filtra máquinas com menos de 50% de espaço livre. Talvez você queira monitorar ou analisar mais de perto, ou reconfigurá-los para garantir que não fiquem sem espaço.

    Captura de tela que mostra os resultados de uma consulta que resume estatísticas de espaço livre por máquina.