Powershell을 사용하여 이벤트 로그에서 가장 일반적인 오류를 찾습니다.

Powershell을 사용하여 이벤트 로그에서 가장 일반적인 오류를 찾습니다.

로컬 서버 중 하나에 대한 이벤트 로그가 .evtx 형식으로 있습니다. 다음 명령을 사용하여 PS에 로그 파일을 로드할 수 있습니다.

Get-WinEvent -경로 D:\Desktop\serverlogs.evtx

내가 하고 싶은 것은 텍스트가 특정 비율(예: 80% 동일)만큼 일치하는 메시지 필드 그룹 이벤트에 관한 것입니다. 세부 사항에 대한 오류에 대한 스택 추적은 동일하지만 클라이언트의 IP, 액세스된 URL도 기록하므로 다를 수 있습니다.

가장 일반적인 오류를 해결하여 우선 순위를 정할 수 있도록 그룹화하고 싶습니다. 로그 파일에 25,000개 이상의 오류가 있으므로 수동으로 수행하지 않을 것입니다.

대부분의 작업을 수행하는 방법을 알아낼 수 있을 것 같지만 '대부분 동일한 그룹 필드' 부분을 어떻게 수행할 수 있는지 잘 모르겠습니다. powershell에 이와 같은 기능이 내장되어 있습니까?

답변1

첫째, 다음 단계에서는 cmdlet을 사용하기 때문에 최대한 많이 필터링하려고 합니다. cmdlet은 이런 종류의 작업에서는 속도가 느릴 수 있습니다(불행히도 메시지 속성에 대한 와일드카드 지원 인수에 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" }

이제 목록의 범위를 좁혔으므로 결과를 cmdlet으로 파이프하여 Group-Object이벤트의 "메시지" 속성에서 그룹화하도록 지정할 수 있습니다.

$events | Group-Object -Property Message

답변2

Powershell에서 이 작업을 수행하는 방법을 문의하셨지만 다음도 살펴보는 것이 좋습니다.마이크로소프트 로그 파서이를 통해 로그(및 기타 유용한 트릭)에 대해 SQL과 유사한 쿼리를 작성할 수 있습니다. Powershell에서 구동할 수 없는 이유도 없습니다.

관련 정보