0. SQL Server监控清单

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
日志服务 SLS,月写入数据量 50GB 1个月
简介: 原文:0. SQL Server监控清单数据库服务器的监控可大致分为两类: (1) 状态监控:数据库服务器有没有在健康地运行? (2) 性能监控:健康运行的同时,有没有性能问题?可不可以更快些?   一.
原文: 0. SQL Server监控清单

数据库服务器的监控可大致分为两类:

(1) 状态监控:数据库服务器有没有在健康地运行?

(2) 性能监控:健康运行的同时,有没有性能问题?可不可以更快些?

 

. 服务器

1. 状态监控

(1) 服务器是否可访问?

(2) 数据库服务是否启用?

(3) 操作系统事件日志中的错误或告警

(4) 磁盘可用空间

 

2. 性能监控

(1) IO压力

(2) 内存使用

(3) CPU使用

(4) 网络带宽占用

这1,2,3,4是按照容易出现瓶颈的顺序排列的,由于磁盘的读写速度限制,通常IO是最容易出现瓶颈的地方,我们所做的很多优化,也都是针对IO的,比如:索引优化,读写分离等等。

 

. 数据库

1. 状态监控

(1) 数据库可否打开 (数据库状态)

(2) SQL Server/SQL Server Agent错误日志中的错误或告警

(3) 数据库/文件组可用空间

(4) SQL Agent 作业运行状态

(5) 数据库备份有没有成功

(6) 数据库还原测试的结果

(7) 数据库一致性检查的结果 (DBCC CHECKDB)

 

以下几条状态监控,通常需要和系统平均值/基线值比较才有意义,否则没有告警的标准。

(8) 连接数、请求数、事务数、线程数

(9) 数据库/文件/表的大小

(10) 表使用、行数

 

2. 性能监控

(1) 有没有长时间运行的查询 (一般指没有被任何请求阻塞,效率很差的查询)

(2) 有没有被阻塞的查询 (可能单独运行很快,但和别的请求一起,由于有锁等待,耗时很长)

(3) 有没有死锁 (开发人员/用户口中说的”死锁” 通常是阻塞/等待,数据库死锁通常很少让用户感觉到等待,一般是请求被中断,因为被kill掉了)

(4) 有没有等待 (一般指各种资源的等待,等待和阻塞的交集就是锁等待)

(5) 有没有缺失的/未被使用的/效率不高的索引,以及索引碎片

(6) 有没有过期的统计信息

(7) 有没有数据库文件的争用 (比如:日志文件,tempdb争用)

(8) 有没有消耗CPU较大、IO读写较多的查询 (通常IO消耗大的,也就是内存消耗大的查询)

 

. 其他

(1). 如果有部署高可用的策略,会有镜像、复制、日志传送、集群状态的监控;

(2). 某些业务数据有严格的一致性要求,业务数据的校验,最好也做在监控的告警里面;

(3). 对于数据库/实例的选项、参数设置,链接服务器等对象的可用性,通常在每年/每季度的health check里检查过就可以了,如果不放心,当然也可以放到监控的告警中来。

 

. 如何部署监控?

1. 不要选择依赖性的脚本/命令

以监视服务是否启动为例,脚本如下:

(1) SQL扩展存储过程

--参数1: QueryState 检查服务状态/ Start启动服务/ Stop停掉服务
--参数2: 服务名
exec master.dbo.xp_servicecontrol 'QueryState', 'MSSQLServer'
exec master.dbo.xp_servicecontrol 'QueryState', 'SQLServerAgent'
exec master.dbo.xp_servicecontrol 'QueryState', 'SQLBrowser'
exec master.dbo.xp_servicecontrol 'QueryState', 'NetLogon'

EXEC xp_servicecontrol N'Stop', N'SQLServerAGENT'
EXEC xp_servicecontrol N'Start',N'SQLServerAGENT'

 

 (2) SQL调用操作系统命令

if OBJECT_ID('tempdb..#tmp_started_services') is not null
    drop table #tmp_started_services
create table #tmp_started_services (started_services varchar(255))

insert into #tmp_started_services(started_services)   
exec master..xp_cmdshell 'net start' 

select * 
  from #tmp_started_services 
 where LTRIM(RTRIM(started_services)) like 'SQL%'

如果SQL Server没启动,这些脚本根本就跑不了,又怎么监控呢?

也许,又会有这么一个思路,服务器正常时,发出邮件通知,如果没有收到邮件就说明服务器不正常了,可如果有很多服务器时,怎么知道谁没发邮件呢?

 

2. 部署在专门的一台/多台监控机上

服务器状态监控,不管使用第三方工具,还是使用自定义脚本,都建议部署在专门的监控机上,远程监视目标机器。

因为:如果服务器DOWN了或者故障了,可能本机的程序/脚本就无法运行了,又怎么监控呢?

 

最后

基于上面的监控列表,还要需要将监测工作自动化,并在发现问题时告警。

 

相关实践学习
使用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 IDE Java
Java连接SQL Server数据库的详细操作流程
Java连接SQL Server数据库的详细操作流程
|
1月前
|
SQL DataWorks NoSQL
DataWorks产品使用合集之如何将SQL Server中的数据转存到MongoDB
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
253 1
|
1月前
|
SQL 监控 安全
sql server数据库监控
SQL Server数据库监控是收集、聚合和监控SQL服务器的各种指标的过程,旨在维护SQL数据库的运行状况和可用性,优化性能,并预防或快速响应错误。以下是一些关于SQL Server数据库监控的核心
|
2天前
|
SQL Oracle 关系型数据库
MySQL、SQL Server和Oracle数据库安装部署教程
数据库的安装部署教程因不同的数据库管理系统(DBMS)而异,以下将以MySQL、SQL Server和Oracle为例,分别概述其安装部署的基本步骤。请注意,由于软件版本和操作系统的不同,具体步骤可能会有所变化。
18 3
|
8天前
|
SQL 存储 安全
数据库数据恢复—SQL Server数据库出现逻辑错误的数据恢复案例
SQL Server数据库数据恢复环境: 某品牌服务器存储中有两组raid5磁盘阵列。操作系统层面跑着SQL Server数据库,SQL Server数据库存放在D盘分区中。 SQL Server数据库故障: 存放SQL Server数据库的D盘分区容量不足,管理员在E盘中生成了一个.ndf的文件并且将数据库路径指向E盘继续使用。数据库继续运行一段时间后出现故障并报错,连接失效,SqlServer数据库无法附加查询。管理员多次尝试恢复数据库数据但是没有成功。
|
14天前
|
SQL 存储 关系型数据库
关系型数据库SQL Server学习
【7月更文挑战第4天】
24 2
|
19天前
|
SQL 存储 测试技术
|
18天前
|
SQL 机器学习/深度学习 搜索推荐
SQL SERVER 转换失败
【6月更文挑战第25天】
|
23天前
|
SQL 关系型数据库 分布式数据库
PolarDB产品使用问题之如何迁移SQL Server
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
29天前
|
SQL 监控 安全
代码审计-PHP原生开发篇&SQL注入&数据库监控&正则搜索&文件定位&静态分析
代码审计-PHP原生开发篇&SQL注入&数据库监控&正则搜索&文件定位&静态分析