enviando eventos de windows server 2008 r2 por correo

12
10/10/2015 Enviando eventos de Windows Server 2008 R2 por correo. | Informática y más https://brcordova.wordpress.com/2011/05/12/enviandoeventosdewindowsserver2008r2porcorreo/ 1/12 Informática y más Just another IT blog!!! Enviando eventos de Windows Server 2008 R2 por correo. Aquello que administran servidores, conocen la importancia de los archivos de registro o bitácora (log’s (http://es.wikipedia.org/wiki/Log_(registro)) ), si son importantes en nuestros equipos de escritorio, a nivel de servidor son de uso vital!!!! Sea cual sea el sistema operativo del servidor, los registros de eventos: errores críticos y fatales, advertencias e información nos pueden dar la pista de que anda mal en nuestros equipos o que todo funciona de manera correcta. Básicamente el registro de eventos en los servidores son los “chismosos de la colonia”. Actualmente estoy administrando servidores Wintel, son 4 servidores: Windows Server 2008 con Active Directory y Hyper‑V SQL Server 2008 R2 SharePoint Server 2008 Team Foundation Server 2010 Y como todo no queda bien a la primera, así que todos los días lo primero que tenía que hacer es revisar el Visor de Eventos de cada uno de estos servidores, tarea bastante tediosa, así que decidí investigar un poco la forma en que podía enviarlo a mi correo electrónico. Dentro de la red había algunas respuestas en la que incluía el Exchange, pero este servidor no lo tengo instalado, así que después de mucho buscar encontré una excelente solución: Crear una tarea dentro de cada servidor cuando se genera un evento, monitoreo principalmente dos tipos de registros: Aplicaciones Sistema Así que manos a la obra: Inicio ‑> Todos los programas ‑> Herramientas Administrativas ‑> Programador de Tareas

Upload: robinson-cruces

Post on 06-Dec-2015

8 views

Category:

Documents


2 download

DESCRIPTION

errores

TRANSCRIPT

Page 1: Enviando Eventos de Windows Server 2008 R2 Por Correo

10/10/2015 Enviando eventos de Windows Server 2008 R2 por correo. | Informática y más

https://brcordova.wordpress.com/2011/05/12/enviando­eventos­de­windows­server­2008­r2­por­correo/ 1/12

Informática y más

Just another IT blog!!!

Enviando eventos de Windows Server 2008 R2por correo.

Aquello que administran servidores, conocen la importancia de los archivos de registroo bitácora (log’s (http://es.wikipedia.org/wiki/Log_(registro))), si son importantes en nuestrosequipos de escritorio, a nivel de servidor son de uso vital!!!!

Sea cual sea el sistema operativo del servidor, los registros de eventos: errores críticos y fatales,advertencias e información nos pueden dar la pista de que anda mal en nuestros equipos o quetodo funciona de manera correcta.

Básicamente el registro de eventos en los servidores son los “chismosos de la colonia”.

Actualmente estoy administrando servidores Wintel, son 4 servidores:

Windows Server 2008 con Active Directory y Hyper‑VSQL Server 2008 R2SharePoint Server 2008Team Foundation Server 2010

Y como todo no queda bien a la primera, así que todos los días lo primero que tenía que haceres revisar el Visor de Eventos de cada uno de estos servidores, tarea bastante tediosa, así quedecidí investigar un poco la forma en que podía enviarlo a mi correo electrónico.

Dentro de la red había algunas respuestas en la que incluía el Exchange, pero este servidor nolo tengo instalado, así que después de mucho buscar encontré una excelente solución:

Crear una tarea dentro de cada servidor cuando se genera un evento, monitoreoprincipalmente dos tipos de registros:

AplicacionesSistema

Así que manos a la obra:Inicio ‑> Todos los programas ‑> Herramientas Administrativas ‑> Programador de Tareas

Page 2: Enviando Eventos de Windows Server 2008 R2 Por Correo

10/10/2015 Enviando eventos de Windows Server 2008 R2 por correo. | Informática y más

https://brcordova.wordpress.com/2011/05/12/enviando­eventos­de­windows­server­2008­r2­por­correo/ 2/12

Posteriormente en el menú seleccionamos la opción de Acción ‑> Crear tarea…

(https://brcordova.files.wordpress.com/2011/05/creartarea.jpg)En la pestaña de General, ponemos los siguientes valores:

Nombre y Descripción a nuestra tarea.Opciones de seguridad: Asignamos un usuario con permisos para ejecutar la tareaasignada.Es importante señalar que debemos de activar la opción de: Ejecutar tanto si el usuarioinicio sesión como si no.

(https://brcordova.files.wordpress.com/2011/05/03_creartareageneral.jpg)

Pasamos a la pestaña de Desencadenadores

(https://brcordova.files.wordpress.com/2011/05/00_menu.jpg)Seleccionamos la opción de Al producirse un evento de las opciones de Iniciar la tarea

Page 3: Enviando Eventos de Windows Server 2008 R2 Por Correo

10/10/2015 Enviando eventos de Windows Server 2008 R2 por correo. | Informática y más

https://brcordova.wordpress.com/2011/05/12/enviando­eventos­de­windows­server­2008­r2­por­correo/ 3/12

Seleccionamos la opción de Al producirse un evento de las opciones de Iniciar la tarea

(https://brcordova.files.wordpress.com/2011/05/04_desencadenadortarea.jpg)EnConfiguración marcamos la opción de Personalizada y pulsamos Nuevo filtro del evento.

(https://brcordova.files.wordpress.com/2011/05/05_eventopersonalizado.jpg)Vamos a marcarlas opciones en Nivel de Evento:

CríticoErrorAdvertencia

También la opción  Por Registro y aquí marcamos Registro de eventos, las opción de Registrode Windows ‑> Applicaciones

(https://brcordova.files.wordpress.com/2011/05/06_filtroeventos.jpg)Nota:

Se van a crear una tarea por cada registro de windows, en mi caso genere dos tareas unapara Aplicación y otra para Sistema

Pasamos a la pestaña de Acciones

(https://brcordova.files.wordpress.com/2011/05/00_menu.jpg)En Acción seleccionamos Iniciarun programa.

Page 4: Enviando Eventos de Windows Server 2008 R2 Por Correo

10/10/2015 Enviando eventos de Windows Server 2008 R2 por correo. | Informática y más

https://brcordova.wordpress.com/2011/05/12/enviando­eventos­de­windows­server­2008­r2­por­correo/ 4/12

(https://brcordova.files.wordpress.com/2011/05/07_accion.jpg)En mi caso particular tengo undirectorio en C:\Scripts donde tengo el archivo MonitoreoEventos.ps1 para ejecutar este script serequiere de un parámetro de entrada, comentaremos los parámetros más adelante.

En las pestañas de Condiciones y Configuración, dejamos los valores por defecto.

Pulsamos en Aceptar para guardar nuestra tarea.

De esta manera queda guardada nuestra tarea y se ejecutara cada que se genere un evento.

Bien ahora comentare el script.

El script se genero para Windows PowerShell (http://es.wikipedia.org/wiki/Windows_PowerShell), que por cierto es una herramienta nuevade MS para los administradores.

Aquí esta el script:

Clear‑Host

Page 5: Enviando Eventos de Windows Server 2008 R2 Por Correo

10/10/2015 Enviando eventos de Windows Server 2008 R2 por correo. | Informática y más

https://brcordova.wordpress.com/2011/05/12/enviando­eventos­de­windows­server­2008­r2­por­correo/ 5/12

Clear‑Host

 

#Datos para el envío de correo.

$EmailFrom=“Registro de eventos<[email protected]>”

$EmailTo=“Cuenta del Administrador<[email protected]>”

$SMTPServer=“[SERVIDOR_SMTP]”

$SMTPAuthUsername=“[USUARIO]”

$SMTPAuthPassword=“[CONTRASEÑA]”

#Terminan los datos del envío de correo.

 

# Se verifica si la invocación del script tiene parámetros.

# En caso de que no asigna el registro de System

if($args.Count ‑eq 0)

{

    $NombreLog=“System”

}

else

{

    $NombreLog=$args[0]

}   

 

#Funcion para envío de correo.

functionenvio_correo {

$mailmessage=New‑Objectsystem.net.mail.mailmessage 

$mailmessage.from = ($emailfrom) 

$mailmessage.To.add($emailto)

$mailmessage.Subject =$emailSubject

$mailmessage.Body =$emailbody

Page 6: Enviando Eventos de Windows Server 2008 R2 Por Correo

10/10/2015 Enviando eventos de Windows Server 2008 R2 por correo. | Informática y más

https://brcordova.wordpress.com/2011/05/12/enviando­eventos­de­windows­server­2008­r2­por­correo/ 6/12

$mailmessage.Body =$emailbody

$mailmessage.IsBodyHTML =$true

$SMTPClient=New‑ObjectNet.Mail.SmtpClient($SmtpServer, 25)  

$SMTPClient.Credentials =New‑ObjectSystem.Net.NetworkCredential(“$SMTPAuthUsername”, “$SMTPAuthPassword”) 

$SMTPClient.Send($mailmessage)

}

#Termina la función de correo.

 

#Funcion de armado de cuerpo de correo.

functionarmado_correo{

 

      # Se arma el asunto del correo.

      # $EmailSubject = “Notificación del servidor: “ 

      $EmailSubject=“Notificación del servidor: “ 

      $EmailSubject+=$log.MachineName

 

      #Se arma el cuerpo del correo.

      $EmailBody=“El monitor de registros encontro eventos a revisar.”

      $EmailBody+=” <br><br><bold>Por favor de verificar el siguiente evento que se encontroen: <i>$($log.MachineName)</i></bold><br><br>”

      $EmailBody+=“Evento: <b>$($log.EventId)</b> <br><br> “

      $EmailBody+=“Origen: <b>$($log.Source)</b> <br><br> “

      $EmailBody+=“Tipo de evento: <b>$($log.EntryType)</b> <br><br> “

      $EmailBody+=“Se genero: <b>$($log.TimeGenerated)</b> <br><br> “

      $EmailBody+=“Mensaje: <b>$($log.Message)</b> <br><br> “

      $EmailBody+=“Correo generado: <u>$(get‑date)</u><br><br>”

 

      &envio_correo

Page 7: Enviando Eventos de Windows Server 2008 R2 Por Correo

10/10/2015 Enviando eventos de Windows Server 2008 R2 por correo. | Informática y más

https://brcordova.wordpress.com/2011/05/12/enviando­eventos­de­windows­server­2008­r2­por­correo/ 7/12

      &envio_correo

}

 

 

# Obtenemos el registro del evento.

 $log=get‑eventlog‑logName$NombreLog‑newest 1

 

#Verificamos el tipo de evento generado, en caso de ser Informativo, lo dejamos pasar, soloverificamos

# los de error, criticos y advertencias, si se cumple la condición enviamos el correo.

$TipEve=$log.EntryType

 switch ($TipEve){

      Error { &armado_correo; break}

    Warning { &armado_correo; break}

    Critical { &armado_correo; break}

 }

Script para envío de correo de eventos generados.(https://brcordova.files.wordpress.com/2011/05/monitoreoeventospublico.docx)

***** Actualización 10 de Octubre del 2014

Gracias por todos los comentarios y una disculpa por no contestar antes y con respecto a laseguridad en correo pueden probar con esta configuración:

$param = @{    SmtpServer = 'smtp.gmail.com'    Port = 587    UseSsl = $true    Credential  = '[email protected]'    From = '[email protected]'    To = '[email protected]'    Subject = 'Sending emails through Gmail with Send‐MailMessage'    Body = "Check out the PowerShellMagazine.com website!"    Attachments = 'D:\articles.csv'}Send‐MailMessage @paramEspero les sirva!!!!

Page 8: Enviando Eventos de Windows Server 2008 R2 Por Correo

10/10/2015 Enviando eventos de Windows Server 2008 R2 por correo. | Informática y más

https://brcordova.wordpress.com/2011/05/12/enviando­eventos­de­windows­server­2008­r2­por­correo/ 8/12

MAY 12, 2011 BRCORDOVA    CORREO, LOG, MONITOREO,POWERSHELL, SCRIPT

29 comentarios en “Enviando eventos de WindowsServer 2008 R2 por correo.”

1.  Daniel dijo:Gracias gracias, muy útil

RESPONDER  JULIO 7, 2011 A LAS 12:362.  brcordova dijo:Me da gusto que te haya sido de utilidad!!!! Y gracias por visitar este tu humilde blog, enbreve estaré subiendo mas artículos técnicos, tengo en borrador algo de Windows Server2008 R2 Core, algo para DBA’s, en fin algunos artículos que por falta de tiempo no hepodido darles luz verde!!

RESPONDER  JULIO 7, 2011 A LAS 12:47Oscar dijo:

Hola Cordova, ví tú herramienta y me parece bastante útil. A mí no me quiere correr.¿qué versión de power shell utilizaste?

RESPONDER  ENERO 6, 2014 A LAS 19:523.  pablo dijo:me marca error en este dato

# Obtenemos el registro del evento.$log=get‑eventlog‑logName$NombreLog‑newest 1

El término ‘get‑eventlog‑logName$NombreLog‑newest’ no se reconoce como nombre de uncmdlet, función, archivo de script o programa ejecutable. Compruebe si escribiócorrectamente el nombre o, si incluyó una ruta de acceso, compruebe que dicha ruta escorrectae inténtelo de nuevo.

En línea: 58 Carácter: 43

You May Like

1.   26 CelebsYou Didn't Know Were AlcoholAddicts 4 months agohappylifestylejournal.com HappyLifestyle Journal

Acerca de estos anuncios (https://wordpress.com/about-these-ads/)

Page 9: Enviando Eventos de Windows Server 2008 R2 Por Correo

10/10/2015 Enviando eventos de Windows Server 2008 R2 por correo. | Informática y más

https://brcordova.wordpress.com/2011/05/12/enviando­eventos­de­windows­server­2008­r2­por­correo/ 9/12

En línea: 58 Carácter: 43+ $log=get‑eventlog‑logName$NombreLog‑newest <<<< 1+ CategoryInfo : ObjectNotFound: (get‑eventlog‑logName$NombreLog‑newest:String) [],CommandNotFoundException+ FullyQualifiedErrorId : CommandNotFoundException

RESPONDER  ENERO 9, 2013 A LAS 16:42brcordova dijo:

Un favor podrías probar este comando:$log =[ ]get‑eventlog[ ]‑logName[ ]$NombreLog[ ]‑newest 1Cambia los [ ] por espacios, al parecer en el comando que estas metiendo (get‑eventlog‑logName$NombreLog‑newest) es sin espacios y por eso te provoca el error.Inténtalo y me avisas.

RESPONDER  ENERO 9, 2013 A LAS 16:52 pablo dijo:

si eran los espacios gracias, de mucha ayuda amigo. lo coloque de esta forma:

$log=get‑eventlog ‑logName $NombreLog ‑newest 1

pero tengo una pregunta, lo corro y no me envia nada, debe enviarme email siempreo solo cuando se ejecute la tarea o cuando exista un nuevo aviso?

Gracias nuevamente.

ENERO 9, 2013 A LAS 16:59 aNkeoRuM® dijo:

Pablo debe enviarte un correo únicamente cada vez que se genere un evento con lacategoría elegida en el punto 2 del tutorial (error, crítico o advertencia si seguiste lamisma configuración del tutorial). Si no no te va a avisar de nada.

JULIO 27, 2015 A LAS 09:034.  pablo dijo:Agradeceria mucho tu ayuda, Saludos

RESPONDER  ENERO 9, 2013 A LAS 16:425.  pablo dijo:ya le encontre jeje gracias

RESPONDER  ENERO 9, 2013 A LAS 16:536.  brcordova dijo:Te envía el correo solo cuando surge un nuevo evento. Dependiendo del nivel de eventosque solicitaste, en el ejemplo activamos los siguientes: Critico, Advertencia y Error,entonces solo cuando se generen estos eventos se va a enviar un correo.

RESPONDER  ENERO 9, 2013 A LAS 17:057.  pablo dijo:Okas lo acabo de implementar, gracias por compartir tu conocimiento.

DTB

RESPONDER  ENERO 9, 2013 A LAS 17:28

Page 10: Enviando Eventos de Windows Server 2008 R2 Por Correo

10/10/2015 Enviando eventos de Windows Server 2008 R2 por correo. | Informática y más

https://brcordova.wordpress.com/2011/05/12/enviando­eventos­de­windows­server­2008­r2­por­correo/ 10/12

RESPONDER  ENERO 9, 2013 A LAS 17:288.  percebe dijo:Hola es muy interesante pero no consigo que funcione, que parametro de entrada metes?creo que no lo pusiste, relleno los campos de armado del correo pero no me llega nada almail, que hago mal? saludos

RESPONDER  FEBRERO 20, 2013 A LAS 16:48brcordova dijo:

Parámetros de que?? del Correo????Estos son los parámetros que mencionas??#Datos para el envío de correo.$EmailFrom=”Registro de eventos” (Una cuenta que podría ser dedicada para este fin)$EmailTo=”Cuenta del Administrador” (Posiblemente tu cuenta o de la persona querequieran que reciba el correo.)$SMTPServer=”[SERVIDOR_SMTP]”$SMTPAuthUsername=”[USUARIO]”$SMTPAuthPassword=”[CONTRASEÑA]”Aquí deberás poner los datos de tu servicio de correo.

Ahora hay que recordar que en base al ejemplo solo te va a mandar correo de loseventos del tipo * Critico, * Error y * Advertencia.Este ejemplo lo deje configurando y trabajando en un ambiente de producción y aúnsigue funcionando.

Espero haber resuelto tu duda.

RESPONDER  FEBRERO 22, 2013 A LAS 11:09 Sergio Rodríguez dijo:

Si, se refiere a en la propia tarea programada, en el apartado de agregar argumentosa la acción, en el pantallazo que pones hay un argumento APPLICATION, esto sirvepara algo?

SEPTIEMBRE 13, 2013 A LAS 06:179.  percebe dijo:Hola brcordova, gracias por contestar, me refería si pones algun comando especial enargumentos para ejecutar el script, no tengo ni idea de powershell… Esto lo tengo yoparecido con la herramienta blat.exe, pero claro, solo envía un correo de aviso cuando seproduce un error y no el error en sí, para eso tendrias que hacerte tareas especificas en cadaID del visor de eventos, por eso es más interesante. Lo que hice fue dar permiso a politicade ejecucion de scripts locales en powershell, copiar tu script tal cual en powershell ISE yrellenar los campos del correo,, guardar a ps1 tal como muestras y armar la tarea, pero nofunciona, es un 2008 R2 x64, quiza tengo algo mal de sintasis, hay que dar algun permiso encortafuegos? saludos.

RESPONDER  MARZO 3, 2013 A LAS 06:0910.  Miguel Lomeli dijo:

Hola estoy revisando tu informacion y es muy util pero tengo una duda se puede enviar aun servidor syslog?

RESPONDER  ABRIL 2, 2013 A LAS 17:35

11.  Enrique dijo:

Page 11: Enviando Eventos de Windows Server 2008 R2 Por Correo

10/10/2015 Enviando eventos de Windows Server 2008 R2 por correo. | Informática y más

https://brcordova.wordpress.com/2011/05/12/enviando­eventos­de­windows­server­2008­r2­por­correo/ 11/12

11.  Enrique dijo:Estimado brcordova se me ocurrió que seria de mucha utilidad ejecutar esta tarea de envióde notificación cuando se bloquea o se vence una cuenta de usuario en el dominio, estoseria muy aplicable cuando un servicio utiliza la validación de ldap de windows 2008. Conlo cual los usuarios no ingresan al domino y no son notificados del los bloqueos yvencimientos. Hay algo que se pueda hacer desde el power shell ????

RESPONDER  JULIO 15, 2013 A LAS 11:3412.  Enrique dijo:

Hola.

Quería saber de donde sale la variable $arg que usas para determinar el tipo de evento.Creo que falta una linea.He tenido que deshabilitar esa condicional y crear un script para cada registro, poniendo“manualmente” el $NombreLog.

Gracias.

RESPONDER  JULIO 19, 2013 A LAS 10:5613.  Miguel dijo:

Saludos estimado brcordova, queria consultarle como puedo realizar una prueba de querealmente envia correos, porque he seguido los pasos que ud menciona y he realizadoeventos en el servidor pero no me envia ninguna informacion al correo…espero suscomentarios.muchas gracias

RESPONDER  JULIO 28, 2014 A LAS 16:12brcordova dijo:

Podrías seleccionar que tambien te envíe en el Nivel de Evento agerga el deInformación, para que te mande todo tipo de mensaje y verifiques que esta enviandocorrectamente los correos, por otro lado verifica si tu servidor requiere de autenticacióno algún puerto en especial para que envíe correos.

RESPONDER  JULIO 29, 2014 A LAS 06:33 Miguel dijo:

Muchas gracias por su pronta respuesta, comentarle que efectivamente mi servidor sirequiere autentifican y utiliza el puerto 587, como lo puedo configurar en este casopara que envie correctamente?

JULIO 29, 2014 A LAS 06:4614.  Acastillo dijo:

Hola brcordova buen día, una pregunta ya realice la configuración que mencionas alprincipio, pero en los parámetros del correo en el servidor SMTP como realizo laconfiguración para el puerto 587, habrá que abrir algún puerto en el firewall de windows?Gracias, muy buen post.

RESPONDER  OCTUBRE 6, 2014 A LAS 09:2715.  ami dijo:

hola brcordova hemos realizado tu script y corre bien pero poniendo nuestro datos no nosllega ningún correo y ya realizamos todos los pasos no sabemos si el problema es por elpuerto 25 o 587 suponemos como miguel que debemos utilizar el puerto 587 pero no

sabemos como habilitarlo para que nos envié el mensaje?

Page 12: Enviando Eventos de Windows Server 2008 R2 Por Correo

10/10/2015 Enviando eventos de Windows Server 2008 R2 por correo. | Informática y más

https://brcordova.wordpress.com/2011/05/12/enviando­eventos­de­windows­server­2008­r2­por­correo/ 12/12

sabemos como habilitarlo para que nos envié el mensaje?

RESPONDER  OCTUBRE 10, 2014 A LAS 23:0516.  mercedes becerra dijo:

Hola , ya hemos realizado los cambios por los datos de aca pero solo nos genera un mensajede error , el siguiente unexpected token get‑eventlog[]‑logName[]$NombreLog[]‑newestya hemos probado sin [] y con [] no mismo si quitamos los [] nos da otros errores como queno reconoce las funciones. Si por favor nos ayudas . Gracias

RESPONDER  ABRIL 7, 2015 A LAS 09:1217.  Rafael dijo:

Hola buen dia, tengo una duda, sabras si este manual que tu estas dejando aqui en el blog,sirve para monitorear si se me cae un servicio, tengo todo bien configurado, pero lo quemas me urge es saber si se me cae un servicio determinado, espero puedas ayudarme,

saludos cordiales.

RESPONDER  MAY 13, 2015 A LAS 13:2218.  carlos angulo dijo:

Buenas tardes , para la creacion del script que extension tiene

RESPONDER  SEPTIEMBRE 1, 2015 A LAS 15:03brcordova dijo:

La extensión de los scripts debe de ser .ps1, por lo menos en esta versión de PowerShell,es la versión 1

RESPONDER  SEPTIEMBRE 1, 2015 A LAS 18:2919.  israel dijo:

perdón el escrip q dejaste sirve para un Windows server 2008 R2 estándar y no c mucho deesto pero el escrip lo guardo como .ps1 y el segundo modulo q pones abajo como lo guardoo es completo en un solo archivo

RESPONDER  SEPTIEMBRE 22, 2015 A LAS 13:50brcordova dijo:

Es completo, todo va en un solo archivo.

RESPONDER  SEPTIEMBRE 22, 2015 A LAS 18:11

BLOG DE WORDPRESS.COM.  EL TEMA HEXA.