Computer >> 컴퓨터 >  >> 시스템 >> Windows Server

Windows 이벤트 트리거 완벽 가이드: 특정 이벤트 발생 시 자동 알림 및 작업 실행 설정

Windows 이벤트 트리거란?

Windows Server 2008(Windows Vista)부터는 시스템 로그에 기록된 모든 이벤트에 작업 스케줄러(Task Scheduler) 작업을 연결할 수 있는 새로운 기능이 도입되었습니다. 이 기능을 활용하면 관리자가 특정 Windows 이벤트가 발생했을 때 자동으로 스크립트를 실행하거나 이메일 알림을 받도록 설정할 수 있습니다. 이번 글에서는 이 기능을 자세히 살펴보겠습니다.

작업 스케줄러와 이벤트 뷰어의 연동

특정 Windows 이벤트 발생 시 작업을 실행하는 기능은 작업 스케줄러이벤트 뷰어(Event Viewer)의 긴밀한 통합을 기반으로 동작합니다. 이벤트 뷰어 콘솔에서 직접 원하는 이벤트에 스케줄러 작업을 할당할 수 있으며, 이벤트 발생에 대한 응답으로 스크립트를 실행하거나 관리자(또는 다른 사용자)에게 이메일 알림을 보낼 수 있습니다.

예를 들어, Active Directory 사용자 계정이 잠길 때마다 보안 관리자에게 알림을 보내는 작업을 만들어 보겠습니다.

참고: 여기서는 설명을 위해 이 이벤트를 예로 들었지만, 실제로 이 기능의 활용 범위는 매우 넓습니다. Windows 서비스 중단 알림, Exchange 백업 완료 후 애플리케이션 실행, Active Directory 보안 그룹 변경 알림, 특정 디렉터리나 파일 변경 감지 등 다양한 용도로 활용할 수 있습니다.

이벤트 뷰어에서 작업 연결하기

AD 사용자 계정 잠금 이벤트는 도메인 컨트롤러의 보안(Security) 로그에 기록되며, 해당 이벤트 ID는 4740입니다. Windows 이벤트 뷰어(eventvwr.msc)를 열어 이 이벤트를 찾은 후, 마우스 오른쪽 버튼을 클릭하고 Attach Task To This Event(이 이벤트에 작업 연결)를 선택합니다.

Windows 이벤트 트리거 완벽 가이드: 특정 이벤트 발생 시 자동 알림 및 작업 실행 설정

기본 작업 만들기 마법사 진행

마법사가 실행되면 작업 이름을 지정하라는 메시지가 표시됩니다. 이름은 자동으로 Security_Microsoft-Windows-Security-Auditing_4740 형식으로 생성되며, 그대로 사용해도 무방합니다.

Windows 이벤트 트리거 완벽 가이드: 특정 이벤트 발생 시 자동 알림 및 작업 실행 설정

다음 단계에서는 이벤트 로그 유형, 이벤트 소스, 이벤트 ID가 표시됩니다. (모든 필드가 자동으로 채워지며 이 단계에서는 수정할 수 없습니다.)

Windows 이벤트 트리거 완벽 가이드: 특정 이벤트 발생 시 자동 알림 및 작업 실행 설정

이벤트 응답 유형 선택

그다음 이벤트에 대한 응답 유형을 선택하는 화면이 나타납니다. 선택 가능한 옵션은 다음과 같습니다:

  • 프로그램 시작
  • 전자 메일 보내기
  • 메시지 표시

Windows 이벤트 트리거 완벽 가이드: 특정 이벤트 발생 시 자동 알림 및 작업 실행 설정

여기서는 이메일 알림을 선택하겠습니다. 보내는 사람, 받는 사람, SMTP 서버 주소, 제목, 본문 내용을 차례로 입력합니다.

Windows 이벤트 트리거 완벽 가이드: 특정 이벤트 발생 시 자동 알림 및 작업 실행 설정

작업 스케줄러에서 트리거 확인

마법사의 마지막 단계에서 트리거 설정을 검토할 수 있습니다. 완료하면 이벤트 4740에 연결된 새 작업이 작업 스케줄러에 등록됩니다. 관리 도구에서 작업 스케줄러 콘솔을 열면 Task Scheduler Library → Event Viewer Tasks 폴더에서 새 작업을 찾을 수 있습니다.

Windows 이벤트 트리거 완벽 가이드: 특정 이벤트 발생 시 자동 알림 및 작업 실행 설정

여기서 이벤트 트리거 설정을 변경하거나, 이벤트 응답을 강제로 테스트해볼 수도 있습니다.

Windows 이벤트 트리거 완벽 가이드: 특정 이벤트 발생 시 자동 알림 및 작업 실행 설정

팁: 하나의 트리거에 여러 개의 이벤트 ID를 연결해야 하는 경우, 각 ID를 쉼표로 구분하여 지정하면 됩니다.

트리거가 활성화되면 AD 계정이 잠길 때마다 지정된 이메일 주소로 알림 메일이 발송됩니다.

Windows 이벤트 트리거 완벽 가이드: 특정 이벤트 발생 시 자동 알림 및 작업 실행 설정

구버전 Windows에서의 대안: eventtriggers.exe

참고: Windows Server 2003 및 그 이전 버전에서는 콘솔 유틸리티인 eventtriggers.exe로 동일한 기능을 구현했습니다. 이 유틸리티 역시 시스템 로그의 이벤트를 모니터링하고 특정 이벤트에 트리거를 할당할 수 있습니다. 예를 들어, 4740 이벤트에 vbs 또는 PowerShell 스크립트를 연결해 관리자 사서함으로 이메일을 보내려면 다음과 같은 명령을 사용할 수 있습니다:

eventtriggers /create /TR "Lock Account" /TK "C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe c:\script\SendEmailAlert.ps1" /L Security /EID 4740

이벤트 세부 정보를 이메일에 첨부하기

기본 알림 메일에는 정보가 많지 않아, 이벤트 세부 내용을 확인하려면 이벤트 뷰어를 직접 열어야 합니다. 이번에는 이벤트 로그의 데이터를 이메일에 첨부해 보겠습니다. Windows 로그에서 이벤트 정보를 가져오려면 wevtutil 유틸리티를 사용하면 됩니다. 보안 로그에서 가장 최근의 4740 이벤트 정보를 가져오려면 다음 명령을 실행합니다:

wevtutil qe Security /q:"*[System[(EventID=4740)]]" /f:text /rd:true /c:1

두 줄로 구성된 스크립트(query.cmd)를 만듭니다. 첫 번째 줄은 기존 로그 파일을 삭제하고, 두 번째 줄은 최신 이벤트를 가져와 로그 파일에 저장합니다:

del c:\script\query.txt
wevtutil qe Security /q:"*[System[(EventID=4740)]]" /f:text /rd:true /c:1 > c:\script\query.txt

이제 작업 스케줄러에서 앞서 만든 트리거 설정을 엽니다. 동작(Actions) 탭에서 새 동작을 추가해 query.cmd 스크립트를 실행하도록 하고, 오른쪽 화살표 버튼을 사용해 해당 동작을 목록 맨 위로 이동시킵니다(스크립트가 먼저 실행되어야 합니다).

Windows 이벤트 트리거 완벽 가이드: 특정 이벤트 발생 시 자동 알림 및 작업 실행 설정

그다음 두 번째 동작인 이메일 발송을 편집하여 c:\script\query.txt 파일을 메일 첨부 파일로 지정합니다.

참고: 이 예제에서 작업이 정상적으로 동작하려면 관리자 권한으로 실행해야 합니다. 작업 설정에서 Run with highest privileges(가장 높은 권한으로 실행) 옵션을 반드시 체크하세요.

Windows 이벤트 트리거 완벽 가이드: 특정 이벤트 발생 시 자동 알림 및 작업 실행 설정

작업을 다시 테스트해 보면, 이제 관리자는 계정 이름, 잠금 시간 등 유용한 정보가 담긴 첨부 파일과 함께 알림 이메일을 받게 됩니다.

Windows 이벤트 트리거 완벽 가이드: 특정 이벤트 발생 시 자동 알림 및 작업 실행 설정

이벤트 트리거 활용 시 고려사항

팁: Windows 이벤트 트리거를 사용해 서버의 중요 문제를 관리자에게 알리는 것은 System Center Operations Manager나 Zenoss 같은 전문 모니터링 시스템을 완전히 대체하지는 못합니다. 하지만 추가 비용이나 교육 없이 바로 사용할 수 있는 간편한 내장 모니터링·알림 도구로서, 소규모 기업에 적합한 솔루션입니다.

시스템 로그의 이벤트에 스케줄러 작업을 연결하는 기능은 Windows Server 2008/Vista 이후 모든 Windows 버전에서 지원됩니다. 이 기능을 활용하면 서버에서 발생하는 특정 문제를 신속하게 관리자에게 알리고 즉시 대응할 수 있습니다.

참고: Windows Server 2012 R2의 작업 스케줄러에서는 이메일 전송 기능이 더 이상 지원되지 않습니다(deprecated). 대신 PowerShell 3.0의 Send-MailMessage cmdlet을 사용하는 것이 좋습니다.