イベント変数に関するServer 2008電子メール


13

Server 2008の新機能の1つは、イベントログ内の特定のイベントにタスクを添付する機能です。利用可能なアクションの1つは、SMTPサーバーを介して電子メールを送信することです。

これはうまく機能していますが、メッセージ本文にイベントの内容を配置できれば理想的です。$ eventdescriptionと%eventdescription%を使用してみましたが、これらは暗闇でのショットです。どんな量のグーグルでも結果は得られません。

これが可能かどうかは誰にもわかりますか?

更新:以下のSparksの提案は正しい方向への一歩であると信じていますが、その方法はすべての値に対して機能するとは限りません。たとえば、示されているようにRecordID、Severity、およびChannelを取得できますが、EventID、または最も重要な説明を取得するために同じメソッドを使用することはできません。

1つのイベントからの生の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-これを使用してWebサーバーからアラートを送信します。1つは、電子メールで詳細を知りたいと思います。このスレッドに注目します...
キース・ウィリアムズ

回答:


3

これについては少し異なりますが、このアプローチでは、カスタムフィルターに一致する新しいイベントでメールが生成され、すべてのイベントの詳細がメール本文に含まれます。

1)イベントビューアーで、目的のフィルターを使用して「カスタムビュー」を作成します。

2)ビューを取得したら、「このカスタムビューにタスクを添付...」へのリンクが表示されます。

ここからsendMail.exeを使用することを選択しました(http://caspian.dotconf.net/menu/Software/SendEmail/)。これをC:\ sendmailに抽出しました。その理由は、Microsoftの「電子メールの送信」アクションにSMTP認証に関する問題があり、明らかにServer 2012にも存在しないことです。

そのため、私の場合、カスタムビューにタスクをアタッチするときに「プログラムの開始」を選択しました。ただし、XMLとして編集するので、GUIを使用して入力する必要はありません。

3)新しいタスクをXMLにエクスポートします。後で編集します。

4)C:\ sendmailフォルダーの下に次の3行を含む「mail-event.bat」ファイルを作成します。

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

もちろん、52222をEventRecordIDノードの値に置き換えます。メールを受け取ったら、あなたの幸せな場所に行きます。

注:wevtutil.exeのコマンドラインに「Application」という文字列が数回表示されることに気付いたかもしれません。これは、カスタムビューで直接ポイントして動作させることができないためです。カスタムビューは、すべてアプリケーションログ内にあるイベントのサブセットでした。たとえば、システムログからイベントをメール送信しようとする場合、ケースで機能するように調整する必要があります。

5)エクスポートしたXMLを編集します。2つの変更を行います。

最初に、次の「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の競合が発生したときに機能するかどうかを確認します。答えてくれてありがとう。
ジェフマイルズ

1

あなたはイベントデータの後ですか?

私の要件は、アイドルタイムアウトが原因でIISアプリケーションプールがシャットダウンするたびに電子メールを送信することでした。シャットダウンされたアプリプールの名前を電子メールメッセージに表示したかったのです。

これは私のために働いた:

<Value name = "appPoolId"> Event / EventData / Data [@ Name = 'AppPoolID'] </ Value>


1

これが機能するようになったことは一度もありませんでした。Server2012では、この電子メール機能は完全に削除されたようです。残念ながら行き止まり。


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年前の質問で)コードダンプをドロップするだけでなく、何をしたのかを説明してください。
スヴェン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.