本文主要介绍Windows的WMI与PowerShell实现实时告警,如若觉得麻烦,可用MSSQL的WMI alerts,相对更为简单。


为什么考虑MSSQL与WMI、PowerShell三者结合?它们可以做什么?

    WMI/PowerShell都是Windows的插件及功能,用它们来实现MSSQL监控、自动化作业等等,无疑是最简单方便的。


为什么不考虑用监控工具?

    免费的工具不能满足需求,强大的工具(SCOM)太贵,中小公司很少考虑购买。


一、实时告警方式

    何为实时告警?也就是一旦发现告警信息,能立即通知到相应的人员。针对实时告警信息的接收方式,通过比较短信/邮件/QQ/微信,在PowerShell下以微信最为方便、实时性最高。


二、WMI事件

首先确保WMI服务是启动的

1) EventFilter

事件过滤器,主要用于筛选WMI的事件信息

2) Consumer

事件消费者,主要用于触发动作:如调用脚本、记录日志、执行命令等

3) Binding

事件绑定,主要用于将EventFilter与Consumer进行绑定,即可实现实时动作

对于EventFilter、Consumer与Binding的结合,且称为WMI Monitor,PowerShell为PS,方便下文引用



三、实时告警实现原理

大致的原理如下:

WMI Monitor—>数据库服务器(内网)—>PowerShell—>监控服务器(内外网)—>发送微信

在MSSQL服务器注册WMI Monitor,通过PowerShell远程调用监控服务器上的发送微信脚本。PowerShell与WMI均可实现远程访问,至于为什么使用PowerShell,是由于相对简单,较为安全。


四、监控类别

MSSQL+WMI+PS

1) 数据库DDL操作

2) 数据库镜像状态变化

3) 死锁

4) update/delete语句(由SQL Server采集数据,WMI触发实时告警)

.....


五、自动化作业类别

MSSQL+PS

1) 备份文件定期删除

2) 备份文件可用性验证

3) 备份文件定期还原校验

.....


后续篇章将一一展开介绍各功能及类别。