Quantcast
Channel: Randy Riness @ SPSCC aggregator
Viewing all articles
Browse latest Browse all 3015

MSDN Blogs: Consultar o Event Viewer com Regular Expressions e PowerShell

$
0
0

Hoje um cliente me pediu uma ajuda para filtrar um log do Event Viewer.

O cliente estava recebendo vários erros de conexão com o banco de dados Oracle. Esses erros estavam sendo gravados no Event Viewer e a quantidade de erros era muito grande para ele identificar se todos os erros eram do mesmo tipo (ORA-02067).

Eu informei que era possível usar o PowerShell e Regular Expressions (RegEx) para obter os logs do Event Viewer.

Exemplo de como obter os registros do log Application para a data atual e armazenar o resultado em uma variável.

$logs = Get-EventLog -LogName Application | ? { ($_.TimeWritten -ge $(get-date).Date )  }

No caso do cliente, os logs estavam em um arquivo exportado do Event Viewer. Para ler o arquivo e armazenar os valores em uma variável, eu utilizei o seguinte comando:

$logs = Get-WinEvent -Path C:tempevents.evtx

A maioria dos eventos do Event Viewer continha a seguinte mensagem de erro:

Exception message: ORA-02067: transaction or savepoint rollback required

Eu gostaria de verificar se existiam outros erros do Oracle, por exemplo, ORA-02055.

Uilizei a seguinte RegEx para extrair o valor ORA-?????:

“ORA-[d.]+”

Nesse padrão, eu busco a palavra ORA seguida de um traço (“-“) e de um ou mais decimais.

Para evitar receber toda a mensagem do log que satisfizesse a regra, e selecionar apenas o valor “ORA-?????” de dentro da mensagem, eu atribuí um identificador (errorcode) para a parte que eu gostaria de obter.

“(?<errorid>ORA-([d.]+))”

Para fazer a busca no array $logs, eu utilizei um loop (foreach) onde verifico item por item e armazeno o resultado encontrado em um outro array ($errorcodes) para posterior agrupamento.

$errorcodes = @()
foreach ($log in $logs)
{
$log.message  -match “(?<errorid>ORA-([d.]+))” | Out-Null

if ($Matches.Count -gt 0)
{
$errorcodes += $matches[“errorid”]
}
}
$errorcodes | group | select name, count

Para esse cenário, eu encontrei apenas o erro ORA-02067, conforme:

Name              Count
—-                   —–
ORA-02067   926

 

Espero que esse post tenha sido útil. Não deixe de consultar outros artigos disponíveis em: https://blogs.msdn.microsoft.com/luisdem/tag/powershell/

 


Viewing all articles
Browse latest Browse all 3015

Trending Articles