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

Concluído

Aqui, você recuperará e transformará dados da Perf tabela, 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 Perf tabela fornece informações sobre o desempenho de componentes de hardware, sistemas operacionais e aplicativos.

Observamos que a coluna da tabela lista os nomes de todos os objetos que estão sendo monitorados ObjectName e a Perf CounterName coluna 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 Perf tabela para listar valores distintos ObjectName :

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 ObjectName valores atualmente na tabela:

Screenshot that shows the results of the Distinct Object Name query on the Perf table with the Logical Disk values highlighted.

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 memory objeto). A razão pela qual existem dois objetos com nomes semelhantes é que LogicalDisk é o nome do objeto em registros do Windows enquanto Logical Disk é usado em registros do Linux.

Para listar os nomes distintos dos contadores que o Azure Monitor coleta para os LogicalDisk objetos 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 LogicalDisk objetos e Logical Disk :

Screenshot that shows the results of a query that lists the distinct names of the counters Azure Monitor collects for the LogicalDisk (written as one word) and Logical Disk (written as two words) objects.

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 - e - % Free Space coletados de registros do Windows e % Used Space Linux, respectivamente.

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

Column Description 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 operador e 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 sua análise, você está interessado no LogicalDisk e Logical Disk objetos. Monitore os discos lógicos em máquinas virtuais. where ObjectName == "LogicalDisk" or ObjectName == "Logical Disk"
Para obter mais informações, consulte onde operador e == (igual) operador.
CounterName Contém os nomes de todos os contadores de desempenho na tabela.
  • Monitore contadores relacionados ao espaço livre.
  • Renomeie % Used Space para % Free Space (em paralelo, converta o relacionado CounterValue)
.
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 obter mais informações, consulte onde operador e == (igual) 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 onde operador e == (igual) operador.
CounterValue A medida recolhida para o contador. Recupere medições de desempenho para os contadores , % Used Space% Free Spacee Free Megabytes desempenho.
  • CounterValue = iff(CounterName=="% Used Space", 100-CounterValue, CounterValue)
  • CounterValue = iff(CounterName=="Free Megabytes", (CounterValue)*0.001, CounterValue)
Para obter mais informações, consulte onde operador e == (igual) operador.

3. Escreva a sua consulta

  1. Recupere todos os logs gerados no dia anterior que relataram os contadores , e de desempenho para os LogicalDisk % Used Space% Free Spaceobjetos e :Free Megabytes 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.

    Screenshot that shows the results of a query for logs generated in the past day that report on virtual machine free space.

  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.

    Screenshot that shows the results of a query that filters for the last counter value collected for each counter every virtual machine.

  3. Para facilitar a análise:

    1. Converta o valor do contador em (subtraindo o % Used Space % Used Space valor de 100%) e altere o % Used Space nome da coluna para % Free Space:% 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.

      Screenshot that shows the results of a query that converts the Percentage Used Space counter value to Percentage Free Space.

    2. Converta Free Megabytes em Gigabytes (Free Megabytes valor * 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.

      Screenshot that shows the results of a query that converts the Free Megabytes column to Overall Free Space In 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?

Sugestão:

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
    

    O agrupamento de pares chave-valor permite criar um dicionário de estatísticas de CounterName, CounterValue espaço livre para cada computador na próxima etapa.

    Screenshot that shows the results of a query that groups together Counter Name and Counter Value key-value pairs.

  2. Crie um pacote de propriedades (dicionário), chamado SpaceStats, de todas as estatísticas de espaço livre coletadas para cada máquina, resuma 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.

    Screenshot that shows the results of a query that summarizes free space statistics by machine.