Gestión de WMI con PowerShell (Parte 6)

Seguimos con otro artículo sobre el manejo de CIM y WMI con PowerShell.

En este caso vamos a tratar un tema que me interesa bastante, que es la monitorización de recursos del sistema utilizando la gestión de eventos que podemos utilizar desde PowerShell a través de CIM y WMI.

CIM nos va a permite monitorizar todos los eventos de un sistema enviando notificaciones.

A partir de estos eventos podremos tomar acciones correctoras o simplemente almacenar información para tratarla después.

Sí, eso es, podemos montar nuestro propio SCOM 😛

Mediante la gestión de eventos que podemos realizar a través de CIM y WMI podemos predecir incidentes antes de que se produzcan, planteado patrones de monitorización que nos harán ir trazando distintos estados de nuestra infraestructura.

Podemos por ejemplo monitorizar el estado de la memoria RAM, de la CPU o de la red de un servidor Web para saber si está sobrecargándose. Podemos crear alertas si una carpeta común de un servidor de archivos de alcanza un umbral que nosotros consideramos peligroso.

Podemos establecer alertas en las que se escriba un archivo al llegar a un estado X, o enviar un e-mail o muchas otras opciones como enviar un SMS, o similar. Siempre dependiendo de la infraestructura con la que contemos.

Tal como he dicho, podemos crear nuestro propio System Center Operations Manager (SCOM por sus siglas), aunque claro, este será el hermano pequeño, muy pequeño de SCOM, a menos que nosotros seamos auténticos cracks con mucho tiempo libre y mucho conocimiento 😊

Una vez desarrollados los scripts de PowerShell y usando CIM y WMI podemos programarlos de manera periódica para que se ejecuten a lo largo de todo el día manteniéndonos informados de todo lo que pasa.

También podemos pensar en hacer estos scripts para sacar información que después pase a otros sistemas de monitorización como Nagios o el propio SCOM.

Podemos por ejemplo ver el espacio usado en un disco:

$query = “SELECT * FROM __InstanceModificationEvent

          WITHIN 60

          WHERE Targetinstance ISA ’Win32_LogicalDisk’

          AND TargetInstance.DeviceID = `”E:`”

          AND TargetInstance.FreeSpace < 53687091200″

Este script de por si solo no haría nada ya que solo mira si el sistema tiene menos de 50GB usados en “E:”.

Si queremos que se envíe un correo electrónico, deberemos añadir unas cuantas líneas más al script:

$action = {

   $e = $Event.SourceEventArgs.NewEvent

   $freeSpace = $e.TargetInstance.FreeSpace / 50GB

   $freeSpace = [System.Math]::Round($freeSpace,2)

   $message = “Se ha alcanzado el tamaño mínimo permitido. El espacio restante es: $FreeSpace GB”

   Send-MailMessage -To ’jioller@live.com’ -From ’monitorizacion@dtc2mobility.com’ `

     -Subject ’El espacio en disco es inferior al que ’ -Body $message -SMTPServer         `

     mail.dtc2mobility.com 

Register-CimIndicationEvent -Query $query -SourceID ’EspacioLibre’ -Action

$action

Seguimos con esto en otros artículos.

Un saludo

Sé el primero en comentar

Dejar una contestacion

Tu dirección de correo electrónico no será publicada.


*