Búsqueda de sitios web

Cómo configurar el monitoreo para alertar sobre el alto uso del sistema de Windows


Una de las herramientas más ignoradas en Windows es Perfmon, también conocida como monitor de rendimiento. Esta utilidad tiene muchas habilidades pasadas por alto, una de ellas es la capacidad de alertar sobre varias condiciones métricas. En este artículo, exploramos cómo usar correctamente la capacidad de alerta de Perfmon con un alto uso de CPU.

¿Qué es Perfmon?

Disponible desde los primeros días de Windows en varias iteraciones, Performance Monitor está disponible como un complemento de MMC para Windows destinado a ayudar a monitorear el uso del sistema y varias métricas de rendimiento. La vista predeterminada al iniciar destaca algunas áreas diferentes y métricas en tiempo real.

  • Monitor de rendimiento: visualización de métricas en tiempo real
  • Conjuntos de recopiladores de datos: recopilación definida de datos durante un intervalo de tiempo determinado
  • Informes: cómo ver los datos recopilados en los conjuntos de recopiladores de datos

Si el Monitor de rendimiento no se inicia como administrador, su utilidad será limitada y es posible que no vea los conjuntos de recopiladores de datos o los informes.

Visualización de métricas

Cuando haga clic por primera vez en el Monitor de rendimiento, se le mostrará un gráfico de líneas en movimiento cuyo valor predeterminado es %Processor Time. Esto, por sí solo, no es muy útil ya que los datos son un valor continuo y realmente queremos saber si hay condiciones adversas.

Puede agregar métricas adicionales a este gráfico haciendo clic en el signo más verde y agregando más métricas. Tenga en cuenta que la escala de valores puede no coincidir entre diferentes puntos de datos y, por lo tanto, puede ser menos útil cuando se combina en un solo gráfico.

Conjuntos de recopiladores de datos

Los datos en tiempo real son útiles, pero no son lo que buscamos en última instancia. Entonces, ¿cómo alertamos sobre ciertas condiciones, en este caso, un alto uso de CPU sostenido en el tiempo?

Aquí es donde entran los Conjuntos de recopiladores de datos. Después de expandir Conjuntos de recopiladores de datos, haga clic con el botón derecho en Definido por el usuario → Nuevo → Conjunto de recopiladores de datos.

Se le presentará la opción de nombrar el conjunto y si desea crear el conjunto a partir de una plantilla o crear el conjunto manualmente. En este caso, necesitamos crear manualmente nuestra configuración.

En este caso, estamos configurando una alerta de contador de rendimiento. Esto monitoreará un contador dado y luego podemos decirle a la alerta que tome ciertas acciones.

Dado que buscamos monitorear el porcentaje total de CPU, lo más importante es elegir la métrica correcta para monitorear. Aquí estamos eligiendo Procesador → _Total haciendo clic en Agregar >> junto a la instancia seleccionada.

Un problema es que obtienes todas las métricas de Processor _Total. En última instancia, solo queremos la métrica \Processor(_Total)\% Processor Time. Para eliminar los demás, seleccione cada uno y haga clic en el botón Eliminar.

Desafortunadamente, por la forma en que funciona la eliminación, no puede simplemente hacer clic en el botón Eliminar varias veces, ya que mueve el elemento seleccionado de nuevo a la parte superior cada vez. Seleccione cada métrica individualmente y haga clic en Eliminar.

Ahora debemos decirle al contador de rendimiento en qué punto debe comenzar la alerta y, en este caso, buscamos que la alerta solo esté por encima de 95.

Finalmente, guarde y cierre el Conjunto de recopiladores de datos.

Configuración de alertas

Con nuestra configuración predeterminada fuera del camino, ahora debemos configurar qué acción de alerta se llevará a cabo. Hay dos formas de configurar las alertas, Acción de alerta y Tarea de alerta. Seleccione su conjunto de recopiladores de datos User Defined → High CPU Usage, haga clic con el botón derecho en la entrada predeterminada DataCollector01 y seleccione Propiedades.

La forma más fácil de comenzar a monitorear las entradas es navegar a la pestaña Acción de alerta y hacer clic en la casilla de verificación Registrar una entrada en el registro de eventos de la aplicación. También tiene la opción conveniente de iniciar un conjunto de recopiladores de datos diferente cuando se cumplen los criterios para una alerta. De esta manera, puede recopilar registros adicionales según sea necesario. Aquí, sin embargo, solo vamos a registrar una entrada.

Configuración de una tarea de alerta

Todo esto está muy bien, pero en última instancia, no recibimos una alerta real en este caso, solo una nueva entrada en el registro de eventos. En la pestaña Tarea de alerta, podemos decirle a este recopilador de datos que inicie una tarea programada y envíe algunos parámetros, que luego pueden realizar las acciones de alerta que queramos. Para que esto funcione, necesitamos hacer dos cosas. Cree el script para ejecutar y la tarea programada en sí.

Guión de registro

A continuación se muestra un script de registro muy simple. Leemos las métricas de alerta generadas por la tarea de alerta y enviamos esos resultados a un archivo de registro.

HighCPUAlert.ps1

$Date      = $args[0]
$Threshold = $args[1]
$Counter   = $args[2]

$Value = "[{0}] {1} {2} | {3}" -F $Date, 'High CPU', $Threshold, $Counter

Add-Content -Value $Value -Path 'C:\HighCPUAlert.log'

Tarea programada

Aquí necesitamos crear la tarea programada que realmente ejecutará el script al ser invocado por el recopilador de datos. Usamos PowerShell para crear la tarea programada y usamos PowerShell 7 como tiempo de ejecución, como lo indica el ejecutable pwsh.exe.

$Params = @{
    "Action"    = New-ScheduledTaskAction -Execute "pwsh.exe" -Argument "-NoProfile -File C:\HighCPUAlert.ps1 $(Arg0)"
    "Principal" = New-ScheduledTaskPrincipal -UserId "LOCALSERVICE" -LogonType ServiceAccount
    "Settings"  = New-ScheduledTaskSettingsSet
}

New-ScheduledTask @Params | Register-ScheduledTask 'HighCPUAlert'

Hasta que se lance formalmente PowerShell 7, el ejecutable puede ser pwsh-preview.exe.

Configuración de tareas de alerta

Finalmente, necesitamos configurar la tarea de alerta en el recopilador de datos. Para hacer esto, navegue nuevamente a las propiedades de DataCollector01 e ingrese los siguientes detalles.

Citamos los argumentos de la tarea porque vienen como cadenas a PowerShell. Por lo tanto, al citarlos, facilitamos la separación de los argumentos por índice, es decir, $arg[0] o $arg[1].

Una vez que haga clic en guardar, es posible que se le solicite una credencial, debe ser un usuario con acceso de administrador.

Ejecución del recopilador de datos

Al hacer clic con el botón derecho en el Conjunto de recopiladores de datos, Alto uso de CPU y seleccionar Iniciar, comenzará el proceso de recopilación. Si supervisa las tareas programadas, verá que la tarea programada recién creada se ejecuta periódicamente según el intervalo de supervisión y el umbral establecido.

Conclusión

Al usar las herramientas de monitoreo integradas de Windows, puede estructurar algunas soluciones de monitoreo útiles y potentes en torno a las utilidades principales y PowerShell. ¡Con esta flexibilidad, podrá llegar al fondo de casi cualquier problema que pueda diagnosticarse a través de la recopilación de datos métricos!

Artículos relacionados: