Exercício - Resumir estatísticas de espaço livre por computador
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.
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
:
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 - % 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. |
|
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 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 Space e Free Megabytes . |
|
3. Escreva a sua consulta
Recupere todos os logs gerados nas últimas 24 horas que reportaram os contadores de desempenho
% Used Space
,% Free Space
eFree Megabytes
para os objetosLogicalDisk
eLogical 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
% 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.
Converta
Free Megabytes
em Gigabytes (valorFree Megabytes
* 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?
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:
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.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.