Date: 10 11 月, 2018
循序漸進:如何從Windows性能監視器觸發電子郵件警報
循序漸進:如何從Windows性能監視器觸發電子郵件警報
循序漸進:如何從Windows性能監視器觸發電子郵件警報
Windows性能計數器警報可以配置為通過使用用戶定義的數據收集器集在任何性能監視器(Perfmon)計數器上觸發。但是,如果您希望在觸發警報時通過電子郵件收到通知,則必須使用Perfmon,任務計劃程序和好的'Powershell'的組合。按照以下步驟從Windows性能監視器觸發電子郵件警報。
第1步 – 編寫Powershell腳本
您需要做的第一件事是編寫一個Powershell腳本,在運行時可以發送電子郵件。在研究這個問題時,我發現了很多方法來完成這項任務。 我要向您展示的只是一種方式,但您可以隨意嘗試並使用適合您環境的方法。在我的實驗室中,我沒有運行自己的SMTP服務器。我編寫了一個可以利用我的Gmail帳戶的腳本。您將在我的Powershell腳本中看到,對SMTP服務器進行身份驗證的電子郵件帳戶的密碼是純文本格式。如果您擔心某人可能有權訪問您的腳本並發現您的密碼,那麼您將需要加密您的憑據。Gmail需要和SSL連接。您的密碼應該是安全的,就像任何其他電子郵件客戶端一樣。以下是與Task Scheduler和Perfmon結合使用時Powershell腳本的示例。它們可以在滿足任何用戶定義的性能計數器閾值條件時自動發送電子郵件警報。在我的環境中,我將其設置為C: Alerts Alerts.ps1
$ counter = $ Args [0] $ dtandtime = $ Args [1] $ ctr_value = $ Args [2] $ threshold = $ Args [3] $ value = $ Args [4] $文件名=“$ ENV:計算機名” $ EmailFrom =“sios@medfordband.com” $ EmailTo =“dave@medfordband.com” $ Subject =“來自$ FileName的警報” $ Body =“數據和警報時間:$ dtandtime`nPerfmon計數器:$ ctr_value`nThreshold值:$ threshold`n當前值:$ value” $ SMTPServer =“smtp.gmail.com” $ SMTPClient = New-Object Net.Mail.SmtpClient($ SmtpServer,587) $ SMTPClient.EnableSsl = $ true $ SMTPClient.Credentials = New-Object System.Net.NetworkCredential(“sios@medfordband.com”,“ChangeMe123”); $ SMTPClient.Send($ EmailFrom,$ EmailTo,$ Subject,$ Body)
從Powershell腳本生成的電子郵件示例如下所示。 你可能已經註意到這個Powershell腳本有四個參數。它還將它們分配給輸出中使用的變量。它將計算機名稱保存到變量中,該變量用作輸出的一部分。通過這樣做,該腳本可用於在任何Perfmon警報計數器和任何服務器上發送電子郵件,而無需額外的自定義。
第2步 – 設置計劃任務
在任務計劃程序中,我們將在以下屏幕截圖中顯示創建新任務。 為任務命名,您需要記住它以進行下一步。 請注意,沒有觸發器。此任務實際上將通過我們將在步驟3中設置的Perfmon計數器警報觸發。 您想在“操作”選項卡上定義新操作。操作將是啟動程序並使用以下輸入。請根據您的具體環境進行調整。程序腳本:C: Windows System32 WindowsPowerShell v1.0 powershell.exe添加參數:-File C: Alerts Alerts.ps1 $(Arg0)
第3步 – 創建性能計數器
創建新的數據收集器集添加要監視的性能計數器並設置警報閾值。 創建數據收集器集後,請進入其屬性,並確保為每個性能計數器正確設置警報閾值和样本間隔。請記住,如果您每10秒採樣一次,那麼只要性能計數器超過您設置的閾值,您就應該每隔10秒收到一封電子郵件。 如果選擇在應用程序事件日誌中記錄條目,則不希望在正常的應用程序事件日誌中看到任何條目。它將寫入應用程序和服務日誌目錄中的Microsoft-Windows-Diagnosis-PLA / Operational日誌。 然後最後我們必須設置一個警報任務,它將觸發我們在步驟2中創建的計劃任務(EmailAlert)。您會看到我們還傳遞了一些Powershell腳本使用的Task參數,以自定義具有與Alert相關的確切錯誤條件的電子郵件。 正確配置Data Collector後,您將需要啟動它。 如果您正確配置了所有內容,則應在滿足警報閾值時開始查看電子郵件。如果它似乎不起作用,請檢查以下內容……
- 手動運行Powershell腳本以確保其有效。您可能需要手動設置一些變量以用於測試目的。在我的情況下,需要稍微調整以使Powershell腳本正常工作,所以從此開始。
- 檢查任務歷史記錄以確保警報計數器正在觸發任務。
- 手動運行任務,看它是否觸發Powershell。
步驟4 – 將性能計數器設置為自動運行
如果您認為已全部設置為從Windows性能監視器觸發電子郵件警報,則還有一個步驟。每當您重新啟動服務器時,Perfmon Counter Alert都不會自動啟動。為了在重新啟動後繼續運行,您必須在命令提示符下運行以下命令。注意下面腳本中引用的“警報”是我的用戶定義的數據收集器集的名稱。
schtasks / create / tn Alerts / sc onstart / tr“logman start Alerts”/ ru system
有一些邊緣情況,您可能需要創建另一個觸發器來啟動Data Collector集。例如,SIOS DataKeeper Perfmon計數器僅從鏡像源收集數據。如果您嘗試在目標服務器上啟動數據收集集,您將看到它無法啟動。但是,如果您的群集進行故障轉移,則舊目標現在將成為鏡像的源,因此您需要開始監視該新源上的DataKeeper計數器。您可以創建一個群集通用腳本資源,在故障轉移時啟動數據收集器集,但這是另一個主題。確保計數器在新源上運行的更簡單方法是設置由EventID觸發的計劃任務,該事件ID指示服務器正在成為鏡像源。在這種情況下,我在兩個系統上設置觸發器,以便每次發生EventID 23時,Trigger運行Logman以啟動數據收集器集。每次發生故障轉移時,新系統成為源時會記錄事件ID 23,因此數據收集器集將自動開始。 就是這樣,如果您關心的任何Perfmon計數器開始失控,您現在可以直接從您的服務器接收電子郵件警報。
您是否喜歡閱讀如何從Windows性能監視器觸發電子郵件警報?請點擊這裡了解更多。經Clusteringformeremortals.com許可轉載