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

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
日志服务 SLS,月写入数据量 50GB 1个月
简介: 原文:1. SQL Server服务器监控实现方法对于服务器的监控,和对数据库的监控,很少有合二为一的工具,如果有的话,一般是付费软件,或者自行开发的工具。所以如果不想购买软件,也不想花精力去开发的话,可以结合一些免费/开源的工具、自定义脚本,来完成对数据库服务器的监控。
原文: 1. SQL Server服务器监控实现方法

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

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

 

(2) SQL Server服务状态

 

(3) 服务器事件日志

 

(4) 磁盘空间

 

(5) 内存使用

 

(6) CPU使用

 

(7) 网卡使用

 

(8) 交换机流量

从图片中可以发现,服务器状态监控没问题,不过对于服务器性能的监控,仅仅是在磁盘空间/内存/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监控选项

 

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

 

二. 性能监视器可以用来做监控吗?
关于性能监控,很多人可能想过在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,如图:

如果要自动化的话,可以用命令行工具typeperf,功能和图形界面是一样的。

 

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

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

 

小结

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

 

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
1天前
|
SQL 数据挖掘 关系型数据库
SQL查询次数大于1的记录:高效技巧与方法
在数据库管理中,经常需要统计某些操作的次数,特别是当需要找出哪些记录或值出现的次数超过一定阈值(如大于1次)时
|
1天前
|
SQL 数据库
SQL查询中排除空值列的技巧与方法
在数据库查询中,经常需要处理包含空值(NULL)的数据列
|
2天前
|
弹性计算 安全 Linux
阿里云国际版使用ping命令测试ECS云服务器不通的排查方法
阿里云国际版使用ping命令测试ECS云服务器不通的排查方法
|
1天前
|
SQL Oracle 关系型数据库
SQL查询默认表空间的技巧与方法
在数据库管理中,表空间是存储数据库对象(如表、索引等)的逻辑空间单元
|
3天前
|
SQL 关系型数据库 MySQL
SQL批量插入测试数据的几种方法?
SQL批量插入测试数据的几种方法?
11 1
|
15天前
|
Java
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
29 4
|
20天前
|
SQL 关系型数据库 MySQL
创建包含MySQL和SQLServer数据库所有字段类型的表的方法
创建一个既包含MySQL又包含SQL Server所有字段类型的表是一个复杂的任务,需要仔细地比较和转换数据类型。通过上述方法,可以在两个数据库系统之间建立起相互兼容的数据结构,为数据迁移和同步提供便利。这一过程不仅要考虑数据类型的直接对应,还要注意特定数据类型在不同系统中的表现差异,确保数据的一致性和完整性。
26 4
|
1天前
|
SQL 存储 数据库
SQL查询100以内数值的技巧与方法
在数据库操作中,经常需要查询特定范围内的数据,比如查询某个数值字段在100以内的记录
|
2天前
|
SQL 监控 关系型数据库
SQL语句性能分析:实战技巧与详细方法
在数据库管理中,分析SQL语句的性能是优化数据库查询、提升系统响应速度的重要步骤
|
2天前
|
SQL 关系型数据库 MySQL
批量提交SQL语句的技巧与方法
在数据库管理和开发中,经常需要执行大量的SQL语句,如批量插入、更新或删除数据