更新时间:2024-06-07 GMT+08:00

数据库监控工具

技术背景

数据库作为IT基础设施,用户对数据库的要求是稳定、高吞吐、低延时。为了实现上述目标,确保数据库集群能够持续为用户提供稳定快速的服务。我们需要完善的数据库监控工具来帮助数据库运维人员,实时监控数据库运行的方方面面,做到异常问题早发现,快定位,及时处理。

DMS(Database Monitor Service)作为GaussDB(DWS)原生的数据库监控服务,可以提供全面的数据库资源消耗指标与数据库业务执行指标。DMS以可视化工具的形式监控数据库集群的实时与历史运行状态,帮助用户发现问题,定位问题,解决问题。

数据库监控原理

DMS采用三层结构实现GaussDB(DWS)数据库集群的监控:

  • 采集(dms-agent):agent嵌入数据库集群的每个节点,采集集群运行状态,收集集群运行的原始数据并上报。
  • 存储(dms-collection):接收agent上报的数据,并存入指标数据库。
  • 分析(dms-monitoring):利用监控数据库中的大量数据,并通过聚合计算将监控视图展现给用户。
图1 DMS架构

数据库监控指标

数据库监控指标参见表1,了解更多请参见数据库监控

表1 GaussDB(DWS)监控列表

监控对象

指标名称

含义

取值范围

监控周期(原始指标)

集群概览

集群状态

集群的状态信息。

正常/异常/降级

30s

节点数量

集群中可用节点的数量和节点的总数(可用/总数)。

≥ 0

60s

CN数量

集群中CN节点的数量。

≥ 0

60s

数据库数量

集群中创建的数据库数量。

≥ 0

90s

资源消耗

CPU使用率

集群中所有节点的实时平均CPU使用率。

0%~100%

30s

内存使用率

集群中所有节点的实时平均内存使用率。

0%~100%

30s

磁盘使用率

集群中所有节点的实时平均磁盘使用率。

0%~100%

30s

磁盘I/O

集群中所有磁盘的实时平均磁盘I/O。

≥ 0KB/s

30s

网络I/O

集群中所有网卡的实时平均网络I/O。

≥ 0KB/s

30s

Top 5 耗时查询

查询ID

用户查询的ID号码,由数据库自动生成。

≥ 0

180s

SQL语句

用户执行的查询语句。

字符串

180s

执行时间

用户查询语句的执行时间,单位:ms。

≥ 0ms

180s

Top 5下盘量查询

查询ID

用户查询的ID号码,由数据库自动生成。

≥ 0

180s

SQL语句

用户执行的查询语句。

字符串

180s

下盘量

用户执行查询语句的下盘量,单位:MB。

≥ 0MB

180s

集群资源消耗指标

CPU使用率

集群中所有节点的平均CPU使用率和倾斜率,倾斜率计算公式:(max-avg)/max。

0%~100%

30s

内存使用率

集群中所有节点的平均内存使用率和倾斜率,倾斜率计算公式:(max-avg)/max。

0%~100%

30s

磁盘使用率

集群中所有磁盘的平均使用率和倾斜率,倾斜率计算公式:(max-avg)/max。

0%~100%

30s

磁盘I/O使用率

集群中所有磁盘的平均I/O使用率和倾斜率,倾斜率计算公式:(max-avg)/max。

0%~100%

30s

网络I/O使用率

集群中所有网卡的平均I/O使用率和倾斜率,倾斜率计算公式:(max-avg)/max。

0%~100%

30s

数据库主要指标

集群状态

集群运行状态。

正常/降级/异常

30s

集群CN异常数量

集群中处于异常状态的CN的数量。

≥ 0

60s

集群只读

集群是否处于只读状态。

是/否

30s

并发会话数

集群中单位时间内并发的会话数量。

≥ 0

30s

并发查询数

集群中单位时间内并发查询语句的数量。

≥ 0

30s

节点监控-概览

节点名称

集群中节点的名称。

字符串

30s

CPU使用率

主机的CPU使用率。

0%~100%

30s

内存使用率

主机的内存使用率。

0%~100%

30s

平均磁盘使用率

主机磁盘使用率。

0%~100%

30s

IP地址

主机的业务IP地址。

字符串

30s

磁盘I/O

主机的磁盘I/O,单位: KB/s。

≥ 0KB/s

30s

TCP协议栈重传率

单位时间内TCP报的重发率。

0%~100%

30s

状态

主机的运行状态。

在线/离线

30s

节点监控-磁盘

节点名称

集群中的节点名称。

字符串

30s

磁盘名

主机上磁盘名称。

字符串

30s

磁盘容量

主机上磁盘的容量,单位: GB。

≥ 0GB

30s

磁盘使用率

主机上磁盘的使用率。

0%~100%

30s

磁盘读速率

主机上磁盘读速率,单位: KB/s。

≥ 0KB/S

30s

磁盘写速率

主机上磁盘写速率,单位:KB/s。

≥ 0KB/S

30s

I/O等待时间-await

平均每次I/O请求的等待时间,单位:ms。

≥ 0ms

30s

I/O服务时间-svctm

平均每次I/O请求的处理时间,单位:ms。

≥ 0ms

30s

I/O使用率-util

主机上I/O的使用率。

0%~100%

30s

节点监控-网络

节点名称

集群中的节点名称。

字符串

30s

网卡名称

主机上的网卡名称。

字符串

30s

网卡状态

网卡状态。

up/down

30s

网卡速度

网卡工作速率,单位:Mbps。

≥ 0

30s

接收包数

网卡的接收包数。

≥ 0

30s

发送包数

网卡的发送包数。

≥ 0

30s

接收丢包数

网卡的接收丢包数。

≥ 0

30s

接收速率

网卡单位时间内接收到的字节数,单位:KB/s。

≥ 0KB/s

30s

发送速率

网卡单位时间内发送出的字节数,单位:KB/s。

≥ 0KB/s

30s

数据库监控

数据库名称

集群中用户创建的数据库名称。

字符串

60s

使用容量

当前数据库的已使用容量,单位:GB。

≥ 0GB

86400s

用户数量

当前数据库上的用户数量。

≥ 0

30s

会话数量

当前数据库上的会话数量。

≥ 0

30s

应用数量

当前数据库上的应用数量。

≥ 0

30s

查询数量

当前数据库上的活动查询数量。

≥ 0

30s

全表扫描返回行数

当前数据库上全表扫描查询的返回行数。

≥ 0

60s

索引查询返回行数

当前数据库上使用索引查询的返回行数。

≥ 0

60s

插入行数

当前数据库上的插入行数。

≥ 0

60s

更新行数

当前数据库上的更新行数。

≥ 0

60s

删除行数

当前数据库上的删除行数。

≥ 0

60s

事务执行数

当前数据库上事务的执行次数。

≥ 0

60s

事务回滚数

当前数据库中已经回滚的事务数。

≥ 0

60s

死锁数

当前数据库中检索到的死锁数。

≥ 0

60s

临时文件数量

当前数据库创建的临时文件数量。

≥ 0

60s

临时文件容量

当前数据库写入临时文件的大小,单位:GB。

≥ 0

60s

性能监控

集群CPU使用率

集群中所有节点的平均CPU使用率和倾斜率的历史趋势,倾斜率计算公式:(max-avg)/max。

0%~100%

30s

集群内存使用率

集群中所有节点的平均内存使用率和倾斜率的历史趋势,倾斜率计算公式:(max-avg)/max。

0%~100%

30s

集群磁盘使用率

集群中所有节点的平均磁盘使用率和倾斜率的历史趋势,倾斜率计算公式:(max-avg)/max。

0%~100%

30s

集群磁盘I/O

集群中所有磁盘的平均磁盘I/O数值和倾斜率的历史趋势,倾斜率计算公式:(max-avg)/max。

0%~100%

30s

集群网络I/O

集群中所有网卡的平均网络I/O数值和倾斜率的历史趋势,倾斜率计算公式:(max-avg)/max。

0%~100%

30s

集群状态

集群的状态信息的历史趋势。

正常/异常/降级

30s

集群只读

集群只读状态变化趋势的历史趋势。

是/否

30s

集群CN异常数量

集群中CN异常数量变化的历史趋势。

≥ 0

60s

集群DN异常数量

集群中DN异常数量变化的历史趋势。

≥ 0

60s

集群DN实例CPU使用率

集群中所有DN的平均CPU使用率和倾斜率变化的历史趋势,倾斜率计算公式:(max-avg)/max。

0%~100%

60s

集群会话数量

集群中会话数量变化的历史趋势。

≥ 0

30s

集群查询数量

集群中查询数量变化的历史趋势。

≥ 0

30s

集群死锁数量

集群中死锁数量变化的历史趋势。

≥ 0

60s

集群平均每秒事务数

集群所有数据库每秒钟平均事务数。计算公式:(delta_xact_commit+delta_xact_rollback)/current_collect_rate。

≥0

60s

集群平均每秒查询数

集群所有数据库每秒钟平均并发数。计算公式:delta_query_count/current_collect_rate。

≥0

60s

数据库会话数量

集群中单个数据库上会话数量变化的历史趋势。

≥ 0

30s

数据库查询数量

集群中单个数据库上查询数量变化的历史趋势。

≥ 0

30s

数据库插入行数

集群中单个数据库上插入行数变化的历史趋势。

≥ 0

60s

数据库更新行数

集群中单个数据库上更新行数变化的历史趋势。

≥ 0

60s

数据库删除行数

集群中单个数据库上删除行数变化的历史趋势。

≥ 0

60s

数据库容量

集群中单个数据库上数据库容量变化的历史趋势。

≥ 0

86400s

实时会话

会话ID

当前会话的会话ID(查询线程ID)。

字符串

30s

用户名称

执行当前会话的用户名。

字符串

30s

数据库名称

当前会话连接的数据库名称。

字符串

30s

会话用时

当前会话的存在时间,单位:ms。

≥ 0ms

30s

应用名称

创建当前会话的应用名称。

字符串

30s

查询数量

当前会话执行过的SQL语句的数量。

≥ 0

30s

最近查询用时

当前会话中前一个SQL语句的执行用时。

≥ 0ms

30s

客户端IP

当前会话的发起客户端IP地址。

字符串

30s

接入CN

当前会话的连接CN。

字符串

30s

会话状态

当前会话的执行状态。

运行/空闲/重试

30s

实时查询

查询ID

当前查询语句的QueryID,内核给每一个查询语句分配的唯一标识。

字符串

30s

用户名称

提交当前查询语句的用户名称。

字符串

30s

数据库名称

当前查询语句所对应的数据库名称。

字符串

30s

应用名称

当前查询语句所对应的应用名称。

字符串

30s

工作负载队列

承载当前查询语句的工作负载队列名称。

字符串

30s

提交时间

当前查询语句提交的时间戳。

字符串

30s

阻塞时间

当前查询语句执行前的等待时间,单位:ms。

≥ 0

30s

执行时间

当前查询语句到目前为止的执行时间,单位:ms。

≥ 0

30s

CPU时间

当前查询语句在所有DN上执行的CPU总时间,单位:ms。

≥ 0

30s

CPU时间倾斜

当前查询语句在所有DN上执行的CPU时间倾斜率。

0%~100%

30s

查询语句

当前正在执行的查询语句。

字符串

30s

接入CN

提交当前查询语句的CN名称。

字符串

30s

客户端IP

提交当前查询语句的客户端IP地址。

字符串

30s

快慢车道

当前查询语句所在的车道。

快车道/慢车道

30s

查询状态

当前正在执行查询的语句的查询状态。

字符串

30s

会话ID

当前查询语句的SessionID,内核给每一个客户端连接分配的唯一标识。

字符串

30s

排队状态

当前查询在数据库中执行的状态,是否在工作负载队列上排队。

是/否

30s

历史查询

查询ID

查询语句的QueryID,内核给每一个查询语句分配的唯一标识。

字符串

180s

用户名称

提交查询语句的用户名称。

字符串

180s

应用名称

查询语句对应的应用名称。

字符串

180s

数据库名称

查询语句所对应的数据库名称。

字符串

180s

工作负载队列

承载当前查询语句的工作负载队列名称。

字符串

180s

提交时间

查询语句提交的时间戳。

字符串

180s

阻塞时间

查询语句执行前的等待时间,单位:ms。

≥ 0

180s

执行时间

查询语句到目前为止的执行时间,单位:ms。

≥ 0

180s

CPU时间

查询语句在所有DN上执行的CPU总时间,单位:ms。

≥ 0

180s

CPU时间倾斜

查询语句在所有DN上执行的CPU时间倾斜率。

0%~100%

180s

查询语句

执行的查询语句。

字符串

180s

慢实例监控

慢实例数量

当前时间点上检测出慢实例的数量。

≥ 0

240s

检测时间

慢实例首次检测出来的时间。

字符串

240s

节点名称

慢实例部署的节点名称。

字符串

240s

实例名称

慢实例的名称。

字符串

240s

慢节点检测次数(24小时内)

慢实例在24小时内被检测出的次数。

≥ 0

240s

工作负载队列监控

工作负载队列

集群中工作负载队列的名称。

字符串

120s

CPU使用率

工作负载队列的实时CPU使用率。

0%~100%

120s

CPU资源

工作负载队列的CPU使用率配额。

0%~100%

120s

实时短查询并发数

工作负载队列的实时简单并发数。

≥ 0

120s

短查询并发

工作负载队列的简单并发数配额。

≥ 0

120s

实时查询并发

工作负载队列的实时复杂并发数。

≥ 0

120s

查询并发

工作负载队列的复杂并发数配额。

≥ 0

120s

存储资源

工作负载队列的存储资源配额。

≥ 0

120s

磁盘使用率

工作负载队列的磁盘使用率。

0%~100%

120s

内存资源

工作负载队列的内存配额。

≥ 0

120s

内存使用率

工作负载队列的内存使用率

0%~100%

120s

工作负载队列上的等待查询

用户名

处于等待状态查询的用户名称。

字符串

120s

应用名称

处于等待状态查询的应用名称。

字符串

120s

数据库

处于等待状态查询的数据库名称。

字符串

120s

排队状态

查询在数据库中执行的状态(CCN/CN/DN)。

字符串

120s

等待时间

处于等待状态查询的等待时间长度,单位:ms。

≥ 0ms

120s

所属工作负载队列

处于等待状态查询所属的工作负载队列。

字符串

120s

查询语句

处于等待状态查询语句的内容。

字符串

120s

熔断查询

查询ID

熔断查询语句的QueryID。

字符串

120s

查询语句

熔断状态查询语句的内容。

字符串

120s

阻塞时间

查询语句触发熔断之前的阻塞时间,单位:ms。

≥ 0

120s

执行时间

查询语句触发熔断之前的执行时间,单位:ms。

≥ 0

120s

CPU时间

查询语句触发熔断之前各个DN消耗的平均CPU时间,单位:ms。

≥ 0

120s

CPU倾斜率

查询语句触发熔断之前各个DN间消耗CPU时间的倾斜率。

0%~100%

120s

异常处理方式

查询语句触发熔断后的处理方式。

取消/降级

120s

处理状态

查询语句熔断处理状态。

执行中/已完成

120s

SQL诊断

查询ID

当前查询的查询IP(查询逻辑ID)。

字符串

180s

数据库

当前查询执行的数据库名称。

字符串

180s

模式名

当前查询的模式名称。

字符串

180s

用户名称

当前查询的用户名称。

字符串

180s

客户端

当前查询的发起客户端名称。

字符串

180s

客户端IP地址

当前查询的发起客户端IP地址。

字符串

180s

运行时间

当前查询的执行时间,单位:ms。

≥ 0

180s

CPU时间

当前查询执行的CPU时间,单位:ms。

≥ 0

180s

开始时间

当前查询的开始时间。

时间戳

180s

完成时间

当前查询的结束时间。

时间戳

180s

详情

当前查询的详细介绍。

字符串

180s

INODE

INODE使用率

磁盘inode使用率。

0%~100%

30s

SCHEMA

SCHEMA使用率

数据库schema使用率。

0%~100%

3600s