Windows 이벤트 로그는 클라이언트 운영 체제의 상태 및 Windows 컴퓨터 워크로드에 대한 가장 일반적인 원본 중 일부입니다. 시스템 및 애플리케이션과 같은 표준 로그와 모니터링해야 하는 애플리케이션에서 만든 모든 사용자 지정 로그에서 이벤트를 수집할 수 있습니다. Windows 이벤트 데이터 원본과 함께 DCR(데이터 수집 규칙) 을 사용하여 가상 머신에서 Windows 이벤트 로그를 수집합니다.
DCR 생성에 대한 세부 정보는 Azure Monitor를 사용하여 VM 클라이언트에서 데이터 수집에 제공됩니다. 이 문서에서는 Windows 이벤트 데이터 원본 형식에 대한 추가 세부 정보를 제공합니다.
비고
DCR 정의를 직접 사용하거나 ARM 템플릿과 같은 다른 방법으로 배포하려면 Azure Monitor의 DCR(데이터 수집 규칙) 샘플을 참조하세요.
Windows 이벤트 데이터 원본 구성
Azure Monitor를 사용하여 가상 머신 클라이언트에서 데이터 수집 프로세스를 사용하여 DCR을 만듭니다. DCR의 수집 및 배달 탭에서 데이터 원본 유형 드롭다운에서 Windows 이벤트 로그를 선택합니다. 수집할 로그 및 심각도 수준 집합 중에서 선택합니다. 각 로그에 대해 선택한 심각도 수준을 가진 로그만 수집됩니다.
팁 (조언)
DCR에서 보안 로그를 선택하면 이벤트는 시스템 및 애플리케이션과 같은 다른 로그의 이벤트와 함께 Log Analytics 작업 영역의 이벤트 테이블로 전송됩니다. 또 다른 옵션은 작업 영역에서 Microsoft Sentinel 을 사용하도록 설정하고 Microsoft Sentinel용 AMA 커넥터를 통해 Windows 보안 이벤트를 사용하도록 설정하는 것입니다. 동일한 Azure Monitor 에이전트 를 사용하고 동일한 이벤트를 수집하지만 Sentinel에서 사용하는 SecurityEvent 테이블로 전송됩니다.
사용자 지정을 선택하여 XPath 쿼리를 사용하여 이벤트를 필터링합니다. 이렇게 하면 XPath 를 사용하여 수집할 이벤트를 지정하여 수집하는 이벤트를 보다 세부적으로 제어할 수 있습니다. XPath 쿼리의 세부 정보 및 예제는 XPath 쿼리를 사용하여 이벤트 필터링을 참조하세요.
대상 추가
Windows 이벤트 데이터는 이벤트 테이블에 저장된 Log Analytics 작업 영역으로만 보낼 수 있습니다. Azure Monitor 로그 유형의 대상을 추가하고 Log Analytics 작업 영역을 선택합니다. 여러 작업 영역을 추가할 수 있지만 중복 데이터가 각각에 전송되므로 추가 비용이 발생합니다.
데이터 수집 확인
데이터가 수집되고 있는지 확인하려면 이벤트 테이블에서 레코드를 확인합니다. 가상 머신 또는 Azure Portal의 Log Analytics 작업 영역에서 로그를 선택한 다음 테이블 단추를 클릭합니다. 가상 머신 범주에서 이벤트 옆의 실행을 클릭합니다.
XPath 쿼리를 사용하여 이벤트 필터링
Azure Portal의 기본 구성은 로그 및 심각도에 따라 이벤트를 필터링하는 제한된 기능을 제공합니다. 보다 세부적인 필터링을 지정하려면 사용자 지정 구성을 사용하고 필요한 이벤트만 필터링하는 XPath를 지정합니다.
XPath 항목은 폼 LogName!XPathQuery
로 작성됩니다. 예를 들어 이벤트 ID가 1035 인 애플리케이션 이벤트 로그에서 이벤트만 반환하려고 할 수 있습니다. 이러한 이벤트에 대한 XPathQuery
는 *[System[EventID=1035]]
입니다. 애플리케이션 이벤트 로그에서 이벤트를 검색하려고 하므로 XPath는 Application!*[System[EventID=1035]]
입니다.
비고
Azure Monitor 에이전트는 EvtSubscribe 시스템 API를 사용하여 Windows 이벤트 로그를 구독합니다. Windows OS는 분석/디버그 채널 형식의 Windows 이벤트 로그를 구독하는 것을 허용하지 않습니다. 따라서 분석 및 디버그 채널에서 Log Analytics 작업 영역으로 데이터를 수집하거나 내보낼 수 없습니다.
Windows 이벤트 뷰어에서 XPath 쿼리 추출
다음 스크린샷과 같이 Windows에서 이벤트 뷰어를 사용하여 XPath 쿼리를 추출할 수 있습니다.
5단계에서처럼 데이터 원본 추가 화면의 필드에 XPath 쿼리를 붙여 넣을 때 로그 유형 범주 뒤에 느낌표(!)를 추가해야 합니다.
팁 (조언)
PowerShell cmdlet Get-WinEvent
을 FilterXPath
매개 변수와 함께 사용하여 먼저 컴퓨터에서 로컬로 XPath 쿼리의 유효성을 테스트할 수 있습니다. 자세한 내용은 Windows 에이전트 기반 연결 지침에 제공된 팁을 참조하세요. Get-WinEvent
PowerShell cmdlet은 최대 23개의 식을 지원합니다. Azure Monitor 데이터 수집 규칙은 최대 20개를 지원합니다. 다음 스크립트는 예제를 보여 줍니다.
$XPath = '*[System[EventID=1035]]'
Get-WinEvent -LogName 'Application' -FilterXPath $XPath
- 이전 cmdlet에서
-LogName
매개 변수의 값은 느낌표(!)까지 XPath 쿼리의 초기 부분입니다. XPath 쿼리의 나머지 부분은$XPath
매개 변수로 들어갑니다. - 스크립트가 이벤트를 반환하는 경우 쿼리가 유효합니다.
- “지정된 선택 조건과 일치하는 이벤트를 찾을 수 없다”는 메시지가 표시되는 경우 쿼리는 유효하지만 로컬 컴퓨터에 일치하는 이벤트가 없습니다.
- "지정된 쿼리가 잘못되었습니다" 메시지를 받으면 쿼리 구문이 잘못된 것입니다.
다음 표에서는 이벤트를 필터링하는 XPath 쿼리의 예를 제공합니다.
설명 | XPath (엑스패스) |
---|---|
이벤트 ID가 4648인 시스템 이벤트만 수집 | System!*[System[EventID=4648]] |
이벤트 ID가 4648이고 프로세스 이름이 consent.exe인 보안 로그 이벤트 수집 | Security!*[System[(EventID=4648)]] and *[EventData[Data[@Name='ProcessName']='C:\Windows\System32\consent.exe']] |
이벤트 ID가 6(드라이버 로드 됨)인 경우를 제외하고 시스템 이벤트 로그에서 모든 중요, 오류, 경고 및 정보 이벤트를 수집 | System!*[System[(Level=1 or Level=2 or Level=3) and (EventID != 6)]] |
이벤트 ID 4624(로그온 성공)를 제외한 모든 성공 및 실패 보안 이벤트를 수집 | Security!*[System[(band(Keywords,13510798882111488)) and (EventID != 4624)]] |
비고
Windows 이벤트 로그에서 지원되는 XPath의 제한 사항 목록은 XPath 1.0 제한 사항을 참조하세요. 예를 들어 쿼리 내에서 "position", "Band" 및 "timediff" 함수를 사용할 수 있지만 "starts-with"와 "contains"와 같은 다른 함수는 현재 지원되지 않습니다.
다음 단계
- Azure Monitor 에이전트에 대해 자세히 알아보세요.
- 데이터 수집 규칙에 대해 자세히 알아봅니다.