Ejercicio: Resumen de estadísticas de espacio libre por equipo
Aquí, recuperará y transformará los datos de la tabla Perf
, mediante consultas de KQL, para analizar el espacio libre de los equipos que registran datos en el área de trabajo de Log Analytics.
1. Establecimiento de objetivos
Recuerde que el equipo de TI ha observado problemas recurrentes relacionados con un espacio libre insuficiente en las máquinas virtuales.
Para analizar el uso de espacio libre de las máquinas que se ejecutan en el entorno de TI, necesita información sobre:
- Espacio disponible total en cada máquina.
- Porcentaje de espacio usado en cada máquina.
2. Evaluación de los registros
Como vimos en el ejercicio anterior, la tabla Perf
proporciona información sobre el rendimiento de los componentes de hardware, los sistemas operativos y las aplicaciones.
Hemos observado que la columna ObjectName
de la Perf
tabla enumera los nombres de todos los objetos que se supervisan y la columna CounterName
contiene los nombres de los distintos contadores de rendimiento que recopila Azure Monitor. También vimos que ambas columnas contienen muchos valores, muchos de los cuales aparecen varias veces.
Vamos a ejecutar una consulta en la tabla Perf
para enumerar valores ObjectName
distintivos:
Haga clic para ejecutar la consulta en el entorno de demostración de Log Analytics
Perf // The table you’re querying
| distinct ObjectName // Lists distinct ObjectName values
El conjunto de resultados de esta consulta incluye todos los valores ObjectName
que se encuentran actualmente en la tabla:
En nuestro escenario, estamos interesados en analizar máquinas virtuales, por lo que los objetos que queremos examinar son LogicalDisk
y Logical Disk
(para supervisar la memoria en una máquina física, examinaría el objeto memory
). La razón por la que hay dos objetos con nombre similar es que LogicalDisk
es el nombre del objeto en los registros de Windows mientras que Logical Disk
se usa en los registros de Linux.
Para enumerar los nombres distintivos de los contadores que recopila Azure Monitor para los objetos LogicalDisk
y Logical Disk
, ejecute:
Haga clic para ejecutar la consulta en el entorno de demostración de 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
El conjunto de resultados de esta consulta incluye todos los contadores de rendimiento recopilados para los objetos LogicalDisk
y Logical Disk
:
Los contadores de rendimiento que proporcionan información sobre el espacio libre y usado son % Used Space
, % Free Space
y Free Megabytes
. Tenemos dos contadores similares (% Free Space
y % Used Space
) recopilados de registros de Windows y Linux, respectivamente.
Vamos a evaluar cómo podemos usar estos datos y qué operaciones de KQL pueden ayudar a extraer y transformar los datos:
Columna | Descripción | Objetivo del análisis | Operaciones de KQL relacionadas |
---|---|---|---|
TimeGenerated |
Indica cuándo generó la máquina virtual cada registro. | Defina el ámbito de tiempo del análisis. | where TimeGenerated > ago(1d) Para obtener más información, consulte ago(),Operador where y Operadores numéricos. |
Computer |
Equipo desde el que se recopiló el evento. | Asocie el uso de CPU a un equipo específico. | summarize... by Computer Para obtener más información, vea Operador summarize. |
ObjectName |
Contiene los nombres de todos los objetos para los que la tabla contiene datos de rendimiento. Para su análisis, está interesado en los objetos LogicalDisk y Logical Disk . |
Supervise los discos lógicos en máquinas virtuales. | where ObjectName == "LogicalDisk" or ObjectName == "Logical Disk" Para obtener más información, consulte Operador where y Operador == (igual que). |
CounterName |
Contiene los nombres de todos los contadores de rendimiento de la tabla. |
|
where CounterName == "Free Megabytes" or CounterName =="% Free Space" or CounterName == "% Used Space" Para simplificar los resultados y facilitar el análisis posterior:
|
InstanceName |
Enumera las instancias supervisadas del objeto supervisado. | Supervise todas las unidades de la máquina virtual. | InstanceName == "_Total" Para obtener más información, consulte Operador where y Operador == (igual que). |
CounterValue |
Medida recopilada para el contador. | Recupere las medidas de rendimiento de los contadores de rendimiento % Used Space , % Free Space y Free Megabytes . |
|
3. Escritura de la consulta
Recupere todos los registros generados en el último día que notificaron los contadores de rendimiento
% Used Space
,% Free Space
yFree Megabytes
para los objetosLogicalDisk
yLogical Disk
:Haga clic para ejecutar la consulta en el entorno de demostración de 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
El conjunto de resultados de esta consulta probablemente incluye varios registros para cada máquina desde la que se recopilan contadores de rendimiento relacionados con el espacio libre.
Filtre por el último valor de contador recopilado para cada contador notificado por cada máquina virtual:
Haga clic para ejecutar la consulta en el entorno de demostración de 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
Ahora tiene el último valor de contador notificado para cada contador relacionado con el espacio libre de cada máquina.
Para facilitar el análisis:
Convierta el valor del contador
% Used Space
a% Free Space
(restando el valor% Used Space
del 100 %) y cambie el nombre de la columna% Used Space
a% Free Space
:Haga clic para ejecutar la consulta en el entorno de demostración de 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
El conjunto de resultados de esta consulta presenta el porcentaje de espacio libre en máquinas Windows y Linux de la misma manera, lo que hace que el análisis sea más claro y fácil.
Convierta
Free Megabytes
a Gigabytes (valorFree Megabytes
* 0,001 = Gigabytes libres) y vuelva a etiquetarFree Megabytes
aOverallFreeSpaceInGB
:Haga clic para ejecutar la consulta en el entorno de demostración de 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
Ahora puede obtener una imagen clara del espacio libre total en cada máquina en gigabytes y como porcentaje de la memoria total de la máquina.
Desafío: Agrupación de estadísticas de espacio libre para cada equipo
El conjunto de resultados de nuestra consulta hasta ahora incluye dos líneas para cada equipo: una línea muestra el espacio libre total en gigabytes y el otro muestra el porcentaje de espacio libre disponible.
¿Puede crear un diccionario que incluya estas dos estadísticas de espacio libre juntas para cada máquina virtual?
Sugerencia:
- Use la función bag_pack() para crear pares clave-valor para cada uno de los dos contadores de rendimiento.
- Use la función de agregación make_bag() para agrupar ambos valores clave-valor para cada equipo.
Solución:
Agrupe los pares clave-valor
CounterName, CounterValue
:Haga clic para ejecutar la consulta en el entorno de demostración de 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
La agrupación de pares clave-valor
CounterName, CounterValue
permite crear un diccionario de estadísticas de espacio libre para cada equipo en el paso siguiente.Cree un contenedor de propiedades (diccionario), denominado SpaceStats, de todas las estadísticas de espacio libre recopiladas para cada máquina, resuma por equipo y filtre las máquinas con menos del 50 % de espacio libre:
Haga clic para ejecutar la consulta en el entorno de demostración de 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
El conjunto de resultados de esta consulta resume las estadísticas de espacio libre por máquina, que era el objetivo del análisis de espacio libre.
La última línea de la consulta filtra las máquinas con menos de 50 % de espacio libre. Es posible que quiera supervisarlas o analizarlas más detenidamente, o volver a configurarlas para asegurarse de que no se queden sin espacio.