2012年8月17日 星期五

使用Windows 事件檢視器對特定事件觸發管理動作 (Attach tasks to Windows event viewer logs and events)

Windows Vista/2008以後的事件檢視器新增了二項重要的功能--附加工作到特定的事件及事件訂閱功能,這二項功能大幅強化了微軟日誌功能的偵測與監控能力,因為您可以在發生特定關注事件時,立即收到通知或自動執行必要的管控工作,您也可以在一部機器上同時觀看多部伺服器的記錄檔,本文將說明如何透過事件檢視器來設定某特殊事件一旦發生時,管理員可以立即收到通知或自動執行特定程式以達到即時偵測、警示與控管的目的。

底下將透過範例來說明如何利用事件檢視器來設定自動觸發特定事件的排程動作。

公司內有部老舊IIS伺服器,近日偶會無預警的發生WWW服務意外中止的錯誤 (事件識別碼 7034),而導致應用程式可能無法正常運作,基於預算或其它因素的考量,短期內並無法汰舊或修復這部電腦,但IT人員必需即時掌控這部電腦 WWW服務意外中止的狀況,以便可以確認機器上所必需執行的網頁應用服務是否均正常執行中,所以IT人員決定利用事件檢視器設定以郵件方式通知管理人員,一旦WWW發生非預期錯誤時IT管理人員可以儘早檢查機器上的IIS應用程式是否正常。

iis7034

執行7034事件附加工作

為了能夠讓IT人員隨時掌握WWW是否有意外中止的現象,所以規劃的做法在事件識別碼7034一發生時,馬上送給IT人員一份通知的郵件,詳細的做法及步驟如下:

  1. 開啟『事件檢視器』(eventvwr.msc)。
  2. 按一下左側樹狀目錄的『Windows 記錄—>系統』。
  3. 請在系統記錄檔以篩選或尋找的方式找到事件識別碼為7034,然後按一下滑鼠右鍵並在出現的右鍵功能表上按一下『附加工作到此事件』選項。
     iis7034a
  4. 畫面會出現一個『建立基本工作』的精靈程式,總共需要四個步驟來完成這個精靈程式,首先輸入易懂的工作名稱以及描述,然後按『下一步』繼續。
     iis7034b
  5. 第二步驟為確認需要執行工作的特定事件,由於上面是直接由6009事件記錄的右鍵功能表啟用此精靈程式,所以畫面上顯示了在執行項工作的將為系統記錄檔內的7034識別碼的事件,無法讓您變更,請直接按『下一步』繼續以進行最重要的第三個步驟。
  6. 接下來的『執行』畫面需要選擇所要執行的動作,您有三種選擇,當您選擇不同的動作後,接下來的設定動作視窗自然隨之不同:
    6009_2
    • 啟動程式 :這是最有彈性的選項,因為它可以讓您隨意執行任何程式,批次檔或指令檔並附加上適當的參數,所以如果您需要事件發生時執行複雜的工作時,透過此項動作應該是最合適, 下圖顯示啟動程式的設定畫面,您必需輸入要執行的程式或指令檔名稱,必要時附加正確的參與執行的位置。
      program
    • 傳送電子郵件:這是最普遍的事件通知方式,待事件發生後,立即依據設定傳送電子郵件進行通知動作,下圖為設定郵件傳遞的畫面,在此您可以輸入寄件者與收件者的郵件位址,主旨、郵件內容、附件以及所需要連接的SMTP郵件伺服器等資訊,不過在此的SMTP 郵件伺服器必需和您機器上預設郵件用戶端軟體(例如Windows Live Mail)的E-Mail帳戶的設定一樣才行。對許多公司的伺服器而言,上頭根本不會也不必安裝任何郵件用戶端軟體,所以此頁設定對許多電腦而言並不實用。
      mailnotify
    • 顯示訊息 :這是一種簡易通知或警告方式,只會在機器桌面顯示一個訊息方塊,至於其標頭和內容需要預先在輸入欄位中加以定義。
      iis7034j
    在本範例中,打算透過gmail來傳送通知郵件,由於gmail需採用身份驗證且加密連線方式,但本機器上也無任何郵件用戶軟體可設定連接寄送方式,所以並無法直接使用第二個選項『傳送電子郵件』來直接進行郵件通知動作,而需採用『啟動程式』方式來自訂送信設定,但欲搭配工作排程來自動送郵件通知就需依賴命令列程式或指令才行,幸好網路上有免費可供下載使用的郵件傳遞軟體,可省除我們自行撰寫程式與指令檔的麻煩,在此建議下載由Brandon Zehm撰寫且免費的sendemail 來做為命令列傳遞郵件程式, 這個郵件傳送的命令列程式易於使用,功能豐富又可支援TLS,正符合範例下的環境使用。
    sendemail1
    請在此執行頁面,勾選第一項『啟動程式』選項,再按『下一步』繼續。
  7. 接下來,請在『啟動程式』設定頁上輸入傳送郵件的sendemail程式與正確參數來傳遞通知郵件。
    sendemail2
    上述的sendemail參數相當冗長,完整的參數列於底下,暗紅色部份需自行修改,此外,郵件標題請勿使用中文,易出現亂碼現象,若郵件內文使用中文,請如下列所示須額外增添 "-o message-content-type=html -o message-charset=utf8 " 參數,
    -f username@gmail.com -u WWW Service Stop Notification -m WWW已發生非預期停止,請立即檢查所有網頁應用程式的正確性 -t username@mailsuffix -s smtp.gmail.com:587 -xu username@gmail.com -xp password -o message-content-type=html -o message-charset=utf8 -o tls=yes
    小心輸入上述參數後,請按『下一步』繼續。
  8. 最後於『摘要』設定頁上檢查相關設定是否正確無誤,如有須要,請勾選『當我按[完成]時開啟這項工作的[內容]對話方塊』以便可進一步修改排程工作相關選項。
    iis7034c
  9. 若日後有變更需要,則可開啟『工作排程器』來修改、停止或刪除此事件所附加的工作,此外,您也可以利用『執行』來立即執行一次動作以確認事件附加的動作是否如預期般的正確執行,不過即使執行無誤也僅表示其動作內容的設定無誤,一旦發生事件是否能夠正確的觸發動作還受到其它因素影響,故第一次設定好了之後,仍需仔細觀查事件發生時是否真能觸發動作。
    event_taskexec

後記

替特定事件發生時建立附加的工作,在消極上可通知IT人員以便可以隨時掌控某些系統狀況,積極上則可提供事件即時回應處理機制,不過若須要進行較複雜的工作,大多得撰寫適當的指令檔和批次檔,因此IT人員若可以善用這項事件附加工作的功能,再加以撰寫指令檔將有助於降低IT人員監控系統的負荷並建立一個較易維護管理的系統。

由於智慧型手機的普遍,IT人員在幾乎隨時隨地均可接收郵件,所以對於需要監控許多系統的IT人員而言,將偵測或監控到的不可預期意外事件,利用電子郵件通知管理人員不失為一個即時、有效、簡便又普遍支援的方式,sendemail這個小巧好用的傳遞郵件命令列工具,正適合用來協助IT人員自動排程傳送通知郵件。

 

【相關文章】