2023/03/29

,

Windows 특정 이벤트 로그 실시간 알림

Windows 특정 이벤트 로그 실시간 알림

Windows-event-log-real-time-notification
<기록되어선 안 될 이벤트 로그, Event ID 7>

대재난을 예방할 수 있는 이벤트 로그

초보 운전자와 베테랑 운전자의 차이점 중 하나는 자동차 자가 진단/정비 수준이 아닐까 싶다. 초보 운전자는 운전 중에 뭔가 잘못된 점을 느껴야 정비소를 찾아간다. 베테랑 운전자는 수시로 자가 점검하여 문제가 발생하기 전에 조처하여 정비소 갈 일을 최소화한다. Windows 사용자도 비슷하지 않을까 싶다. 윈도우 초보자는 부팅 불능 등의 심각한 문제가 발생할 때까지 이벤트 로그를 살필 생각을 안 한다. 윈도우 숙련자는 틈틈이 이벤트 로그를 살피며 현재 어떤 문제가 있는지 수시로 확인한다.

그렇다고 해도 윈도우 이벤트 로그 중 오류 대부분은 무시해도 윈도우 사용에 지장이 없고, 그래서 많은 사용자가 이벤트 로그를 무시하거나 애써 확인하려 들지 않는다. 하지만, 개중엔 앞으로 발생할 수 있는 대재난을 예고하는 치명적이고 심각한 로그라 절대로 무시해서는 안 되는 로그도 있다. 예를 들면 디스크에 심각한 결함이 있음을 알려주는 ‘Event ID: 7, Source: Disk’ 로그가 그렇다.

\Device\Harddisk 장치에 잘못된 블록이 있습니다.
\Device\Harddisk has a bad block

얼마 전에 트랜센드 NVMe MTE220S 1TB에 위와 같은 로그가 발생했고, 이 오류는 chkdsk /f /r 명령어로 수리하기 전까지 프리징/블루스크린/부팅 불가 증상을 유발했다.

해당 SSD에 배드섹터도 몇 개 발견되어 AS 보내기 전에 자료를 백업하고, 디스크 초기화 및 포맷(빠른 포맷이 아닌 일반 포맷)했더니 (그리고 자료를 복원한 후에도) 배드섹터가 사라져 일단 지금은 그대로 사용 중이지만, 만일 한 번 더 같은 증상이 발생하면 AS 보낼 것인데, 그렇다고 매시간 이벤트 로그를 확인하기는 귀찮다. 그래서 생각한 것이 특정 이벤트가 발생할 때 알림을 받을 수 있다면 좋을 것 같다는 것이다.

작업 스케줄러 절전모드 해제 시 특정 프로그램 실행」의 경우처럼 특정 이벤트 로그가 기록될 때 사용자에게 알려주는 작업 스케줄러를 등록하는 것이 가능하고, 또한 친절하게도 이벤트 뷰어에 그런 기능이 포함되어 있다.

특정 이벤트 발생 시 사용자에게 알림창 띄우기 #1

Windows-event-log-real-time-notification

오늘 테스트에 사용할 이벤트 오류는

Event ID – 36871 | TLS 클라이언트 자격 증명을 만드는 동안 오류가 발생했습니다. 내부 오류 상태는 10013입니다(A fatal error occurred while creating a TLS client credential. The internal error state is 10013).

를 사용했다.

1. 이벤트 뷰어에서 알림을 받고 싶은 로그에서 마우스 우클릭 메뉴를 열어 [이 이벤트에 작업 연결]을 선택한다.

Windows-event-log-real-time-notification

2. 작업 이름과 설명을 적당히 입력한다.

Windows-event-log-real-time-notification

3. 특정 이벤트가 기록될 때 수행할 프로그램을 설정할 수 있는데, 아래 동영상의 예시처럼 알림 메시지를 받고 싶다면, 메모장을 사용해 Visual Basic Script(확장자 vbs)를 만든 다음 아래 코드를 이용해 ’수행할 프로그램‘에 등록하면 된다.

예: MsgBox "TLS 클라이언트 자격 증명을 만드는 동안 오류가 발생했습니다. 내부 오류 상태는 10013입니다", 64, "TLS client credentials"
문법: MsgBox "메시지 상자 내용", 64, "메시지 상자 제목“

한글이 온전하게 출력되려면 인코딩을 UTF/유니코드가 아니라 메모장 기본값인 ANSI로 설정해야 하고 파일 이름은 영문으로, 그리고 공백이 없어야 한다(예: TLS client credentials.vbs -> X, TLS_client_credentials.vbs -> OK).

Windows-event-log-real-time-notification

4. ”[마침]을 클릭할 때 이 작업의 [속성] 대화 상자 열기”을 선택해 방금 등록한 작업의 [속성] 창을 열자.

Windows-event-log-real-time-notification

5. 위 사진을 참고해 기본값에서 몇몇 설정을 변경하자.

Windows-event-log-real-time-notification

6. 이벤트 뷰어에서 생성한 작업은 [작업 스케줄러]의 [이벤트 뷰어 작업] 폴더에 담겨 있다. 아래 동영상은 이렇게 생성한 작업이 작동하는 예시이다.

‘Event ID – 36871’는 특정 프로그램이 보안이 안 된 80 포트를 사용하여 인터넷에 접속할 때 기록되는 것을 알 수 있다.

특정 이벤트 발생 시 사용자에게 알림창 띄우기 #2

Windows-event-log-real-time-notification

앞선 경우는 이벤트 뷰어에 기록된 로그의 경우였고, (Event ID 7처럼) 아직 발생하지 않은 로그의 경우에는 [작업 스케줄러]에서 수동으로 등록해야 한다.

방법은 「작업 스케줄러 절전모드 해제 시 특정 프로그램 실행」을 참고하면 된다.

Event ID 7 알림 작업스케줄러 및 메시지 알림 스크립트

System_disk_7 장치에 잘못된 블록이 있습니다.xml 다운로드 링크


사용 방법은, [작업 스케줄러]에서 [작업 가져오기]로 XML 파일을 불러온 다음 [속성]을 열어 [보안 옵션] > [작업을 실향할 때 사용할 사용자 계정]에서 계정을 변경해주고, [동작]에서 vbs 파일 위치를 재지정해주면 될 것 같다

마무리

이렇게 특정 이벤트가 발생할 때 메시지 알림을 받도록 설정해 놓으면 어떤 상황에서 어떤 이벤트가 발생하는지 알 수 있어 오류를 수정하는 데 도움이 될 뿐만 아니라 Event ID 7 같은 경우는 SSD/HDD 급사망 같은 재앙을 미리 방지하는 데 도움이 되므로 [작업 스케줄러]에 메시지 알림을 등록할 것을 강력하게 권장한다.

또한, [작업 스케줄러]에 등록한 작업은 [내보내기] 메뉴로 XML 파일로 저장할 수 있고, 이렇게 저장한 XML 파일을 [작업 가져오기]로 불러오는 것이 가능하다.

이로써 윈도우 포맷하기 전에 해야 할 작업이 하나 더 생겼다. [작업 스케줄러]에 등록한 사용자 정의 작업을 백업하는 일이다.

비록 보잘 것 없지만 광고 수익(Ad revenue)은 블로거의 콘텐츠 창작 의욕을 북돋우는 강장제이자 때론 하루하루를 이어주는 즐거움입니다

Share:

0 comments:

댓글 쓰기

댓글은 검토 후 게재됩니다.
본문이나 댓글을 정독하신 후 신중히 작성해주세요