Email máy chủ 2008 về các biến sự kiện


13

Một trong những tính năng mới của Server 2008 là khả năng đính kèm một tác vụ vào một sự kiện cụ thể trong nhật ký sự kiện. Một trong những hành động khả dụng là gửi email thông qua máy chủ SMTP.

Điều này đang hoạt động rất tốt, tuy nhiên sẽ rất lý tưởng nếu trong phần thân thông điệp, nội dung Sự kiện có thể được đặt. Tôi đã thử sử dụng $ eventdescrip và% eventdescrip%, nhưng đó chỉ là những bức ảnh trong bóng tối. Bất kỳ số lượng googling tạo ra không có kết quả.

Có ai biết nếu điều này là có thể?

Cập nhật : Đề xuất của Sparks dưới đây là một bước đi đúng hướng tôi tin, tuy nhiên phương pháp đó dường như không hoạt động đối với tất cả các giá trị. Ví dụ: tôi có thể kéo RecordID, Severity và Channel như được hiển thị, nhưng tôi không thể sử dụng cùng một phương pháp để truy xuất EventID hoặc quan trọng nhất là mô tả.

Đây là XML thô từ một sự kiện:

[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]

Tôi đã thử sử dụng ValueQuery cho EventData, nhưng nó không trả về dữ liệu.


+1 - chúng tôi sử dụng điều này để gửi thông báo từ máy chủ web của mình và tôi muốn biết thêm thông tin trong email! Tôi sẽ theo dõi chủ đề này ...
Keith Williams

Câu trả lời:


3

Tôi đã làm điều này một chút khác nhau, nhưng cách tiếp cận này tạo ra email về các sự kiện mới phù hợp với bộ lọc tùy chỉnh, với tất cả các chi tiết sự kiện có trong phần thân email.

1) Tạo 'Chế độ xem tùy chỉnh' trong Trình xem sự kiện với bộ lọc mong muốn của bạn.

2) Khi bạn có chế độ xem, bạn sẽ thấy một liên kết đến 'Đính kèm tác vụ với Chế độ xem tùy chỉnh này ...'.

Tôi đã chọn sử dụng sendMail.exe từ đây ( http://caspian.dotconf.net/menu/Software/SendEmail/ ) mà tôi đã trích xuất thành C: \ sendmail. Lý do là hành động 'Gửi email' của Microsoft có vấn đề với xác thực SMTP và dường như thậm chí không có trong Máy chủ 2012.

Vì vậy, trong trường hợp của tôi, tôi đã chọn 'Bắt ​​đầu một chương trình' trong khi đính kèm tác vụ vào Chế độ xem tùy chỉnh. Nhưng chúng tôi sẽ chỉnh sửa nó dưới dạng XML, vì vậy đừng lo lắng về việc điền nó thông qua GUI.

3) Xuất tác vụ mới sang XML, chúng tôi sẽ chỉnh sửa nó sau.

4) Tạo tệp 'mail-event.bat' trong thư mục C: \ sendmail với 3 dòng sau:

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

Rõ ràng, thay thế 'smtp_server', 'từ', 'người dùng', 'vượt qua', 'thành', 'chủ đề' bằng các giá trị mong muốn.

Điều này sẽ tạo tệp '$ (EventRecordID) .log' trong C: \ sendmail với tất cả các chi tiết cho sự kiện đó, gửi thư và sau đó xóa nó.

Bạn có thể kiểm tra xem tệp bó có hoạt động hay không bằng cách vào Trình xem sự kiện, mở một sự kiện trong nhật ký Ứng dụng của bạn, chuyển sang tab Chi tiết, chọn View Chế độ xem XML 'và sau đó tìm kiếm EventRecordID. Sao chép số nguyên đó, rồi chạy từ dòng lệnh:

C: \ sendmail> log-event.bat 53522

Tất nhiên, thay thế 53522 bằng giá trị từ nút EventRecordID. Nếu bạn nhận được email, hãy đến nơi hạnh phúc của bạn.

LƯU Ý: Bạn có thể đã nhận thấy chuỗi 'Ứng dụng' hiển thị một vài lần trong dòng lệnh cho wevtutil.exe - đó là vì tôi dường như không thể làm cho nó hoạt động bằng cách trỏ trực tiếp vào Chế độ xem tùy chỉnh và Chế độ xem tùy chỉnh là một tập hợp các sự kiện nằm trong Nhật ký ứng dụng. Bạn có thể phải điều chỉnh điều đó để làm cho nó hoạt động trong trường hợp của bạn nếu bạn cố gửi các sự kiện từ nhật ký hệ thống chẳng hạn.

5) Chỉnh sửa XML bạn đã xuất, chúng tôi sẽ thực hiện hai thay đổi:

Đầu tiên, thêm nút 'ValueQueries' sau vào XML dưới nút 'EventTrigger':

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

LƯU Ý: Trong phần trên, tôi đã cắt thông tin 'Đăng ký' sẽ được điền dựa trên Chế độ xem tùy chỉnh mà bạn đã tạo. Đừng sao chép 'Đăng ký' của tôi vào XML của bạn!

Thứ hai, thay thế nút Hành động bằng cách sau:

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

Bây giờ, khiến một sự kiện mới xuất hiện trong Chế độ xem tùy chỉnh của bạn và bạn sẽ tự động nhận thông báo qua email! Woohoo!



1

Sử dụng tài liệu trong liên kết do Sparks cung cấp, thêm dòng bổ sung này vào XML được xuất từ ​​Trình lập lịch tác vụ để nhận văn bản sự kiện của bạn:

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

Cũng thú vị (và hy vọng tự giải thích):

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

Tôi đã tìm thấy "Sự kiện / Hệ thống / Sự kiện / Sự kiện" này của Google

Sau đó, bạn có thể tham chiếu các biến $ (eventData) và $ (eventTimeCreated) trong tác vụ của mình.

Dường như các giá trị được chỉ định bằng cách chuyển qua phân cấp XML. Tôi hy vọng bạn có thể chỉ định hầu hết mọi phần của sự kiện bằng cách phân tách kết xuất XML thô để tạo biểu thức phân cách gạch chéo.

Dường như '/ @' là viết tắt của một ký tự khoảng trắng trong cú pháp này.


Chỉ cần thêm điều này vào các sự kiện của tôi, chúng tôi sẽ xem liệu nó có hoạt động vào lần tới khi có xung đột DFSR không. Cảm ơn câu trả lời, tôi sẽ giữ cho bạn được đăng.
Jeff Miles

1

Bạn có sau dữ liệu sự kiện?

Yêu cầu của tôi là gửi email bất cứ khi nào một Nhóm ứng dụng IIS ngừng hoạt động do hết thời gian rảnh. Tôi muốn tên của nhóm ứng dụng đã bị tắt để xuất hiện trong thông báo email.

Điều này làm việc cho tôi:

<Tên giá trị = "appPoolId"> Sự kiện / Sự kiện / Dữ liệu [@ Name = 'AppPoolID'] </ Value>


1

Tôi chưa bao giờ kết thúc việc này để hoạt động và có vẻ như đối với Server 2012, chức năng email này đã bị xóa hoàn toàn. Thật không may.


0

Tôi đoán tôi đã hoàn thành việc phát triển ý tưởng của bạn

<?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>

Xin vui lòng, đừng bỏ một số mã kết xuất (vào câu hỏi ba năm tuổi), nhưng hãy giải thích những gì bạn đã làm.
Sven
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.