Exercício: Resumir as 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 dos dados de registro em log de máquinas no workspace do Log Analytics.
1. Definir metas
Lembre-se de que sua equipe de TI notou problemas recorrentes relacionados a espaço livre insuficiente em máquinas virtuais.
Para analisar o uso de espaço livre de máquinas em execução no ambiente de TI, você precisa das seguintes informações:
- Espaço livre total disponível em cada máquina.
- Porcentagem de espaço usado em cada máquina.
2. Avaliar logs
Como visto no exercício anterior, a tabela Perf
fornece informações sobre o desempenho de componentes de hardware, sistemas operacionais e aplicativos.
Você notou que a coluna ObjectName
da tabela Perf
lista os nomes de todos os objetos sendo monitorados e que a coluna CounterName
contém os nomes dos diversos contadores de desempenho coletados pelo Azure Monitor. Também viu que essas duas colunas contêm muitos valores, que aparecem diversas vezes.
Você executará uma consulta na tabela Perf
para listar valores 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:
Como você deseja analisar máquinas virtuais no cenário atual, deve utilizar os objetos LogicalDisk
e Logical Disk
(para monitorar a memória em um computador físico, é necessário utilizar o objeto memory
). A razão pela qual há dois objetos com nomes semelhantes é que LogicalDisk
é o nome do objeto nos registros do Windows e Logical Disk
é usado nos registros do Linux.
Para listar os nomes distintos dos contadores coletados pelo Azure Monitor para os objetos LogicalDisk
e Logical Disk
, execute o seguinte:
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 o espaço usado e livre são % Used Space
, % Free Space
e Free Megabytes
. Há dois contadores semelhantes (% Free Space
e % Used Space
) que são coletados dos registros do Windows e do 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 | Meta de análise | Operações de KQL relacionadas |
---|---|---|---|
TimeGenerated |
Indica quando a máquina virtual gerou cada log. | Defina o escopo de tempo da análise. | where TimeGenerated > ago(1d) Para obter mais informações, veja ago(), operador where e operadores numéricos. |
Computer |
Computador do qual o evento foi coletado. | Associe o uso da CPU a um computador específico. | summarize... by Computer Para obter mais informações, vejaoperador summarize. |
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 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, veja operador where e operador == (igual a). |
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 análises adicionais:
|
InstanceName |
Lista as instâncias monitoradas do objeto monitorado. | Monitore todas as unidades na máquina virtual. | InstanceName == "_Total" Para obter mais informações, veja operador where e operador == (igual a). |
CounterValue |
A medida coletada para o contador. | Recupere as medições de desempenho dos contadores de desempenho % Used Space , % Free Space e Free Megabytes . |
|
3. Escreva sua consulta
Recupere todos os logs gerados no dia anterior que relataram 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 diversos registros para cada máquina da qual você coleta contadores de desempenho relacionados ao espaço livre.
Filtre pelo último valor coletado de 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 relatado de cada contador relacionado ao espaço livre de cada máquina.
Para facilitar a análise:
Converta o valor do contador
% Used Space
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 dessa consulta apresenta a porcentagem de espaço livre nas máquinas Windows e Linux da mesma forma, o que torna as análises posteriores mais claras e fáceis.
Converta
Free Megabytes
em Gigabytes (valorFree Megabytes
* 0.001 = Gigabytes livres) e altere o rótulo deFree 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 é possível obter uma imagem clara do espaço livre total em cada máquina, em gigabytes, como uma porcentagem da memória total da máquina.
Desafio: Reunir as estatísticas de espaço livre de cada computador
Até agora, o conjunto de resultados da consulta inclui duas linhas para cada computador: uma mostrando o espaço livre geral em gigabytes e outra mostrando a porcentagem de espaço livre disponível.
É possível criar um dicionário que agrupe essas duas estatísticas de espaço livre 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 agrupar os dois valores chave-valor para cada computador.
Solução:
Agrupe os pares chave-valor
CounterName, CounterValue
: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 próxima etapa.Crie um pacote de propriedades (dicionário), chamado SpaceStats, com 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, o que era o objetivo da análise de espaço livre.
A última linha da consulta filtra máquinas com menos de 50% de espaço livre. É possível monitorar ou analisar mais detalhadamente ou reconfigurá-las para garantir que não fiquem sem espaço.