MSSQL/WMI/PowerShell結合篇(五)SQL Server映象狀態變化實時告警
本文介紹SQL Server映象狀態變化實時告警,利用WMI Monitor實時監控映象狀態,在狀態發生變化時捕獲相關資訊,通過PowerShell傳送微信資訊,以達到實時告警的目的。
1、建立WMI監控
DATABASE_MIRRORING_STATE_CHANGE為映象狀態變化資訊表,通過WQL語句可以獲取相關映象狀態變化詳細資訊,參考《MSSQL/WMI/PowerShell結合篇(二)建立WMI監控》
核心程式碼片段
EventFilter
${Query}= "select * from DATABASE_MIRRORING_STATE_CHANGE";
Consumer
${Text} ="資料庫映象告警`nServerName:=%ComputerName%`nInstance:=%SQLInstance%`nDatabase:=%DatabaseName%`nState:="
$Text2="%State%"
2、PowerShell遠端呼叫
當映象狀態發生變化時,Consumer觸發執行PowerShell指令碼動作,在被觸發指令碼中呼叫外網伺服器的傳送微信指令碼,參考《MSSQL/WMI/PowerShell結合篇(三)執行PowerShell遠端指令碼》
3、PowerShell傳送微信資訊
實時傳送微信資訊,參考《MSSQL/WMI/PowerShell結合篇(四)PowerShell傳送微信資訊》
核心程式碼片段
映象狀態
$Mirror_State=$(switch($Text2)
{0 {"Mirroring-Session-is-Started`n"}
1 {"Synchronized-Principal-with-Witness`n"}
2 {"Synchronized-Principal-without-Witness`n"}
3 {"Synchronized-Mirror-with-Witness`n"}
4 {"Synchronized-Mirror-without-Witness`n"}
5 {"Connection-with-Principal-Lost`n"}
6 {"Connection-with-Mirror-Lost`n"}
7 {"Manual-Failover`n"}
8 {"Automatic-Failover`n"}
9 {"Mirroring-Suspended`n"}
10 {"No-Quorum`n"}
11 {"Synchronizing-Mirror`n"}
12 {"Principal-Running-Exposed`n"}
13 {"Synchronizing-Principal`n"}});
告警示例:
轉載於:https://blog.51cto.com/aimax/1970526