SIOS SANless clusters

SIOS SANless clusters High-availability Machine Learning monitoring

  • Home
  • 產品
    • SIOS DataKeeper for Windows
    • SIOS Protection Suite for Linux
  • 新闻与活动
  • 伺服器集群简单化
  • 成功案例
    • 台灣成功案例
  • 聯繫我們
  • English
  • 中文 (中国)
  • 中文 (台灣)
  • 한국어
  • Bahasa Indonesia
  • ไทย

如何使用Windows Server 2016從Windows事件觸發電子郵件警報

Date: 9 11 月, 2018

使用Windows Server 2016從Windows事件觸發電子郵件警報

循序漸進:如何使用Windows Server 2016從包含事件詳細信息的Windows事件觸發電子郵件警報

介紹

從Windows事件觸發電子郵件警報使用Windows Server 2016只需要幾個步驟。指定觸發該任務時將發生的操作。由於Microsoft已決定棄用“發送電子郵件”選項,因此我們唯一的選擇是啟動程序。在我們的例子中,該程序將是一個Powershell腳本,用於收集事件日誌信息並對其進行解析。這樣,我們就可以發送包含重要日誌事件詳細信息的電子郵件。此工作已在Windows Server 2016上得到驗證。但我懷疑它應該適用於Windows Server 2012 R2和Windows Server 2019。如果您在任何其他平台上工作,請發表評論,如果您需要更改任何內容,請告訴我們。

步驟1-編寫Powershell腳本

首先要做的是寫一個Powershell腳本,運行時可以發送電子郵件。在研究這個問題時,我發現了很多方法來完成這項任務,所以我要向您展示的只是一種方式,但您可以隨意嘗試並使用適合您環境的方法。在我的實驗室中,我沒有運行自己的SMTP服務器,因此我必須編寫一個可以利用我的Gmail帳戶的腳本。您將在我的Powershell腳本中看到,對SMTP服務器進行身份驗證的電子郵件帳戶的密碼是純文本格式。如果您擔心某人可能有權訪問您的腳本並發現您的密碼,請加密您的憑據。Gmail需要和SSL連接。 您的密碼應該是安全的,就像任何其他電子郵件客戶端一樣。我有一個Powershell腳本的例子。與任務計劃程序一起使用時,它將在Windows事件日誌中記錄任何指定的事件時自動發送電子郵件警報。在我的環境中,我將此腳本保存到C: Alerts DataKeeper.ps1

$ EventId = 16,20,23,150,219,220

$ A = Get-WinEvent -MaxEvents 1 -FilterHashTable @ {Logname =“System”; ID = $ EventId}
$ Message = $ A.Message
$ EventID = $ A.Id
$ MachineName = $ A.MachineName
$ Source = $ A.ProviderName


$ EmailFrom =“sios@medfordband.com”
$ EmailTo =“sios@medfordband.com”
$ Subject =“來自$ MachineName的警報”
$ Body =“EventID:$ EventID`nSource:$ Source`nMachineName:$ MachineName`nMessage:$ Message”
$ 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”,“mySMTPP @ 55w0rd”);
$ SMTPClient.Send($ EmailFrom,$ EmailTo,$ Subject,$ Body)

從Powershell腳本生成的電子郵件示例如下所示。使用Windows Server 2016從Windows事件觸發電子郵件警報 您可能已經註意到,此Powershell腳本使用Get-WinEvent cmdlet根據指定的LogName,Source和eventID獲取最新的Event Log條目。然後它解析事件並將EventID,Source,MachineName和Message分配給將用於撰寫電子郵件的變量。您將看到指定的LogName,Source和eventID與您在步驟2中設置計劃任務時指定的ID相同。

第2步 – 設置計劃任務

在任務計劃程序中創建一個任務,如以下屏幕截圖所示。

  1. 創建任使用Windows Server 2016從Windows事件觸發電子郵件警報務確保將任務設置為“運行”,無論用戶是否已登錄。使用Windows Server 2016從Windows事件觸發電子郵件警報
  2.  在“觸發器”選項卡上,選擇“新建”以創建將啟動“在事件上”任務的觸發器。在我的示例中,我將創建一個事件,觸發任何時候DataKeeper(extmirr)將重要事件記錄到系統日誌。使用Windows Server 2016從Windows事件觸發電子郵件警報 創建一個自定義事件和新事件過濾器,如下所示…對於我的觸發器,使用Windows Server 2016從Windows事件觸發電子郵件警報我觸發通常受監控的SIOS DataKeeper(ExtMirr)EventIDs 16,20,23,150,219,220。您需要設置事件以觸發要監視的特定事件。如果要通知來自不同日誌或來源的事件,可以將多個觸發器放在同一個任務中。
    使用Windows Server 2016從Windows事件觸發電子郵件警報
    創建一個新的事件過濾器

     

  3. 配置事件觸發器後,您將需要配置事件運行時發生的操作。在我們的例子中,我們將運行我們在步驟1中創建的Powershell腳本。使用Windows Server 2016從Windows事件觸發電子郵件警報使用Windows Server 2016從Windows事件觸發電子郵件警報
  4. 默認的Condition參數應該足夠了。使用Windows Server 2016從Windows事件觸發電子郵件警報
  5. 最後,在“設置”選項卡上,確保允許按需運行任務,並在任務已在運行時“排隊新實例”。

    使用Windows Server 2016從Windows事件觸發電子郵件警報

步驟3(如有必要) – 修復Microsoft Windows DistributedCOM事件ID:10016錯誤

理論上,如果您正確地執行了所有操作,您應該能夠使用Windows Server 2016從Windows事件觸發電子郵件警報。但是,我在我的一台服務器上遇到了一個奇怪的權限問題。這是我解決問題的方法。希望它也會對你有所幫助。在我手動觸發事件的情況下,或者如果我直接運行Powershell腳本,一切都按預期工作,我會收到一封電子郵件。但是,如果正在監視的某個EventID被記錄到事件日誌中,則不會導致發送電子郵件。我唯一的線索是事件ID:10016。每次我希望任務觸發器檢測到記錄的事件時,它都記錄在我的系統事件日誌中。

日誌名稱:系統
來源:Microsoft-Windows-DistributedCOM
日期:10/27/2018 5:59:47 PM
事件ID:10016
任務類別:無
等級:錯誤
關鍵詞:經典
用戶:DATAKEEPER  dave
電腦:sql1.datakeeper.local
描述:
特定於應用程序的權限設置不授予“本地激活”權限 
對於具有CLSID的COM Server應用程序 
{D63B10C5-BB46-4990-A94F-E40B9D520160}
和APPID 
{9CA88EE3-ACB7-47C8-AFC4-AB702511C276}
給用戶DATAKEEPER  dave SID(S-1-5-21-25339xxxxx-208xxx580-6xxx06984-500) 
來自地址LocalHost 
(使用LRPC)在應用程序容器中運行不可用SID(不可用)。
可以使用組件服務管理工具修改此安全權限。

許多針對該錯誤的Google搜索結果表明該錯誤是良性的。它包含有關如何抑制錯誤而不是修復錯誤的說明。但是,我很確定這個錯誤是我目前失敗的原因。如果我沒有正確解決問題,使用Windows Server 2016從Windows事件觸發電子郵件警報將很困難。經過多次搜索,我偶然發現了這個新聞組的討論。  Marc Whittlesey的回應使我指出了正確的方向。這是他寫的……

在轉到組件服務中的DCOM配置之前,您必須設置2個註冊表項:CLSID密鑰和APPID密鑰。

我建議你按照一些步驟解決問題:

1。 按Windows + R鍵並鍵入regedit,然後按Enter鍵。2。 轉到HKEY_Classes_Root CLSID * CLSID *。3。 右鍵單擊它然後選擇權限。4。 單擊“高級”並將所有者更改為管理員。同時單擊將顯示在所有者行下方的框。5。 適用完全控制。6。 關閉選項卡,然後轉到HKEY_LocalMachine Software Classes AppID * APPID *。7。 右鍵單擊它然後選擇權限。8。 單擊“高級”並將所有者更改為管理員。9。 單擊將顯示在所有者行下方的框。10。 單擊“應用”並向管理員授予完全控制權。11。 關閉所有選項卡,然後轉到管理工具。12。 開放組件服務。13。 單擊“計算機”,單擊“我的電腦”,然後單擊“DCOM”。14。 查找錯誤查看器上顯示的相應服務。15。 右鍵單擊它,然後單擊屬性。16。 單擊安全選項卡,然後單擊添加用戶,添加系統,然後應用 17。 勾選激活本地框。因此,請在此處使用相關密鑰,DCOM配置應該可以訪問灰色區域:CLSID {D63B10C5-BB46-4990-A94F-E40B9D520160} APPID {9CA88EE3-ACB7-47C8-AFC4-AB702511C276}

我幾乎可以逐字逐句地遵循步驟1-15。然而,當我到達第16步時,我真的無法確切地說出他希望我做什麼。起初我將DATAKEEPER dave用戶帳戶完全控制權授予了RuntimeBroker,但這並沒有解決問題。最後我只是在所有三個權限上選擇了“使用默認值”並修復了問題。使用Windows Server 2016從Windows事件觸發電子郵件警報 我不確定這是怎麼發生的。我想我最好把它全部寫下去,以防它再次發生,因為我花了一段時間來弄清楚它。

第4步 – 自動部署

如果需要在多個系統上啟用相同的警報,請將任務導出到XML文件並將其導入其他系統。使用Windows Server 2016從Windows事件觸發電子郵件警報使用Windows Server 2016從Windows事件觸發電子郵件警報 或者甚至更好。 在文件共享上提供XML文件後,通過Powershell腳本自動執行導入作為構建過程的一部分,如以下示例所示。

PS C:> Register-ScheduledTask -Xml(get-content 
'\ myfileshare  tasks  DataKeeperAlerts.xml'|出弦) 
-TaskName“DataKeeperAlerts” - 用戶數據管理員 dave 
-Password MyDomainP @ 55W0rd -Force

使用Windows Server 2016從Windows事件觸發電子郵件警報

在我的下一篇文章中,我將向您展示如何在指定的服務啟動或停止時收到通知。當然,您只需從Service Control Monitor監視EventID 7036即可。但是,只要任何服務開始或停止,這都會通知您。我們需要深入挖掘,以確保只有在我們關心的服務開始或停止時才會收到通知。如果您對我們的操作方法文章感興趣,例如使用Windows Server 2016從Windows事件觸發電子郵件警報,請單擊此處。從Clusteringformeremortals.com轉載

Copyright © 2025 · Enterprise Pro Theme on Genesis Framework · WordPress · Log in