使用增强监控 - Amazon Relational Database Service
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

使用增强监控

Amazon RDS 为数据库实例运行的操作系统 (OS) 实时提供指标。您可以使用控制台查看数据库实例的指标。此外,您可以在您选择的监视系统中通过 Amazon CloudWatch Logs 使用增强监控 JSON 输出。

默认情况下,增强监控指标在 CloudWatch Logs 中存储 30 天,这与典型的 CloudWatch 指标不同。要修改指标存储在 CloudWatch Logs 中的时间量,请在 CloudWatch 控制台中更改 RDSOSMetrics 日志组的保留期。有关更多信息,请参阅 Amazon CloudWatch Logs User Guide 中的更改 CloudWatch Logs 中的日志数据保留期

由于增强监控指标存储在 CloudWatch 日志中而不是 CloudWatch 指标中,因此增强监控的成本取决于以下几个因素:

  • 您只需为 Amazon CloudWatch Logs 提供的免费套餐之外的增强监测付费。

  • 监控间隔越短,操作系统指标报告频率越高,监控成本也就越高。

  • 增强监测的使用成本适用于启用了增强监测的每个数据库实例。监控大量数据库实例的成本要高于监控少量数据库实例。

  • 数据库实例支持的工作负载计算越密集,要报告的操作系统进程活动就越多,增强监测的成本也越高。

增强监控可用性

增强监测对以下数据库引擎可用:

  • MariaDB

  • Microsoft SQL Server

  • MySQL 版本 5.5 或更高版本

  • Oracle

  • PostgreSQL

增强监控可用于除 db.m1.small 实例类之外的所有数据库实例类。

CloudWatch 与增强监控指标的区别

CloudWatch 从数据库实例管理程序收集关于 CPU 使用率的指标,增强监测从实例代理收集其指标。您因此,可能会发现两种测量值之间存在差异,因为管理程序层执行的工作较少。如果数据库实例使用较小的实例类,差异可能更加显著,因为此情况下管理程序层可能会在单个物理实例上管理更多虚拟机 (VM)。若您想了解数据库实例上不同进程或线程对 CPU 的使用差异,增强监测指标非常有用。

设置和启用增强监控

要使用增强监控,您必须创建 IAM 角色,然后启用增强监控。

为增强监控创建 IAM 角色

增强监测需要代表您执行操作的权限来向 CloudWatch Logs发送操作系统指标信息。您使用 AWS Identity and Access Management (IAM) 角色授予增强监控权限。

在启用增强监控时创建 IAM 角色

在 RDS 控制台中启用增强监控后,Amazon RDS 可以为您创建所需的 IAM 角色。该角色命名为 rds-monitoring-role。RDS 将此角色用于指定的数据库实例或只读副本。

在启用增强监控时创建 IAM 角色的方法

  1. 启用和禁用增强监控中的步骤操作。

  2. 在选择角色的步骤中,将监视角色设置为默认值

在启用增强监控之前创建 IAM 角色

您可以在启用增强监控之前创建所需的角色。在启用增强监控时,请指定新角色的名称。如果使用 AWS CLI 或 RDS API 启用增强监测,则必须创建此必需角色。

必须向启用增强监控的用户授予 PassRole 权限。有关更多信息,请参阅 IAM 用户指南授予向 AWS 服务传递角色的用户权限中的示例 2。

为 Amazon RDS 增强监控创建 IAM 角色

  1. 通过以下网址打开 IAM 控制台https://console.amazonaws.cn

  2. 在导航窗格中,选择 Roles

  3. 选择创建角色

  4. 选择 AWS service (AWS 服务) 选项卡,然后从服务列表中选择 RDS

  5. 选择 RDS - Enhanced Monitoring (RDS - 增强监测),然后选择 Next: Permissions (下一步: 权限)

  6. 确保附加的权限策略页面显示 AmazonRDSEnhancedMonitoringRole,然后选择 Next: Tags (下一步: 标签)

  7. 添加标签页面上,选择 Next: Review (下一步: 审核)

  8. 对于角色名称,为您的角色输入一个名称。例如,输入 emaccess

    您角色的可信实体是 AWS 服务 monitoring.rds.amazonaws.com

  9. 选择创建角色

启用和禁用增强监控

您可以使用 AWS 管理控制台、AWS CLI 或 RDS API 启用和禁用增强监控。

您可以在创建数据库实例或只读副本时启用增强监控,也可以在修改数据库实例时启用增强监控。如果修改数据库实例以启用增强监测,您不需要重启数据库实例,更改也会生效。

执行以下某种操作时,您可以在 RDS 控制台中启用增强监测:

  • 创建数据库实例 – 您可以在其他配置下的监控部分启用增强监控。

  • 创建只读副本 – 您可以在监控部分启用增强监控。

  • 修改数据库实例 – 您可以在监控部分启用增强监控。

使用 RDS 控制台启用增强监控的方法

  1. 滚动到监控部分。

  2. 为您的数据库实例或只读副本选择启用增强监测。要禁用增强监测,请选择禁用增强监测

    
                  启用增强监控
  3. Monitoring Role 属性设置为您创建的 IAM 角色以允许 Amazon RDS 代表您与 Amazon CloudWatch Logs 通信,或选择 Default 让 RDS 为您创建一个名为 rds-monitoring-role 的角色。

  4. 粒度属性设置成两次为数据库实例或只读副本收集指标之间的间隔,以秒为单位。Granularity 属性可以设置为以下值之一:1510153060

注意

RDS 控制台最快每 5 秒刷新一次。如果您在 RDS 控制台中将粒度设置为 1 秒,仍然会看到指标每 5 秒更新一次。使用 CloudWatch Logs 可以获得 1 秒的指标更新。

要使用 AWS CLI 启用增强监控,请在以下命令中将 --monitoring-interval 选项设置为 0 以外的值,并将 --monitoring-role-arn 选项设置为您在为增强监控创建 IAM 角色中创建的角色。

--monitoring-interval 选项指定收集增强监控指标的时间点之间的间隔,以秒为单位。选项的有效值为 015101530、和 60

要使用 AWS CLI 禁用增强监控,请在这些命令中将 --monitoring-interval 选项设置为 0

以下示例为数据库实例启用增强监控:

对于 Linux、macOS 或 Unix:

aws rds modify-db-instance \ --db-instance-identifier mydbinstance \ --monitoring-interval 30 \ --monitoring-role-arn arn:aws:iam::123456789012:role/emaccess

对于 Windows:

aws rds modify-db-instance ^ --db-instance-identifier mydbinstance ^ --monitoring-interval 30 ^ --monitoring-role-arn arn:aws:iam::123456789012:role/emaccess

要使用 RDS API 启用增强监控,请将 MonitoringInterval 参数设置为 0 以外的值,并将 MonitoringRoleArn 参数设置为您在为增强监控创建 IAM 角色中创建的角色。在以下操作中设置这些参数:

MonitoringInterval 参数指定收集增强监控指标的时间点之间的间隔,以秒为单位。有效值为 01510153060

要使用 RDS API 禁用增强监控,请将设置 MonitoringInterval0

查看增强监控

您可以在 RDS 控制台中查看增强监测报告的操作系统指标,方法是为监测选择 Enhanced monitoring (增强监测)

“Enhanced Monitoring (增强监测)”页面如下所示。


        “Dashboard (控制面板)”视图

一些数据库实例为数据库实例的数据存储卷使用多个磁盘。在这些数据库实例上,Physical Devices (物理设备) 图表显示每一个磁盘的指标。例如,下图显示四个磁盘的指标。


        具有多个磁盘的图表
注意

目前,Physical Devices (物理设备) 图表不可用于 Microsoft SQL Server 数据库实例。

在查看聚合的 Disk I/O (磁盘 I/O)File system (文件系统) 图表时,rdsdev 设备与 /rdsdbdata 文件系统相关联,后者存储了所有数据库文件和日志。filesystem 设备与 / 文件系统(又称为根)相关联,后者存储了与操作系统相关的文件。


        显示文件系统使用情况的图表

如果数据库实例是多可用区部署,则您可以查看主数据库实例及其多可用区备用副本的操作系统指标。在 Enhanced monitoring (增强监测) 视图中,选择 primary (主) 来查看主数据库实例的操作系统指标,或选择 secondary (辅助) 来查看备用副本的操作系统指标。


        增强监测的主和辅助选择

有关多可用区部署的更多信息,请参阅Amazon RDS 的高可用性(多可用区)

注意

目前,对于 MariaDB 或 Microsoft SQL Server 数据库实例,不支持查看多可用区备用副本的操作系统指标。

如果要查看运行在数据库实例上的进程的详细信息,请为监测选择 OS 进程列表

Process List (进程列表) 视图如下所示。


        “Process list (进程列表)”视图

Process list (进程列表) 视图中所示的增强监测指标按以下方式组织:

  • RDS child processes (RDS 子进程) – 显示支持数据库实例的 RDS 进程的摘要,例如 和 mysqld(对于 MySQL 数据库实例)。进程线程在父进程下嵌套显示。进程线程仅显示 CPU 使用率,因为进程所有线程的其他指标都相同。控制台最多显示 100 个进程和线程。因此,显示结果将是占用最多 CPU 和内存的进程和线程。如果有超过 50 个进程和超过 50 个线程,则控制台只会显示每种类别的前 50 个。这种显示方式有助于您了解哪些进程对性能影响最大。

  • RDS processes(RDS 进程)– 概要显示 RDS 管理代理所用的资源、诊断监控进程以及支持 RDS 数据库实例所需的其他 AWS 进程。

  • OS processes – 显示内核和系统进程摘要,这些进程通常对性能影响最小。

对每个进程列出的项目有:

  • VIRT – 显示进程的虚拟大小。

  • RES – 显示进程正在使用的实际物理内存。

  • CPU% – 显示进程正在使用的总 CPU 带宽的百分比。

  • MEM% – 显示进程使用的总内存的百分比。

RDS 控制台中显示的监控数据是从 Amazon CloudWatch Logs 中检索的。您还可以从 CloudWatch Logs 中检索数据库实例的指标作为日志流。有关更多信息,请参阅使用 CloudWatch Logs 查看增强监控

以下情况下不会返回增强监测指标:

  • 数据库实例发生了故障转移。

  • 更改了数据库实例的实例类 (扩展计算)。

增强监测指标在重启数据库实例期间返回,因为只会重启数据库引擎。仍会报告操作系统的指标。

使用 CloudWatch Logs 查看增强监控

为数据库实例启用增强监测后,您可以使用 CloudWatch Logs 查看数据库实例指标,每个日志流表示一个被监控的数据库实例。日志流标识符是数据库实例的资源标识符 (DbiResourceId)。

查看增强监控日志数据

  1. 通过以下网址打开 CloudWatch 控制台:https://console.amazonaws.cn/cloudwatch/

  2. 如果需要,选择数据库实例所在的区域。有关更多信息,请参阅 Amazon Web Services 一般参考 中的区域和终端节点

  3. 在导航窗格中,选择 Logs (日志)

  4. 从日志组列表中选择 RDSOSMetrics

    在多可用区部署中,名称中附加了 -secondary 的日志文件针对多可用区备用副本。

    
            多可用区备用副本日志文件
  5. 从日志流列表中选择要查看的日志流。

可用操作系统指标

下列各表列出了使用 Amazon CloudWatch Logs 可获得的操作系统指标。

MariaDB、MySQL、Oracle 和 PostgreSQL 数据库实例的指标

指标 控制台名称 描述

General

engine

不适用

数据库实例的数据库引擎。

instanceID

不适用

数据库实例标识符。

instanceResourceID

不适用

数据库实例的不可变标识符,此标识符对于 AWS 区域是唯一的,也用作日志流标识符。

numVCPUs

不适用

数据库实例的虚拟 CPU 数量。

timestamp

不适用

提取指标的时间。

uptime

不适用

数据库实例处于活动状态的时间量。

version

不适用

操作系统指标的流 JSON 格式版本。

cpuUtilization

guest

CPU Guest (CPU 访客)

来宾程序使用的 CPU 百分比。

idle

CPU Idle (CPU 空闲)

CPU 空闲百分比。

irq

CPU IRQ

软件中断使用的 CPU 百分比。

nice

CPU Nice (CPU 良好)

以最低优先级运行的程序使用的 CPU 百分比。

steal

CPU Steal (CPU 被盗用)

其他虚拟机使用的 CPU 百分比。

system

CPU System (CPU 系统)

内核使用的 CPU 百分比。

total

CPU Total (CPU 总计)

使用中的 CPU 百分比总计。此值包含 nice 值。

user

CPU User (CPU 用户)

用户程序使用的 CPU 百分比。

wait

CPU Wait (CPU 等待)

等待 I/O 访问时的未使用 CPU 百分比。

diskIO

avgQueueLen

Avg Queue Size (平均队列大小)

在 I/O 设备队列中等待的请求数。

avgReqSz

Ave Request Size (平均请求大小)

平均请求大小 (以 KB 为单位)。

await

Disk I/O Await (磁盘 I/O 等待)

响应请求所需的毫秒数,包括排队时间和服务时间。

device

不适用

使用中的磁盘设备的标识符。

readIOsPS

Read IO/s (读取 IO/秒)

每秒的读取操作数。

readKb

Read Total (读取总计)

读取的总 KB 数。

readKbPS

Read Kb/s (读取 Kb/秒)

每秒读取的 KB 数。

readLatency

Read Latency (读取延迟)

从提交读取 I/O 请求到完成该请求所经过的时间(以毫秒为单位)。

此指标仅对 Amazon Aurora 可用。

readThroughput

Read Throughput (读取吞吐量)

向数据库集群发出的请求要使用的网络吞吐量(以字节/秒为单位)。

此指标仅对 Amazon Aurora 可用。

rrqmPS

Rrqms

每秒排队的合并读取请求数。

tps

TPS

每秒的 I/O 事务数。

util

Disk I/O Util (磁盘 I/O 利用率)

发出请求所经历的 CPU 时间的百分比。

writeIOsPS

Write IO/s (写入 IO/秒)

每秒的写入操作数。

writeKb

Write Total (写入总计)

写入的总 KB 数。

writeKbPS

Write Kb/s (写入 Kb/秒)

每秒写入的 KB 数。

writeLatency

Write Latency (写入延迟)

从提交写入 I/O 请求到完成该请求所经历的平均时间(以毫秒为单位)。

此指标仅对 Amazon Aurora 可用。

writeThroughput

Write Throughput (写入吞吐量)

来自数据库集群的响应所使用的网络吞吐量(以字节/秒为单位)。

此指标仅对 Amazon Aurora 可用。

wrqmPS

Wrqms

每秒排队的合并写入请求数。

physicalDeviceIO

avgQueueLen

Physical Devices Avg Queue Size (物理设备平均队列大小)

在 I/O 设备队列中等待的请求数。

avgReqSz

Physical Devices Ave Request Size (物理设备平均请求大小)

平均请求大小 (以 KB 为单位)。

await

Physical Devices Disk I/O Await (物理设备磁盘 I/O 等待)

响应请求所需的毫秒数,包括排队时间和服务时间。

device

不适用

使用中的磁盘设备的标识符。

readIOsPS

Physical Devices Read IO/s (物理设备读取 IO/s)

每秒的读取操作数。

readKb

Physical Devices Read Total (物理设备读取总数)

读取的总 KB 数。

readKbPS

Physical Devices Read Kb/s (物理设备读取 Kb/s)

每秒读取的 KB 数。

rrqmPS

Physical Devices Rrqms (物理设备 Rrqms)

每秒排队的合并读取请求数。

tps

Physical Devices TPS (物理设备 TPS)

每秒的 I/O 事务数。

util

Physical Devices Disk I/O Util (物理设备磁盘 I/O 利用率)

发出请求所经历的 CPU 时间的百分比。

writeIOsPS

Physical Devices Write IO/s (物理设备写入 IO/s)

每秒的写入操作数。

writeKb

Physical Devices Write Total (物理设备写入总数)

写入的总 KB 数。

writeKbPS

Physical Devices Write Kb/s (物理设备写入 Kb/s)

每秒写入的 KB 数。

wrqmPS

Physical Devices Wrqms (物理设备 Wrqms)

每秒排队的合并写入请求数。

fileSys

maxFiles

Max Inodes (最大 Inode 数)

可为文件系统创建的文件的最大数量。

mountPoint

不适用

文件系统的路径。

name

不适用

文件系统的名称。

total

Total Filesystem (文件系统总计)

文件系统的可用磁盘空间总量 (以 KB 为单位)。

used

Used Filesystem (已使用的文件系统)

文件系统中的文件所用的磁盘空间量 (以 KB 为单位)。

usedFilePercent

Used % (已使用百分比)

使用中的可用文件百分比。

usedFiles

Used Inodes (已使用 Inode)

文件系统中的文件数。

usedPercent

Used Inodes % (已使用 Inode 百分比)

使用中的文件系统磁盘空间百分比。

loadAverageMinute

fifteen

Load Avg 15 min (负载平均 15 分钟)

过去 15 分钟内请求 CPU 时间的进程数。

five

Load Avg 5 min (负载平均 5 分钟)

过去 5 分钟内请求 CPU 时间的进程数。

one

Load Avg 1 min (负载平均 1 分钟)

过去 1 分钟内请求 CPU 时间的进程数。

memory

active

Active Memory (活动内存)

已分配的内存量 (以 KB 为单位)。

buffers

Buffered Memory (缓冲内存)

在写入存储设备前用于缓存 I/O 请求的内存量 (以 KB 为单位)。

cached

Cached Memory (缓存内存)

用于缓存基于文件系统的 I/O 的内存量。

dirty

Dirty Memory (脏内存)

RAM 中已修改但未写入存储中的相关数据块的内存页面大小 (以 KB 为单位)。

free

Free Memory (空闲内存)

未分配的内存量 (以 KB 为单位)。

hugePagesFree

Huge Pages Free (可用大页)

可用大页数。大页是 Linux 内核的一项功能。

hugePagesRsvd

Huge Pages Rsvd (预留大页)

已提交大页数。

hugePagesSize

Huge Pages Size (大页大小)

每个大页单位的大小 (以 KB 为单位)。

hugePagesSurp

Huge Pages Surp (剩余大页)

剩余可用大页总数。

hugePagesTotal

Huge Pages Total (大页总计)

大页总数。

inactive

Inactive Memory (非活动内存)

最不常用内存页面大小 (以 KB 为单位)。

mapped

Mapped Memory (映射的内存)

在进程地址空间中有内存映射的文件系统内容的总大小 (以 KB 为单位)。

pageTables

Page Tables (页表)

页表使用的内存量 (以 KB 为单位)。

slab

Slab Memory (Slab 内存)

可重用内核数据结构大小 (以 KB 为单位)。

total

总内存

内存总量 (以 KB 为单位)。

writeback

Writeback Memory (回写内存)

RAM 中仍在写入备份存储的脏页大小 (以 KB 为单位)。

network

interface

不适用

数据库实例现用网络接口的标识符。

rx

RX

每秒接收的字节数。

tx

TX

每秒上传的字节数。

processList

cpuUsedPc

CPU % (CPU 百分比)

进程使用的 CPU 百分比。

id

不适用

进程的标识符。

memoryUsedPc

MEM%

进程使用的内存百分比。

name

不适用

进程的名称。

parentID

不适用

进程的父进程的进程标识符。

rss

RES

分配给进程的 RAM 量 (以 KB 为单位)。

tgid

不适用

线程组标识符,是表示线程所属进程的 ID 的数字。此标识符用于将同一进程内的线程分入一组。

vss

VIRT

分配给进程的虚拟内存量 (以 KB 为单位)。

swap

swap

Swap (交换)

可用的交换内存量(以 KB 为单位)。

swap in

Swaps in (换入)

从磁盘换入的内存量(以 KB 为单位)。

swap out

Swaps out (换出)

换出到磁盘的内存量(以 KB 为单位)。

free

Free Swap (可用交换)

空闲交换内存量(以 KB 为单位)。

committed

Committed Swap (已提交的交换)

用作缓存内存的交换内存量 (以 KB 为单位)。

tasks

blocked

Tasks Blocked (阻止的任务)

已阻止的任务的数量。

running

Tasks Running (正在运行的任务)

正在运行的任务的数量。

sleeping

Tasks Sleeping (正在休眠的任务)

正在睡眠的任务的数量。

stopped

Tasks Stopped (已停止的任务)

已停止的任务的数量。

total

Tasks Total (任务总计)

任务总数。

zombie

Tasks Zombie (停滞的任务)

有活动父任务的不活动子任务的数量。

Microsoft SQL Server 数据库实例的指标

指标 控制台名称 描述

General

engine

不适用

数据库实例的数据库引擎。

instanceID

不适用

数据库实例标识符。

instanceResourceID

不适用

数据库实例的不可变标识符,此标识符对于 AWS 区域是唯一的,也用作日志流标识符。

numVCPUs

不适用

数据库实例的虚拟 CPU 数量。

timestamp

不适用

提取指标的时间。

uptime

不适用

数据库实例处于活动状态的时间量。

version

不适用

操作系统指标的流 JSON 格式版本。

cpuUtilization

idle

CPU Idle (CPU 空闲)

CPU 空闲百分比。

kern

CPU Kernel (CPU 内核)

内核使用的 CPU 百分比。

user

CPU User (CPU 用户)

用户程序使用的 CPU 百分比。

disks

name

不适用

磁盘的标识符。

totalKb

Total Disk Space (磁盘空间总计)

磁盘的总空间 (KB)。

usedKb

Used Disk Space (已用磁盘空间)

磁盘上使用的空间量 (KB)。

usedPc

Used Disk Space % (已用磁盘空间百分比)

磁盘上使用的空间百分比。

availKb

Available Disk Space (可用磁盘空间)

磁盘上的可用空间 (KB)。

availPc

Available Disk Space % (可用磁盘空间百分比)

磁盘上可用空间的百分比。

rdCountPS

Reads/s (读取数/秒)

每秒的读取操作数

rdBytesPS

Read Kb/s (读取 Kb/秒)

每秒读取的字节数。

wrCountPS

Write IO/s (写入 IO/秒)

每秒的写入操作数。

wrBytesPS

Write Kb/s (写入 Kb/秒)

每秒写入的字节数。

memory

commitTotKb

Commit Total (提交总计)

正在使用的页面文件备份的虚拟地址空间量,即当前内存使用。此值包含主内存 (RAM) 和磁盘 (页面文件)。

commitLimitKb

Maximum Commit (最大提交量)

commitTotKb 指标的最大可取值。此值为当前页面文件大小加上可用于可分页内容的物理内存之和,不包含已分配给不可分页区域的 RAM。

commitPeakKb

Commit Peak (提交峰值)

自上次启动操作系统以来 commitTotKb 指标的最大值。

kernTotKb

Total Kernel Memory (内核内存总量)

分页和未分页内核池中的内存之和 (KB)。

kernPagedKb

Paged Kernel Memory (分页内核内存)

分页内核池中的内存量 (KB)。

kernNonpagedKb

Nonpaged Kerenel Memory (未分页内核内存)

未分页内核池中的内存量 (KB)。

pageSize

页面大小

页面的大小 (字节)。

physTotKb

总内存

物理内存量 (KB)。

physAvailKb

可用内存

可用物理内存量 (KB)。

sqlServerTotKb

SQL Server Total Memory (SQL Server 内存总量)

提交给 SQL Server 的内存量 (KB)。

sysCacheKb

System Cache (系统缓存)

系统缓存容量 (KB)。

network

interface

不适用

数据库实例现用网络接口的标识符。

rdBytesPS

Network Read Kb/s (网络读取 Kb/秒)

每秒接收的字节数。

wrBytesPS

Network Write Kb/s (网络写入 Kb/秒)

每秒发送的字节数。

processList

cpuUsedPc

Used % (已使用百分比)

进程使用的 CPU 百分比。

memUsedPc

MEM%

进程使用的总内存百分比。

name

不适用

进程的名称。

pid

不适用

进程的标识符。Amazon RDS 拥有的进程不存在此值。

ppid

不适用

此进程的父进程的进程标识符。仅子进程存在此值。

tid

不适用

线程标识符。仅线程存在此值。拥有的进程可使用 pid 值标识。

workingSetKb

不适用

私有工作集中的内存量加上进程正在使用且可与其他进程共享的内存量 (KB)。

workingSetPrivKb

不适用

进程正在使用但无法与其他进程共享的内存量 (KB)。

workingSetShareableKb

不适用

进程正在使用且可与其他进程共享的内存量 (KB)。

virtKb

不适用

进程正在使用的虚拟地址空间量 (KB)。虚拟地址空间的使用不一定意味着磁盘或主内存页的相应使用。

system

handles

Handles (句柄)

系统使用的句柄数量。

processes

进程

系统上运行的进程数量。

threads

Threads (线程)

系统上运行的线程数量。