sqlserver取第一条数据_SQL Server服务器监控实现方法

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

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

01f601943243d10d19eb87a8c10e5168.png

(2) SQL Server服务状态

3ea0244d12277ddd63a6df37f2d46595.png

(3) 服务器事件日志

ae05e3b217f073b5a31111664178f576.png

(4) 磁盘空间

e7c0a650e102761850a7a392bcea47c7.png

(5) 内存使用

7a765453cd42c44fde139b99fe6d0d0b.png

(6) CPU使用

0c765ba0b1877db42e66c8362cee88ba.png

(7) 网卡使用

4de8407a0353bec69c0213b5f4e3ae71.png

(8) 交换机流量

87b7ded13696a0c70d3a23e4153f852c.png

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


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

2. 付费工具
不同工具,侧重点也不一样:
(1) 有的偏向主机监控,比如:MOM,SCOM,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监控选项

ddfc2b8446a713675f79a03ece140e30.png

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

8d9af6a46f93c64847b7bccc17f40be7.png

二. 性能监视器可以用来做监控吗?
关于性能监控,很多人可能想过在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,如图:644b3d4b48fe724ddea927af76f5e6ce.png
如果要自动化的话,可以用命令行工具typeperf,功能和图形界面是一样的。

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

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

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

文章转载自:

https://www.cnblogs.com/seusoftware/p/3214804.html

文章经作者授权转载,版权归原文作者所有

图片来源于网络,侵权必删!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值