Cómo configurar alertas de correo electrónico para supervisar el estado del servicio en Windows Server

Cómo configurar alertas por correo electrónico para cambios en el estado del servicio en Windows Server

Controlar los servicios de Windows Server es vital, especialmente si son cruciales para las aplicaciones o sistemas que utiliza. Revisar manualmente cada servicio es un verdadero fastidio, y depender únicamente de los registros de eventos puede generar una avalancha de notificaciones, especialmente porque Windows registra los eventos del Administrador de control de servicios (ID de evento 7036) para cada inicio y parada. Por lo tanto, configurar alertas por correo electrónico que se activen solo cuando un servicio en particular cambie de estado, como al dejar de funcionar o al iniciarse, simplifica enormemente la tarea. Este enfoque combina el filtrado en el Visor de eventos, un script de PowerShell para enviar correos electrónicos y el Programador de tareas para automatizar todo. Una vez configurado, recibirá notificaciones oportunas sobre sus servicios clave sin verse abrumado por eventos irrelevantes. El objetivo es crear un sistema de alertas simple y confiable. No es totalmente perfecto, ya que los registros de Windows pueden ser ruidosos, pero el filtrado con la consulta XML y el script adecuados ayuda a reducir las falsas alarmas. Además, funciona para servicios críticos como SQL Server, IIS o personalizados, lo que le brinda la tranquilidad de que recibirá una alerta de inmediato cuando sea necesario.—

Configurar alertas de correo electrónico para supervisar el estado de los servicios en Windows Server

Sigue estos pasos si quieres recibir notificaciones por correo electrónico solo cuando un servicio específico cambia de estado, como al detenerse o iniciarse. Este método combina el filtrado de eventos, un script de PowerShell y activadores programados para mantener un sistema eficiente y con capacidad de respuesta.

Cumplir con los requisitos previos

Primero, asegúrate de que tu servidor cumpla con los requisitos. Necesitas:

  • Un servidor Windows (2012 R2, 2016, 2019 o posterior).¿No está seguro? Abra Configuración > Sistema > Acerca de para confirmar.
  • Un servidor SMTP (como Gmail o un relé de correo electrónico interno).Para Gmail, necesitarás una contraseña de aplicación, ya que Google bloquea las aplicaciones menos seguras.
  • Permisos para crear tareas programadas y ejecutar scripts de PowerShell. Básicamente, derechos de administrador en su servidor.

Una vez que hayas resuelto estos problemas, estarás listo para comenzar a escribir scripts.

Crear el script de correo electrónico de PowerShell

Esta parte es crucial. Aquí se configura cómo se envían los correos electrónicos cuando se activa un evento. Con un editor de texto sencillo como el Bloc de notas o PowerShell ISE, cree un script llamado ServiceAlert.ps1 dentro de una carpeta, por ejemplo C:\EmailAlerts\. Copie el siguiente fragmento y no olvide cambiar los marcadores de posición para el nombre del servicio, el correo electrónico y la información SMTP.

# Change 'Your Service Name' to the exact name as in services.msc $filter = "*[System[EventID=7036] and EventData[Data='Your Service Name']]" # Grab the most recent matching event $A = Get-WinEvent -LogName System -MaxEvents 1 -FilterXPath $filter # Extract details $Message = $A. Message $EventID = $A. Id $MachineName = $A. MachineName $Source = $A. ProviderName # Email config - tweak these $EmailFrom = "[email protected]" $EmailTo = "[email protected]" $Subject = "Service Status Alert from $MachineName" $Body = "EventID: $EventID`nSource: $Source`nMachine: $MachineName`n`nDetails:`n$Message" $SMTPServer = "smtp.gmail.com" # Change if you’re not using Gmail # Send the email $SMTPClient = New-Object Net. Mail. SmtpClient($SMTPServer, 587) $SMTPClient. EnableSsl = $true $SMTPClient. Credentials = New-Object System. Net. NetworkCredential("[email protected]", "YourAppPassword") $SMTPClient. Send($EmailFrom, $EmailTo, $Subject, $Body) 

Nota: Para Gmail, necesitas una contraseña de aplicación (no un inicio de sesión normal).Si usas otro proveedor SMTP, actualiza `$SMTPServer` y las credenciales según corresponda. Además, asegúrate de que el nombre del servicio coincida exactamente con el que aparece en services.msc. En algunas configuraciones, este script podría generar un error o no activarse al instante; en ciertos equipos, es inestable hasta que se reinicia o se realiza una prueba.

Configurar el disparador de tareas programadas

A continuación, indique a Windows cuándo ejecutar ese script automáticamente. Crearemos una tarea programada que detecte el evento de su servicio en el Visor de eventos.

  • Abra el Programador de tareas, simplemente búsquelo.
  • Haz clic en “Crear tarea básica” o “Crear tarea (más opciones)”.Asígnale un nombre como “Alerta de correo electrónico sobre el estado del servicio”.
  • En la pestaña General, marque:
    • Se ejecuta independientemente de que el usuario haya iniciado sesión o no, de modo que funcione en segundo plano.
    • Ejecutar con los privilegios más altos.
  • Cambie a la pestaña Desencadenadores, haga clic en Nuevo…
  • Establezca “Iniciar la tarea” en “Al ocurrir un evento”. Seleccione “Personalizado” y haga clic en “Editar filtro de eventos”.
  • En la pestaña XML, marque Editar consulta manualmente y pegue esto, reemplazando “Su nombre de servicio”:

<QueryList> <Query Id="0" Path="System"> <Select Path="System"> "*[System[(EventID=7036)]] and *[EventData[Data[1]='Your Service Name']]" </Select> </Query> </QueryList>

Básicamente, esto filtra solo el ID de evento que indica el inicio o la detención de un servicio, y para tu servicio específico. De esta forma, no recibirás todos los reinicios, sino solo los incidentes que te interesan.

  • Ahora, ve a la pestaña Acciones. Haz clic en Nuevo
  • Acción: Iniciar un programa
  • Programa/guión:powershell
  • Añadir argumentos:-File "C:\EmailAlerts\ServiceAlert.ps1"
  • Deje los demás cuadros predeterminados o modifíquelos si es necesario.

En las pestañas Condiciones y Configuración, deje los valores predeterminados a menos que necesite ajustes específicos. Le recomendamos marcar la opción “Ejecutar la tarea lo antes posible si se omite” en Configuración.

Una vez configurado, haga clic en Aceptar e ingrese sus credenciales de administrador si se le solicita. Windows observará los cambios de estado de su servicio y ejecutará el script, que envía una alerta por correo electrónico.

Consejo profesional: puede exportar esta tarea como XML haciendo clic derecho en > Exportar y luego importarla a otros servidores con comandos de PowerShell para una implementación masiva.

Notas finales y una prueba rápida

Asegúrate de que el nombre del servicio coincida exactamente; obténlo directamente de services.msc. Cuando se produzca el evento, revisa tu correo electrónico. Si no aparece nada, intenta ejecutar el script manualmente para comprobar si se ejecuta correctamente. A veces, la configuración de SMTP es complicada, sobre todo con la seguridad de Gmail. Y no olvides permitir las aplicaciones menos seguras o generar una contraseña para la aplicación si es necesario.

¿Cómo configurar notificaciones por correo electrónico cuando un servicio deja de funcionar?

Básicamente, modifica el filtro para buscar el evento que detiene el servicio. El script envía una alerta cada vez que detecta que el servicio ya no está en ejecución, generando alertas de inactividad no detectadas en tiempo real.

¿Cómo anuncio un tiempo de inactividad del sistema?

Para las pausas planificadas, considere enviar mensajes a todos por correo electrónico masivo, Slack o Teams, y destaque los beneficios, como la seguridad mejorada o las nuevas funciones, para suavizar el impacto. Utilice la comunicación multicanal para que sea clara y profesional, e incluso añada un toque de humor si se adapta a su entorno.