(安西) 发表于 2018-9-1 12:20:00

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"}});
  告警示例:


页: [1]
查看完整版本: MSSQL/WMI/PowerShell结合篇(五)SQL Server镜像状态变化实时告警