Ejercicio: Identificación de máquinas con un uso elevado de CPU
Aquí, escribirá consultas KQL para recuperar y transformar datos de la tabla Perf
para comprender qué máquinas han alcanzado su capacidad de proceso total o están a punto de alcanzarla y qué máquinas se están infrautilizando.
1. Establecimiento de objetivos
Para solucionar problemas de rendimiento, mitigar los posibles incidencias e identificar las oportunidades de funcionar de forma más eficaz, quiere analizar el uso de la unidad de procesamiento central (CPU) de las máquinas virtuales en el entorno de TI.
Para identificar incidencias y oportunidades de rendimiento relacionados con la CPU para que sean más eficientes, necesita información sobre:
- Tendencias de uso de CPU de cada máquina activa.
- Uso de CPU de máquinas en horas punta y períodos de tranquilidad.
2. Evaluación de los registros
Los agentes de Windows y Linux envían contadores de rendimiento de componentes de hardware, sistemas operativos y aplicaciones que se ejecutan en máquinas supervisadas a la tabla Perf
de Azure Monitor.
Vamos a ejecutar una consulta sencilla en la tabla Perf
para recuperar registros de las últimas 24 horas y obtener una idea del esquema de la tabla y de los datos que esta contiene:
Haga clic para ejecutar la consulta en el entorno de demostración de Log Analytics
Perf // The table you’re querying
| where TimeGenerated > ago(1d) // Filters for entries generated in the past day
Puede ver que las columnas TimeGenerated
, Computer
, ObjectName
, CounterName
, InstanceName
y CounterValue
contienen datos pertinentes para nuestro análisis.
En la columna ObjectName
se enumeran los nombres de todos los objetos para los que Azure Monitor recopila datos de las máquinas supervisadas. La columna CounterName
contiene los nombres de los distintos contadores de rendimiento que Azure Monitor recopila. Ambas columnas contienen muchos valores, muchos de los cuales aparecen varias veces. Para ver claramente los valores distintos de estas columnas y determinar qué contadores son pertinentes para el análisis actual, vamos a ejecutar esta consulta:
Haga clic para ejecutar la consulta en el entorno de demostración de Log Analytics
Perf // The table you’re querying
| distinct ObjectName,CounterName // Lists distinct combinations of ObjectName and CounterName values
En esta captura de pantalla se muestran las distintas combinaciones de los valores ObjectName
y CounterName
en la columna CounterName
en las últimas 24 horas:
El contador % Processor Time
le proporciona una descripción del uso del procesador o de la unidad de procesamiento central (CPU). Esta es la información que necesita.
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. | Supervise el rendimiento del procesador. | where ObjectName == "Processor" Para obtener más información, vea Operador == (igual a). |
CounterName |
Contiene los nombres de todos los contadores de rendimiento de la tabla. | Supervise el contador de rendimiento % Processor Time . |
where CounterName == "% Processor Time" Para obtener más información, consulte Operador where y Operador == (igual que). |
InstanceName |
Enumera las instancias supervisadas del objeto supervisado. | Supervise todos los núcleos del procesador. | where 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 del contador de rendimiento % Processor Time . |
summarize min(CounterValue), avg(CounterValue), max(CounterValue), percentiles(CounterValue, 90,99) Para obtener más información, vea Operador summarize y las funciones de agregación min(), max(), avg() y percentiles(). |
3. Escritura de la consulta
Escriba una consulta que resuma el uso medio, mínimo y máximo de CPU de todas las máquinas durante el último día.
Recupere todos los registros generados en el último día que el contador de rendimiento
% Processor Time
notificó:Haga clic para ejecutar la consulta en el entorno de demostración de Log Analytics.
Perf // The table you’re querying | where TimeGenerated > ago(1d) and ObjectName == "Processor" and CounterName == "% Processor Time" and InstanceName == "_Total" // Filters for entries generated in the past day related to total processor time measurements
Esta consulta recupera todos los registros relacionados con las medidas de tiempo total del procesador desde el último día.
Busque los valores de contador mínimo, máximo y promedio y calcule los valores del contador de percentil 90 y 99 para cada equipo:
Haga clic para ejecutar la consulta en el entorno de demostración de Log Analytics
Perf // The table you’re querying | where TimeGenerated > ago(1d) and ObjectName == "Processor" and CounterName == "% Processor Time" and InstanceName == "_Total" // Filters for entries generated in the past day related to total processor time measurements | summarize min(CounterValue), avg(CounterValue), max(CounterValue), percentiles(CounterValue, 90,99) by Computer // Presents the minimum, maximum, average, 90th and 99th percentile counter values for each computer
El conjunto de resultados de esta consulta muestra los valores del contador
% Processor Time
mínimo, máximo, promedio y de los percentiles 90 y 99 para cada equipo para el que hay datos en el área de trabajo de Log Analytics.Filtre los resultados de la consulta para las entradas en las que el valor del contador
% Processor Time
sea superior a 80 en el intervalo de los percentiles 90 y 99:Haga clic para ejecutar la consulta en el entorno de demostración de Log Analytics
Perf // The table you’re querying | where TimeGenerated > ago(1d) and ObjectName == "Processor" and CounterName == "% Processor Time" and InstanceName == "_Total" // Filters for entries generated in the past day related to total processor time measurements | summarize min(CounterValue), avg(CounterValue), max(CounterValue), percentiles(CounterValue, 90,99) by Computer // Presents the minimum, maximum, average, 90th and 99th percentile counter values for each computer | where percentile_CounterValue_90 > 80 and percentile_CounterValue_99 > 80 // Filters previous query results for instances where the 90th and 99th percentile counters are higher than 80
El conjunto de resultados de esta consulta consta de todos los equipos para los que los valores superiores del 10 % y el 15 %
% Processor Time
son superiores a 80.
Desafío: incorporación de información del sistema operativo de la tabla Heartbeat a los resultados de la consulta
A menudo, los resultados de la consulta se pueden comprender mejor mediante la correlación de información de una tabla diferente a los resultados de la consulta mediante el operador join
. Para más información, consulte el operador join.
¿Puede usar el operador join
para agregar información sobre el sistema operativo que se ejecuta en cada equipo, que está disponible en la tabla Heartbeat
, como vimos en el primer ejercicio?
Solución:
Agregue información de la tabla
Heartbeat
sobre el sistema operativo que se ejecuta en cada uno de los equipos de los resultados de la consulta:Haga clic para ejecutar la consulta en el entorno de demostración de Log Analytics
Perf // The table you’re querying | where TimeGenerated > ago(1d) and ObjectName == "Processor" and CounterName == "% Processor Time" and InstanceName == "_Total" // Filters for entries generated in the past day related to total processor time measurements | summarize min(CounterValue), avg(CounterValue), max(CounterValue), percentiles(CounterValue, 90,99) by Computer // Presents the minimum, maximum, average, 90th and 99th percentile counter values for each computer | where percentile_CounterValue_90 > 80 and percentile_CounterValue_99 > 80 // Filters previous query results for instances where the 90th and 99th percentile counters are higher than 50 | join kind=inner (Heartbeat // Introduces data from the "Heartbeat" table to the previous query results | where TimeGenerated > ago(1d) // Time range for the data added from the "Heartbeat" table | distinct Computer, OSType) on Computer // Adds distinct combinations of computer and operating system
Esta iteración de la consulta agrega las columnas
Computer
yOSType
de la tablaHeartbeat
a los resultados de la consulta anterior.La columna
Computer
aparece ahora dos veces en los resultados de la consulta: una vez por la consulta de la tablaPerf
y una vez por la consulta de la tablaHeartbeat
. Se ha cambiado el nombre de la columnaComputer
de la tablaHeartbeat
aComputer1
, pero las dos tablas contienen datos idénticos. Tener ambas columnas permite correlacionar los resultados de las dos tablas, pero ahora puede filtrar la columna duplicada.Quite la columna
Computer1
de los resultados de la consulta:Haga clic para ejecutar la consulta en el entorno de demostración de Log Analytics
Perf // The table you’re querying | where TimeGenerated > ago(1d) and ObjectName == "Processor" and CounterName == "% Processor Time" and InstanceName == "_Total" // Filters for entries generated in the past day related to total processor time measurements | summarize min(CounterValue), avg(CounterValue), max(CounterValue), percentiles(CounterValue, 90,99) by Computer // Presents the minimum, maximum, average, 90th and 99th percentile counter values for each computer | where percentile_CounterValue_90 > 80 and percentile_CounterValue_99 > 80 // Filters previous query results for instances where the 90th and 99th percentile counters are higher than 50 | join kind=inner (Heartbeat // Introduces data from the "Heartbeat" table to the previous query results | where TimeGenerated > ago(1d) // Time range for the data added from the "Heartbeat" table | distinct Computer, OSType) on Computer // Adds distinct combinations of computer and operating system | project-away Computer1 // Removes the "Computer1" column from the query results
El conjunto de resultados de esta consulta enumera todos los equipos que alcanzaron su capacidad de CPU completa y el sistema operativo que se ejecuta en cada equipo, lo que será útil para su posterior análisis.