数据库监控工具
技术背景
数据库作为IT基础设施,用户对数据库的要求是稳定、高吞吐、低延时。为了实现上述目标,确保数据库集群能够持续为用户提供稳定快速的服务。我们需要完善的数据库监控工具来帮助数据库运维人员,实时监控数据库运行的方方面面,做到异常问题早发现,快定位,及时处理。
DMS(Database Monitor Service)作为GaussDB(DWS)原生的数据库监控服务,可以提供全面的数据库资源消耗指标与数据库业务执行指标。DMS以可视化工具的形式监控数据库集群的实时与历史运行状态,帮助用户发现问题,定位问题,解决问题。
数据库监控原理
DMS采用三层结构实现GaussDB(DWS)数据库集群的监控:
- 采集(dms-agent):agent嵌入数据库集群的每个节点,采集集群运行状态,收集集群运行的原始数据并上报。
- 存储(dms-collection):接收agent上报的数据,并存入指标数据库。
- 分析(dms-monitoring):利用监控数据库中的大量数据,并通过聚合计算将监控视图展现给用户。
监控对象 |
指标名称 |
含义 |
取值范围 |
监控周期(原始指标) |
---|---|---|---|---|
集群概览 |
集群状态 |
集群的状态信息。 |
正常/异常/降级 |
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 |