使用SIOS DataKeeper接收電子郵件警報
在過去的幾周里,我寫了一個由3部分組成的系列文章,介紹如何根據Perfmon計數器,系統事件日誌條目和特定的Windows服務啟動或停止事件來配置電子郵件警報。這些指南與任何環境相關。我的所有例子都是為了監控SIOS DataKeeper。此外,它還有一些特定的客戶請求,包括監控SIOS DataKeeper服務,以及在RPO超過5秒時收到警報。我還包括監視您想要了解的基本DataKeeper事件。此視頻顯示了一些此警報。
SIOS SANless clusters High-availability Machine Learning monitoring
在過去的幾周里,我寫了一個由3部分組成的系列文章,介紹如何根據Perfmon計數器,系統事件日誌條目和特定的Windows服務啟動或停止事件來配置電子郵件警報。這些指南與任何環境相關。我的所有例子都是為了監控SIOS DataKeeper。此外,它還有一些特定的客戶請求,包括監控SIOS DataKeeper服務,以及在RPO超過5秒時收到警報。我還包括監視您想要了解的基本DataKeeper事件。此視頻顯示了一些此警報。
與我上一篇文章的不同之處在於,我向您展示瞭如何根據Windows事件日誌中記錄的特定Windows EventID發送電子郵件警報,這次我將分享如何在特定Windows服務啟動或停止時觸發電子郵件警報。它適用於大多數活動。雖然請注意,如果您希望在特定Windows服務啟動或停止時收到通知,這並不理想。當Windows服務啟動或停止時,Windows系統日誌中會記錄源“服務控制管理器”中的EventID 7036。現在,我們可以設置一個觸發器,以便在記錄EventID時發送電子郵件,就像我在上一篇文章中所描述的那樣。 但是,您可能不希望在每個Windows服務啟動或停止時收到電子郵件。為了更具體一點,我們必須在設置觸發器時編輯與Windows事件過濾器關聯的XML數據。這是為了更深入地了解事件屬性並對EventData進行過濾,該事件僅在您在Windows事件的“詳細信息”選項卡上查看XML視圖時顯示。這項工作在Windows Server 2016上得到了驗證,但我懷疑它也可以在Windows Server 2012 R2和Windows Server 2019上運行。如果您在任何其他平台上工作,請發表評論並告知我們您是否需要更改任何內容。
您需要做的第一件事是編寫一個Powershell腳本,在運行時可以發送電子郵件。您需要該電子郵件才能在特定Windows服務啟動或停止時觸發電子郵件警報。有很多方法可以完成這項任務。我即將向您展示只是一種方式,但您可以隨意嘗試並使用適合您環境的方法。在我的實驗室中,我沒有運行自己的SMTP服務器,因此我必須編寫一個可以利用我的Gmail帳戶的腳本。您將在我的Powershell腳本中看到對SMTP服務器進行身份驗證的電子郵件帳戶的密碼是純文本格式。如果您擔心某人可能有權訪問您的腳本並發現您的密碼,那麼您將需要加密您的憑據。Gmail需要和SSL連接,因此您的密碼應該是安全的,就像任何其他電子郵件客戶端一樣。下面是一個Powershell腳本示例,當與Task Scheduler結合使用時,它會在Windows事件日誌中記錄任何指定的事件時自動發送電子郵件警報。在我的環境中,我將此腳本保存到C: Alerts ServiceAlert.ps1
$ filter =“* [System [EventID = 7036] and EventData [Data ='SIOS DataKeeper']]” $ A = Get-WinEvent -LogName系統-MaxEvents 1 -FilterXPath $ filter $ 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`n $ 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腳本生成的電子郵件示例如下所示。 您可能已註意到此Powershell腳本使用Get-WinEvent cmdlet根據LogName,EventID和EventDataspecified獲取最新的事件日誌條目。然後它解析該事件並將EventID,Source,MachineName和Message分配給將用於撰寫電子郵件的變量。您將看到指定的LogName,EventID和EventData與您在步驟2中設置計劃任務時指定的內容相同。雖然EventID,LogName可能對您來說很熟悉,但EventData可能並不那麼熟悉。要查看與特定事件關聯的EventData,您需要在事件查看器中打開事件,查看“詳細信息”選項卡,然後選擇“XML視圖”。從XML視圖中,您可以看到事件中包含的所有數據。在XML的底部附近,您將看到一個名為<EventData>的數據數組。在那裡,您將找到存儲為參數的其他事件數據。如下所示,在“param1”中,我們將找到停止或啟動的服務名稱。
在任務計劃程序中創建一個任務,如以下屏幕截圖所示。
<QueryList> <Query Id =“0”Path =“System”> <Select Path =“System”> * [System [(Level = 4或Level = 0)和(EventID = 7036)]] 和* [EventData [Data [1] ='SIOS DataKeeper']] </ Select> </查詢> </ QueryList>
理論上,如果您正確地執行了所有操作,則只要您正在監視的某個事件記錄在事件日誌中,您就應該立即開始接收電子郵件。 但是,我在我的一台服務器上遇到了一個奇怪的權限問題,我必須在一切工作之前解決這個問題。我不確定你是否會遇到這個問題,但以防這裡是修復。在我的情況下,當我手動觸發事件,或者我直接運行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搜索結果都表明該錯誤是良性的,並包含有關如何抑制錯誤而非修復錯誤的說明。但是,我非常確定此錯誤是導致我當前無法從受監視的事件日誌條目觸發的計劃事件發送電子郵件警報的原因。我需要解決它。經過多次搜索,我偶然發現了這個新聞組的討論。 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。但這並沒有解決問題。最後我只是在所有三個權限上選擇了“使用默認值”並修復了問題。 我不確定這是怎麼發生的,為什麼會發生這種情況,但我想我最好把它全部寫下去以防它再次發生,因為我花了一段時間來弄清楚它。
如果需要在多個系統上啟用相同的警報,只需將任務導出到XML文件並將其導入其他系統即可。導出[/ caption] [caption id =“attachment_2346”align =“alignnone”width =“391”]導入[/ caption]甚至更好,在文件共享中提供XML文件後,通過Powershell腳本自動執行構建過程中的導入,如以下示例所示。
PS C:> Register-ScheduledTask -Xml(get-content'\ myfileshare tasks DataKeeperAlerts.xml' | out-string)-TaskName“DataKeeper Service Alerts”-User datakeeper dave -Password MyDomainP @ 55W0rd -Force
希望我提供的內容能為您提供開始接收警報通知電子郵件所需的一切,無論您使用哪種Windows服務讓您夜不能寐。以上是關於配置電子郵件警報的系列文章。在本系列中,我介紹了基於Perfmon計數器,事件日誌條目以及本文Windows服務啟動和停止事件的配置警報。當然,您可以擴展這些文章中描述的Powershell腳本,而不僅僅是發送電子郵件。許多警報或意外服務中斷通常需要一些補救措施。為什麼不編寫恢復步驟的腳本,讓觸發的任務為您解決問題?我個人建議您投資SCOM,SolarWinds或其他一些企業管理系統,但如果這不在您工作的卡片中,那麼這些文章可以幫助您。要了解有關特定Windows服務啟動或停止時的電子郵件警報的更多提示,請與我們聯繫轉發,並獲得Clusteringformeremortals.com的許可
今年早些時候,如果將SQL Server 2008和2008 R2群集遷移到Azure,Microsoft將宣布擴展支持。 有關所有詳細信息,請查看https://www.microsoft.com/en-us/sql-server/sql-server-2008。 如果您選擇不搬家,您的延期支持將於2019年7月9日結束。 如果您仍在運行SQL Server 2008 R2,可能是因為您從未升級過您的應用程序。因此不支持更新版本的SQL。或許,你決定不修復沒有破壞的東西。無論這些原因如何,如果您遷移到Azure,您剛剛為自己購買了三年的支持。現在,使用Azure Site Recovery將工作負載遷移到Azure是一個很好的文檔化過程。對於SQL Server的獨立實例,該過程應該是非常無縫的。但是那些SQL Server的集群實例呢?當你搬到Azure時,你肯定不想放棄可用性。Azure的一部分優點是它們擁有您夢寐以求的基礎設施。但是,用戶有責任配置其應用程序以充分利用基礎結構,以確保您的部署具有高可用性。對於SQL Server 2008和2008 R2,高可用性通常意味著Windows Server 2008 R2或Windows Server 2012 R2上的SQL Server故障轉移群集。如果您是Azure的新手,您將很快發現沒有支持共享存儲群集的本機選項。相反,您需要查看SANLess集群解決方案,例如SIOS DataKeeper。Microsoft在其文檔中列出了SIOS DataKeeper作為SQL Server故障轉移群集的HA解決方案。
讓我們開始將SQL Server 2008和2008 R2集群遷移到Azure以獲得擴展支持。以下是您需要採取的高級步驟。
我知道我遺漏了很多細節。但是,如果您發現自己處於不得不將SQL Server升級到Azure或任何云計算的位置,我很樂意與您聯繫以回答您可能遇到的任何問題。請記住,相同的步驟適用於您計劃遷移到Azure的任何SQL版本。如果您需要將SQL Server 2008和2008 R2 Clusters移至Azure,請與我們聯繫。經Clusteringformeremortals.com許可轉載
我是Azure Site Recovery for Disaster Recovery的忠實粉絲所以,我很高興參加Rochak Mittal和Ashish Gangwar今天舉辦的Ignite會議。
我是Azure Site Recovery for Disaster Recovery的忠實粉絲所以,我很高興參加今天由Rochak Mittal和Ashish Gangwar BRK3304呈現的Ignite會議 – 在Azure上構建關鍵任務,高性能SAP工作負載此會議關於確保應用程序可用性基於雲的災難恢復,Azure Site Recovery提供了特別豐富的信息。在其中一個體系結構幻燈片中,他們展示瞭如何通過Azure Site Recovery(ASR)保護整個SAP部署,並在幾分鐘內發生災難時恢復。使用Azure恢復計劃可以讓您明確控制恢復。它包括創建對資源的依賴關係以及在VM中調用腳本以幫助促進完全恢復。好像昨天。但它早在2014年5月,當時我第一次開始協助微軟為Azure中的SAP ASCS提供HA解決方案。該解決方案涉及使用DataKeeper為ASCS構建SANless集群解決方案。它仍然是今天唯一的HA解決方案,它也可以與ASR一起用於災難恢復配置,例如Ignite的演示中所示。 Azure中的共享磁盤與SIOS DataKeeper [/ caption]想知道如何通過基於雲的災難恢復,Azure Site Recovery確保應用程序可用性,讓我們來看看知道,我們很樂意提供幫助。經Clusteringformeremortals.com許可轉載
Windows性能計數器警報可以配置為通過使用用戶定義的數據收集器集在任何性能監視器(Perfmon)計數器上觸發。但是,如果您希望在觸發警報時通過電子郵件收到通知,則必須使用Perfmon,任務計劃程序和好的'Powershell'的組合。按照以下步驟從Windows性能監視器觸發電子郵件警報。
您需要做的第一件事是編寫一個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警報計數器和任何服務器上發送電子郵件,而無需額外的自定義。
在任務計劃程序中,我們將在以下屏幕截圖中顯示創建新任務。 為任務命名,您需要記住它以進行下一步。 請注意,沒有觸發器。此任務實際上將通過我們將在步驟3中設置的Perfmon計數器警報觸發。 您想在“操作”選項卡上定義新操作。操作將是啟動程序並使用以下輸入。請根據您的具體環境進行調整。程序腳本:C: Windows System32 WindowsPowerShell v1.0 powershell.exe添加參數:-File C: Alerts Alerts.ps1 $(Arg0)
創建新的數據收集器集添加要監視的性能計數器並設置警報閾值。 創建數據收集器集後,請進入其屬性,並確保為每個性能計數器正確設置警報閾值和样本間隔。請記住,如果您每10秒採樣一次,那麼只要性能計數器超過您設置的閾值,您就應該每隔10秒收到一封電子郵件。 如果選擇在應用程序事件日誌中記錄條目,則不希望在正常的應用程序事件日誌中看到任何條目。它將寫入應用程序和服務日誌目錄中的Microsoft-Windows-Diagnosis-PLA / Operational日誌。 然後最後我們必須設置一個警報任務,它將觸發我們在步驟2中創建的計劃任務(EmailAlert)。您會看到我們還傳遞了一些Powershell腳本使用的Task參數,以自定義具有與Alert相關的確切錯誤條件的電子郵件。 正確配置Data Collector後,您將需要啟動它。 如果您正確配置了所有內容,則應在滿足警報閾值時開始查看電子郵件。如果它似乎不起作用,請檢查以下內容……
如果您認為已全部設置為從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許可轉載