Exercício - Resumir estatísticas de espaço livre por computador
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:
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
:
Os contadores de desempenho que fornecem informações sobre espaço livre e usado são % Used Space
, % Free Space
e 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. |
|
where CounterName == "Free Megabytes" or CounterName =="% Free Space" or CounterName == "% Used Space" Para simplificar os resultados e facilitar uma análise mais aprofundada:
|
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 Space e Free Megabytes desempenho. |
|
3. Escreva a sua consulta
Recupere todos os logs gerados no dia anterior que relataram os contadores , e de desempenho para os
LogicalDisk
% Used Space
% Free Space
objetos 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.
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.
Para facilitar a análise:
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.
Converta
Free Megabytes
em Gigabytes (Free Megabytes
valor * 0,001 = Gigabytes Livres) e rerotuleFree Megabytes
paraOverallFreeSpaceInGB
: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.
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:
- 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 agrupar ambos os valores chave-valor para cada computador.
Solução:
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.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.