1. SQL Server服务器监控实现方法

原文:1. SQL Server服务器监控实现方法

对于服务器的监控,和对数据库的监控,很少有合二为一的工具,如果有的话,一般是付费软件,或者自行开发的工具。
所以如果不想购买软件,也不想花精力去开发的话,可以结合一些免费/开源的工具、自定义脚本,来完成对数据库服务器的监控。

一. 第三方工具
1. 开源工具
比如:CACTI,Nagios,Zabbix等等,除了主机外,对于网络上的其他设备,比如路由器等也可以一并监控。
以CACTI为例(CACTI可以在windows下安装),服务器监控的图示:
(1) 设备状态

1. SQL Server服务器监控实现方法

 

(2) SQL Server服务状态

1. SQL Server服务器监控实现方法

 

(3) 服务器事件日志

1. SQL Server服务器监控实现方法

 

(4) 磁盘空间

1. SQL Server服务器监控实现方法

 

(5) 内存使用

1. SQL Server服务器监控实现方法

 

(6) CPU使用

1. SQL Server服务器监控实现方法

 

(7) 网卡使用

1. SQL Server服务器监控实现方法

 

(8) 交换机流量

1. SQL Server服务器监控实现方法

从图片中可以发现,服务器状态监控没问题,不过对于服务器性能的监控,仅仅是在磁盘空间/内存/CPU/网络带宽的使用量上面,没有细致的性能计数器信息。


这些开源的工具,大多基于SNMP协议(Simple Network Management Protocol,简单网络管理协议),该协议用以监测连接到网络上的设备状态,对于设备自身的详细性能参数,通常需要安装额外的插件来完成(这也是unix的思想 ?),比如上面用到的syslog插件,用于接收windows事件日志;比如有人集成了snmptools插件,用于接受windows性能计数器信息。

 

2. 付费工具
不同工具,侧重点也不一样:
(1) 有的偏向主机监控,比如:MOM(Microsoft Operations Manager),SCOM(System Center Operations Manager,SCOM是MOM的升级版,就像lync是communicator的升级版一样),whatsup gold;
(2) 有的偏向SQL Server数据库监控,比如:Idera SQL Diagnostic Manager,SQL Sentry,Red-gate SQL Monitor;
(3) 有的是工具套件,不同功能选择其中某一款,比如:Quest Spotlight,BMC Patrol(已改名为BMC Performance Manager)


这些Windows平台的工具,大多对性能计数器支持的很好,通常是基于WMI实现的。
WMI :Windows Management Instrumentation,Windows 管理规范,WMI允许通过一个公共的接口访问多种操作系统构成单元,用户可以使用工具软件和脚本程序,调用 WMI 管理本地和远程计算机。


以sql monitor为例,服务器监控的图示:
(1) 有限的windows监控选项

1. SQL Server服务器监控实现方法

 

(2) 对性能计数器支持的很直接

1. SQL Server服务器监控实现方法

 

二. 性能监视器可以用来做监控吗?
关于性能监控,很多人可能想过在SQL语句里,把性能计数器的值一并读出来,不过从权限/安全的角度来说,SQL Server(应用程序)不应该也不能反向关心windows(操作系统)没有分配给它的资源,所以在sys.dm_os_performance_counters里能查到的也只是SQL Server自己的性能计数器值。

不过话说回来,有些DMV/SQL语句确实是可以查看操作系统资源使用情况的,仅限部分,应该是SQL Server自身做了实现,毕竟是自家的东西。


如果想要自己做基于性能计数器的监视,不会使用开发工具,只会写点SQL语句,怎么办?
把性能计数器的日志记录保存出来,导入到数据库里用SQL语句分析,做告警。

1. 如何取性能计数器的值?
(1) 直接查看性能计数器的界面,仅限于查看,无法保存日志记录;
(2) 事先定义一个文件来保存性能计数器,打开性能监视器,里面有这个功能,windows 2003叫counter logs,windows 2008叫data collector,如图:
1. SQL Server服务器监控实现方法
如果要自动化的话,可以用命令行工具typeperf,功能和图形界面是一样的。

 

2. 如何分析性能计数器日志?
(1) 直接查看日志,可以借助perfmon/excel/PAL等工具来分析,但这些工具只能帮忙生成图表,不能做自动化,不能做告警;
(2) 导入数据库做分析,可使用 Log Parser/SSIS等任何能自动把性能计数器日志导入数据库的工具,然后利用SQL 语句来做分析,既然是监控,那就得实时点,导入的频率得高些。

第三方工具通常都有页面告警,短信,邮件等等告警方式,如果自己做开发,告警这块也需要自己来实现,通常数据库这端都是用邮件来告警。
设置告警的阀值需要有系统的性能基线,如果不是很确定的话,就设的高一点,至少性能日志已经被记录了,追溯也不是问题。

 

小结

服务器监控推荐使用开源工具,如果对于开源工具的性能监控不太满意,可以:
(1) 扩展开源工具的插件 (如果有预算,也许可以选择付费工具);
(2) 自行开发,要么基于性能计数器日志 (适合只会数据库开发的人),要么基于WMI接口 (个人觉得基于WMI更简便,但得有点编程基础,起码知道程序/脚本里怎么去调用WMI)。

 

1. SQL Server服务器监控实现方法

上一篇:MySQL查询所有数据库表出错


下一篇:Initial Audio Trap Phantom Heatup3 Expansion for mac(Heatup3扩展预设)