Назад | Перейти на главную страницу

Поиск наиболее частых ошибок в журналах событий с помощью Powershell.

У меня есть журналы событий для одного из наших серверов локально в формате .evtx. Я могу загрузить файл журнала в PS, используя команду:

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

То, что я хотел бы сделать, это события группы поля сообщения, где текст соответствует определенному проценту (скажем, 80%). Поскольку у нас есть трассировки стека для ошибок в деталях, которые будут одинаковыми, но мы также регистрируем IP-адрес клиента, URL-адрес, к которому был осуществлен доступ, который, вероятно, будет другим.

Я хочу сгруппировать их так, чтобы я мог проработать наиболее распространенные ошибки и определить приоритетность их исправления, а поскольку в файле журнала более 25000 ошибок, я бы предпочел не делать это вручную.

Я думаю, что могу решить, как сделать большую часть этого, но не уверен, как я могу сделать «групповые поля, которые в основном одинаковы», есть ли в PowerShell что-то подобное встроено?

Во-первых, вы хотите отфильтровать как можно больше, потому что на следующем шаге используется Where-Object командлет, который может быть медленным для такого рода вещей (к сожалению, он не похож ни на один из аргументов для Get-WinEvent поддержка подстановочных знаков для свойства сообщения события).

Например, получить только события уровня «ошибка»:

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

Затем вы можете использовать -match или -like для дальнейшей фильтрации до тех, у которых есть похожий текст:

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

Теперь, когда вы сузили список, вы можете передать результаты в Group-Object командлет, указав, что вы хотите сгруппировать их по свойству «Сообщение» события:

$events | Group-Object -Property Message

Хотя вы спрашивали, как это сделать в Powershell, я бы посоветовал также взглянуть на Парсер журнала Microsoft Это позволит вам писать SQL-подобные запросы к вашим журналам (и множество других полезных трюков). Нет причин, по которым вы не могли бы управлять им из Powershell.