sábado, 27 de marzo de 2010

Espacio libre

En un entorno con varios servidores en red, una de las cosas más importantes y que más suele pasar desapercibida es el espacio libre de sus discos duros.

Si una partición de un disco duro de un servidor comienza a quedarse sin espacio libre, las consecuencias suelen ser:
  • Caída del rendimiento del servidor que contenga la partición.
  • Caída del rendimiento de los servicios que utilicen tal servidor.
  • Con el tiempo, la interrupción de los servicios que utilicen tal servidor.
  • Si el servicio interrumpido se dedica a tareas de seguridad, mal vamos.
Para evitar esto de forma proactiva es conveniente conocer, por lo menos una vez a la semana, el espacio libre de cada partición de cada disco duro de cada servidor de la red, y si este espacio libre es menor que 1GB (por ejemplo), se avisaría al administrador del sistema para que remedie esta situación.

Automatizar lo anterior en un Directorio Activo con muchos servidores es posible utilizando Powershell y las Tareas Programadas en algún servidor.

Para ello, he escrito el script freespace.ps1 que busca en el Directorio Activo los nombres de todos sus servidores. Después, el script realiza las consultas adecuadas a los servidores dados, filtra resultados y si es necesario envía un email con la información pertinente al administrador del sistema para que pase a la acción.

freespace.ps1 debe estar ubicado en una carpeta de trabajo, por ejemplo, en c:\freespace

Ubicado freespace.ps1 en su sitio, es necesario editarlo y personalizar los valores de las siguientes variables que se encuentran al principio:

$limite = 1000000000 # con menos de un giga libre en una partición, se informa
$emailFrom = "pon_email_de@origen.es" # origen email

$emailTo = "pon_email_de@destino.es" # destino email

$smtpServer = "tu_servidor_smtp.tu_dominio.es" # servidor smtp de destino

$subject = "Particiones con menos de 1GB libre" # asunto


Una vez personalizadas las variables, guardamos los cambios del script y en la carpeta de trabajo creamos el archivo freespace.bat que debe contener la siguiente línea:

powershell c:\freespace\freespace.ps1

Por último, creamos una tarea programada que ejecute c:\freespace\freespace.bat una vez por semana. Los permisos de la tarea deben ser de un usuario que tenga acceso a todas las particiones de todos los servidores.

Un email enviado en un caso real es el siguiente:

No hay comentarios: