Localizando os erros mais comuns em logs de eventos usando o Powershell.

1

Eu tenho os logs de eventos para um dos nossos servidores localmente no formato .evtx. Eu posso carregar o arquivo de log no PS usando o comando:

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

O que eu gostaria de fazer é nos eventos do grupo de campos Mensagem, em que o texto corresponde a um determinado percentual (digamos, 80% o mesmo). Como temos stacktraces para erros nos detalhes que serão os mesmos, mas também registramos o IP do cliente, URL que foi acessado, que provavelmente será diferente.

Eu quero agrupá-los para que eu possa descobrir os erros mais comuns para priorizá-los e, como há mais de 25.000 erros no arquivo de log, prefiro não fazer isso manualmente.

Eu acho que posso descobrir como fazer a maior parte disso, mas não tenho certeza de como eu poderia fazer a parte de 'grupos que são basicamente os mesmos', o PowerShell tem algo como isto embutido?

    
por Paul 22.11.2011 / 14:40

2 respostas

2

Primeiro, você deseja filtrar o máximo possível porque a próxima etapa usa o cmdlet Where-Object , que pode ser lento para esse tipo de coisa (infelizmente, não parece nenhum dos argumentos para Get-WinEvent suporta curingas para a propriedade Message de um evento).

Por exemplo, obtenha apenas os eventos de nível de "erro":

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

Em seguida, você pode usar -match ou -like para filtrar ainda mais os que têm texto semelhante:

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

Agora que você reduziu a lista, é possível canalizar os resultados para o cmdlet Group-Object , especificando que deseja agrupá-los na propriedade "Message" do evento:

$events | Group-Object -Property Message
    
por 21.06.2012 / 09:02
0

Embora você tenha perguntado como fazer isso no Powershell, sugiro também que você verifique o Microsoft Log Parser Isso permitirá que você escreva consultas semelhantes a SQL em seus logs (e uma série de outros truques úteis). Não há razão para você não poder dirigir de Powershell também.

    
por 02.07.2012 / 15:59