Encontrar los errores más comunes en los registros de eventos usando Powershell.

Encontrar los errores más comunes en los registros de eventos usando Powershell.

Tengo los registros de eventos de uno de nuestros servidores localmente en formato .evtx. Puedo cargar el archivo de registro en PS usando el comando:

Get-WinEvent -Ruta D:\Desktop\serverlogs.evtx

Lo que me gustaría hacer es en los eventos del grupo del campo Mensaje donde el texto coincide en un cierto porcentaje (digamos 80% igual). Como tenemos seguimientos de pila para errores en los detalles, que serán los mismos, pero también registramos la IP del cliente y la URL a la que se accedió, que probablemente será diferente.

Quiero agruparlos para poder resolver los errores más comunes y priorizar su corrección y, como hay más de 25 000 errores en el archivo de registro, prefiero no hacerlo manualmente.

Creo que puedo descubrir cómo hacer la mayor parte de esto, pero no estoy seguro de cómo podría hacer la parte de "campos de grupo que son en su mayoría iguales". ¿PowerShell tiene algo como esto integrado?

Respuesta1

En primer lugar, desea filtrar todo lo que pueda porque el siguiente paso utiliza el Where-Objectcmdlet, que puede ser lento para este tipo de cosas (desafortunadamente, no se parece a ninguno de los argumentos para Get-WinEventadmitir comodines para la propiedad Mensaje de un evento).

Por ejemplo, obtenga solo los eventos de nivel "error":

$events = Get-WinEvent -FilterHashTable @{ Path="D:\Desktop\serverlogs.evtx";Level=2 }

Luego, puedes usar -matcho -likepara filtrar aún más aquellos que tienen texto similar:

$events = $events | ?{ $_.Message -match "your similar error here" }

Ahora que ha reducido la lista, puede canalizar los resultados al Group-Objectcmdlet, especificando que desea agruparlos en la propiedad "Mensaje" del evento:

$events | Group-Object -Property Message

Respuesta2

Aunque preguntaste cómo hacer esto en Powershell, te sugiero que también eches un vistazo aAnalizador de registros de MicrosoftEsto le permitirá escribir consultas similares a SQL en sus registros (y una gran cantidad de otros trucos útiles). Tampoco hay ninguna razón por la que no puedas manejarlo desde Powershell.

información relacionada