이벤트 변수에 대한 Server 2008 전자 메일


13

Server 2008의 새로운 기능 중 하나는 이벤트 로그의 특정 이벤트에 작업을 연결하는 기능입니다. 사용 가능한 작업 중 하나는 SMTP 서버를 통해 전자 메일을 보내는 것입니다.

이것은 훌륭하게 작동하지만 메시지 본문에 이벤트 내용을 배치 할 수 있다면 이상적입니다. $ eventdescription 및 % eventdescription %을 사용해 보았지만 어두운 곳에서 촬영 한 것입니다. 인터넷 검색 량에 관계없이 결과는 없습니다.

이것이 가능한지 아는 사람이 있습니까?

업데이트 : 아래의 Sparks 제안은 올바른 방향으로 나아가는 단계이지만 해당 방법이 모든 값에서 작동하는 것은 아닙니다. 예를 들어, 표시된 것처럼 RecordID, Severity 및 Channel을 가져올 수 있지만 EventID 또는 가장 중요한 설명을 검색하기 위해 동일한 방법을 사용할 수는 없습니다.

한 이벤트의 원시 XML은 다음과 같습니다.

[Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event"]
  [System]
    [Provider Name="DFSR" /] 
    [EventID Qualifiers="16384"]4412[/EventID] 
    [Level]4[/Level] 
    [Task]0[/Task] 
    [Keywords]0x80000000000000[/Keywords] 
    [TimeCreated SystemTime="2009-05-14T18:18:09.000Z" /] 
    [EventRecordID]45692[/EventRecordID] 
    [Channel]DFS Replication[/Channel] 
    [Computer]servername.domain.com[/Computer] 
    [Security /] 
    [/System]
  [EventData]
    [Data]9046C3F4-843E-4A53-B941-4B20764072E5[/Data] 
    [Data]D:\departments\Geomatics\Plan Quality\Data Processing\CG3533017 2009-05-13 KT FIXED[/Data] 
    [Data]D:\departments[/Data] 
    [Data]{26D5F604-E603-4F87-8EC3-DE9A945DA8FD}-v927199[/Data] 
    [Data]Departments[/Data] 
    [Data]domain.ca\files\departments[/Data] 
    [Data]B8242CE2-F5EB-47DA-BA5B-1DD2F7EE3AB9[/Data] 
    [Data]DFAA7A54-66CB-4C31-81A0-0F861382C32C[/Data] 
    [Data]CG3533017 2009-05-13-{26D5F604-E603-4F87-8EC3-DE9A945DA8FD}-v927199[/Data] 
  [/EventData]
 [/Event]

EventData에 ValueQuery를 사용하려고 시도했지만 데이터가 리턴되지 않습니다.


+1-웹 서버에서 알림을 보내는 데 사용합니다. 이메일에 더 많은 정보가 필요합니다. 이 실을 계속 지켜 볼게요 ...
Keith Williams

답변:


3

나는 이것에 대해 조금 다르게 진행했지만이 방법은 전자 메일 본문에 포함 된 모든 이벤트 세부 정보와 함께 사용자 정의 필터와 일치하는 새로운 이벤트에 대한 전자 메일을 생성합니다.

1) 원하는 필터를 사용하여 이벤트 뷰어에서 '사용자 정의보기'를 작성하십시오.

2)보기가 있으면 '이 사용자 정의보기에 작업 첨부 ...'링크가 표시됩니다.

C : \ sendmail로 추출한 sendMail.exe ( http://caspian.dotconf.net/menu/Software/SendEmail/ ) 를 사용하기로 선택했습니다 . 그 이유는 Microsoft의 '전자 메일 보내기'작업에 SMTP 인증에 문제가 있으며 Server 2012에도 나타나지 않기 때문입니다.

그래서 내 경우에는 작업을 사용자 정의보기에 첨부하는 동안 '프로그램 시작'을 선택했습니다. 그러나 XML로 편집 할 것이므로 GUI를 통해 작성하는 것에 대해 걱정하지 않아도됩니다.

3) 새 작업을 XML로 내 보내면 나중에 편집 할 것입니다.

4) C : \ sendmail 폴더 아래에 'mail-event.bat'파일을 다음 3 줄로 만듭니다 :

C:\Windows\system32\wevtutil.exe qe Application /f:text /q:"<QueryList><Query Id='0' Path='Application'><Select Path='Application'>*[System[(EventRecordID=%1)]]</Select></Query></QueryList>" > C:\sendmail\%1.log
C:\sendmail\sendEmail.exe -s <smtp_server> -f <from> -xu <user> -xp <pass> -t <to> -u "<subject>" -o message-file=c:\sendmail\%1.log
del C:\sendmail\%1.log

'smtp_server', 'from', 'user', 'pass', 'to', 'subject'를 원하는 값으로 바꾸십시오.

그러면 C : \ sendmail 아래에 해당 이벤트에 대한 모든 세부 정보가 포함 된 '$ (EventRecordID) .log'파일이 생성되어 우편으로 발송됩니다.

이벤트 뷰어로 이동하여 응용 프로그램 로그에서 이벤트를 열고 세부 정보 탭으로 전환 한 다음 'XML보기'를 선택한 다음 EventRecordID를 찾아 배치 파일이 작동하는지 테스트 할 수 있습니다. 해당 정수를 복사 한 후 명령 행에서 실행하십시오.

C : \ sendmail> log-event.bat 53522

물론 53522를 EventRecordID 노드의 값으로 대체합니다. 이메일을 받으면 행복한 곳으로 가십시오.

참고 : wevtutil.exe의 명령 줄에 'Application'이라는 문자열이 두 번 나타나는 것을 알 수 있습니다. 사용자 지정보기에서 직접 가리키면 작동하지 않는 것 같습니다. 사용자 지정보기는 모두 응용 프로그램 로그 내에있는 이벤트의 하위 집합이되었습니다. 예를 들어, 시스템 로그에서 이벤트를 메일로 보내려는 경우 상황에 맞게 작동하도록 조정해야 할 수도 있습니다.

5) 내 보낸 XML을 편집하면 두 가지 변경 사항이 적용됩니다.

먼저 다음 'ValueQueries'노드를 'EventTrigger'노드 아래의 XML에 추가하십시오.

<EventTrigger>
  <Enabled>true</Enabled>
  <Subscription>...snip...</Subscription>
  <ValueQueries>
    <Value name="EventRecordID">Event/System/EventRecordID</Value>
  </ValueQueries>  
</EventTrigger>

참고 : 위에서, 나는 당신이 만든 사용자 정의보기에 따라 채워질 '구독'정보를 도청했습니다. 내 '구독'을 XML로 복사하지 마십시오!

둘째, 조치 노드를 다음으로 바꾸십시오.

<Actions Context="Author">
   <Exec>
     <Command>C:\sendmail\mail_event.bat</Command>
     <Arguments>$(EventRecordID)</Arguments>
   </Exec>
</Actions>

이제 새 이벤트가 사용자 정의보기에 나타나게되면 자동으로 이메일 알림을 받게됩니다! 우후!



1

Sparks에서 제공하는 링크의 문서를 사용하여 이벤트 스케줄러에서 내 보낸 XML에이 추가 행을 추가하여 이벤트 텍스트를 가져 오십시오.

<Value name="eventData">Event/EventData/Data</Value>

또한 흥미롭고 희망적 인 설명이 있습니다.

<Value name="eventTimeCreated">Event/System/TimeCreated/@SystemTime</Value>

이 인터넷 검색 "Event / System / EventRecordID"를 찾았습니다

그런 다음 작업에서 $ (eventData) 및 $ (eventTimeCreated) 변수를 참조 할 수 있습니다.

XML 계층을 단계별로 실행하여 값이 지정된 것처럼 보입니다. 원시 XML 덤프를 분해하여 슬래시 구분 표현식을 작성하여 이벤트의 모든 부분을 지정할 수있을 것으로 기대합니다.

이 구문에서 '/ @'은 공백 문자를 나타내는 것처럼 보입니다.


이것을 내 이벤트에 추가하면 다음에 DFSR 충돌이 발생할 때 작동하는지 확인할 수 있습니다. 답장을 보내 주셔서 감사합니다. 계속 알려 드리겠습니다.
Jeff Miles

1

이벤트 데이터 뒤에 있습니까?

유휴 시간 초과로 인해 IIS 응용 프로그램 풀이 종료 될 때마다 전자 메일을 보내야했습니다. 이메일 메시지에 종료되고있는 앱 풀의 이름을 원했습니다.

이것은 나를 위해 일했다 :

<Value name = "appPoolId"> 이벤트 / 이벤트 데이터 / 데이터 [@ Name = 'AppPoolID'] </ Value>


1

나는 이것이 작동하게 된 적이 없으며 Server 2012의 경우이 전자 메일 기능이 완전히 제거 된 것처럼 보입니다. 불행히도 막 다른 골목.


0

나는 당신의 아이디어 개발을 마쳤다고 생각합니다

<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.3" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
  <RegistrationInfo>
    <Date>2013-02-07T17:30:20.8644895</Date>
    <Author>QA\TimT</Author>
  </RegistrationInfo>
  <Triggers>
    <EventTrigger>
      <Enabled>true</Enabled>
      <Subscription>&lt;QueryList&gt;&lt;Query Id="0" Path="ForwardedEvents"&gt;&lt;Select Path="ForwardedEvents"&gt;*&lt;/Select&gt;&lt;/Query&gt;&lt;/QueryList&gt;</Subscription>
      <ValueQueries>
        <Value name="EventChannel">Event/System/Channel</Value>
        <Value name="EventComputer">Event/System/Computer</Value>
        <Value name="EventData">Event/EventData/Data</Value>
        <Value name="EventID">Event/System/EventID</Value>
        <Value name="EventRecordID">Event/System/EventRecordID</Value>
        <Value name="EventSeverity">Event/System/Level</Value>
        <Value name="Message">Event/RenderingInfo/Message</Value>
      </ValueQueries>
    </EventTrigger>
  </Triggers>
  <Principals>
    <Principal id="Author">
      <UserId>QA\Administrator</UserId>
      <LogonType>Password</LogonType>
      <RunLevel>LeastPrivilege</RunLevel>
    </Principal>
  </Principals>
  <Settings>
    <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
    <DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
    <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
    <AllowHardTerminate>true</AllowHardTerminate>
    <StartWhenAvailable>false</StartWhenAvailable>
    <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
    <IdleSettings>
      <StopOnIdleEnd>true</StopOnIdleEnd>
      <RestartOnIdle>false</RestartOnIdle>
    </IdleSettings>
    <AllowStartOnDemand>true</AllowStartOnDemand>
    <Enabled>true</Enabled>
    <Hidden>false</Hidden>
    <RunOnlyIfIdle>false</RunOnlyIfIdle>
    <DisallowStartOnRemoteAppSession>false</DisallowStartOnRemoteAppSession>
    <UseUnifiedSchedulingEngine>false</UseUnifiedSchedulingEngine>
    <WakeToRun>false</WakeToRun>
    <ExecutionTimeLimit>P3D</ExecutionTimeLimit>
    <Priority>7</Priority>
  </Settings>
  <Actions Context="Author">
    <SendEmail>
      <Server>mail.nowhere.com</Server>
      <Subject>$(EventComputer) reports event $(EventID) in $(EventChannel), record $(EventRecordID), severety $(EventSeverity)</Subject>
      <To>admin@nowhere.com</To>
      <From>reporter@nowhere.com</From>
      <Body>$(EventData)
$(Message)</Body>
      <HeaderFields />
      <Attachments />
    </SendEmail>
  </Actions>
</Task>

3 년 된 질문에 코드 덤프를 삭제하지 말고 수행 한 작업을 설명하십시오.
Sven
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.