增强监测
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 提供的免费套餐之外的增强监测付费。
-
监控间隔越短,操作系统指标报告频率越高,监控成本也就越高。
-
增强监测的使用成本适用于启用了增强监测的每个数据库实例。监控大量数据库实例的成本要高于监控少量数据库实例。
-
数据库实例支持的工作负载计算越密集,要报告的操作系统进程活动就越多,增强监测的成本也越高。
CloudWatch 与增强监控指标的区别
CloudWatch 从数据库实例管理程序收集关于 CPU 使用率的指标,增强监测从实例代理收集其指标。您因此,可能会发现两种测量值之间存在差异,因为管理程序层执行的工作较少。如果数据库实例使用较小的实例类,差异可能更加显著,因为此情况下管理程序层可能会在单个物理实例上管理更多虚拟机 (VM)。若您想了解数据库实例上不同进程或线程对 CPU 的使用差异,增强监测指标非常有用。
设置和启用增强监控
要使用增强监控,您必须创建 IAM 角色,然后启用增强监控。
开始前的准备工作
增强监测需要代表您执行操作的权限来向 CloudWatch Logs发送操作系统指标信息。您使用 AWS Identity and Access Management (IAM) 角色为增强监控授予所需的权限。
首次在控制台中启用增强监控时,您可以通过为 Monitoring Role 属性选择 Default 选项让 RDS 创建所需的 IAM 角色。然后,RDS 自动为您创建一个名为 rds-monitoring-role
的角色,并将它用于指定的数据库实例或只读副本。
您也可以在启用增强监测前创建所需角色,然后在启用增强监测时指定您的新角色的名称。如果使用 AWS CLI 或 RDS API 启用增强监测,则必须创建此必需角色。
要创建适当的 IAM 角色来允许 Amazon RDS 代表您与 Amazon CloudWatch Logs 服务通信,请执行以下步骤。
必须向启用增强监控的用户授予 PassRole
权限。有关更多信息,请参阅 IAM 用户指南的授予向 AWS 服务传递角色的用户权限中的示例 2。
为 Amazon RDS 增强监控创建 IAM 角色
-
通过以下网址打开 IAM 控制台
:https://console.amazonaws.cn 。 -
在导航窗格中,选择 Roles。
-
选择创建角色。
-
选择 AWS 服务选项卡,然后从服务列表中选择 RDS。
-
选择 RDS - Enhanced Monitoring (RDS - 增强监测),然后选择 Next: Permissions (下一步: 权限)。
-
确保附加的权限策略页面显示 AmazonRDSEnhancedMonitoringRole,然后选择 Next: Tags (下一步: 标签)。
-
在添加标签页面上,选择 Next: Review (下一步: 审核)。
-
对于角色名称,输入您的角色的名称(如
emaccess
),然后选择创建角色。
启用和禁用增强监控
您可以使用 AWS 管理控制台、AWS CLI 或 RDS API 启用和禁用增强监控。
您可以在创建数据库集群或只读副本时启用增强监控,也可以在修改数据库集群时启用增强监控。如果修改数据库实例以启用增强监测,您不需要重启数据库实例,更改也会生效。
执行以下某种操作时,您可以在 RDS 控制台中启用增强监测:
-
创建数据库集群 – 您可以在其他配置下的监控部分启用增强监控。
-
创建只读副本 – 您可以在监控部分启用增强监控。
-
修改数据库实例 – 您可以在监控部分启用增强监控。
要使用 RDS 控制台启用增强监测,请滚动到 Monitoring 部分并执行以下操作:
-
为您的数据库实例或只读副本选择启用增强监测。
-
将 Monitoring Role 属性设置为您创建的 IAM 角色以允许 Amazon RDS 代表您与 Amazon CloudWatch Logs 通信,或选择 Default 让 RDS 为您创建一个名为
rds-monitoring-role
的角色。 -
将粒度属性设置成两次为数据库实例或只读副本收集指标之间的间隔,以秒为单位。Granularity 属性可以设置为以下值之一:
1
、5
、10
、15
、30
或60
。
要禁用增强监测,请选择禁用增强监测。

启用增强监测不需要重新启动数据库实例。
RDS 控制台最快每 5 秒刷新一次。如果您在 RDS 控制台中将粒度设置为 1 秒,仍然会看到指标每 5 秒更新一次。使用 CloudWatch Logs 可以获得 1 秒的指标更新。
要使用 AWS CLI 启用增强监控,请在以下命令中将 --monitoring-interval
选项设置为 0
以外的值,并将 --monitoring-role-arn
选项设置为您在开始前的准备工作中创建的角色。
--monitoring-interval
选项指定收集增强监控指标的时间点之间的间隔,以秒为单位。选项的有效值为 0
、1
、5
、10
、15
、30
、和 60
。
要使用 AWS CLI 禁用增强监控,请在这些命令中将 --monitoring-interval
选项设置为 0
。
例
以下示例为数据库实例启用增强监控:
对于 Linux、macOS 或 Unix:
aws rds modify-db-instance \ --db-instance-identifier
mydbinstance
\ --monitoring-interval30
\ --monitoring-role-arnarn:aws:iam::123456789012:role/emaccess
对于 Windows:
aws rds modify-db-instance ^ --db-instance-identifier
mydbinstance
^ --monitoring-interval30
^ --monitoring-role-arnarn:aws:iam::123456789012:role/emaccess
要使用 RDS API 启用增强监控,请在以下操作中,将 MonitoringInterval
参数设置为 0
以外的值,并将 MonitoringRoleArn
参数设置为您在开始前的准备工作中创建的角色。
MonitoringInterval
参数指定收集增强监控指标的时间点之间的间隔,以秒为单位。参数的有效值为 0
、1
、5
、10
、15
、30
和 60
。
要使用 RDS API 禁用增强监控,请在这些操作中将 MonitoringInterval
参数设置为 0
。
查看增强监控
您可以在 RDS 控制台中查看增强监测报告的操作系统指标,方法是为监测选择 Enhanced monitoring (增强监测)。
“Enhanced Monitoring (增强监测)”页面如下所示。

如果要查看运行在数据库实例上的进程的详细信息,请为监测选择 OS 进程列表。
Process List (进程列表) 视图如下所示。

Process list (进程列表) 视图中所示的增强监测指标按以下方式组织:
-
RDS child processes (RDS 子进程) – 显示支持数据库实例的 RDS 进程的摘要,例如
aurora
(对于 Amazon Aurora 数据库集群)和 。进程线程在父进程下嵌套显示。进程线程仅显示 CPU 使用率,因为进程所有线程的其他指标都相同。控制台最多显示 100 个进程和线程。因此,显示结果将是占用最多 CPU 和内存的进程和线程。如果有超过 50 个进程和超过 50 个线程,则控制台只会显示每种类别的前 50 个。这种显示方式有助于您了解哪些进程对性能影响最大。 -
RDS processes – 摘要显示 RDS 管理代理所用的资源、诊断监控进程以及支持 RDS 数据库实例所需的其他 AWS 进程。
-
OS processes – 显示内核和系统进程摘要,这些进程通常对性能影响最小。
对每个进程列出的项目有:
-
VIRT – 显示进程的虚拟大小。
-
RES – 显示进程正在使用的实际物理内存。
-
CPU% – 显示进程正在使用的总 CPU 带宽的百分比。
-
MEM% – 显示进程使用的总内存的百分比。
RDS 控制台中显示的监控数据是从 Amazon CloudWatch Logs 中检索的。您还可以从 CloudWatch Logs 中检索数据库实例的指标作为日志流。有关更多信息,请参阅使用 CloudWatch Logs 查看增强监控。
以下情况下不会返回增强监测指标:
-
数据库实例发生了故障转移。
-
更改了数据库实例的实例类 (扩展计算)。
增强监测指标在重启数据库实例期间返回,因为只会重启数据库引擎。仍会报告操作系统的指标。
使用 CloudWatch Logs 查看增强监控
为数据库实例启用增强监测后,您可以使用 CloudWatch Logs 查看数据库实例指标,每个日志流表示一个被监控的数据库实例。日志流标识符是数据库实例的资源标识符
(DbiResourceId
)。
查看增强监控日志数据
-
通过以下网址打开 CloudWatch 控制台:https://console.amazonaws.cn/cloudwatch/
。 -
如果需要,选择数据库实例所在的区域。有关更多信息,请参阅 Amazon Web Services 一般参考 中的区域和终端节点。
-
在导航窗格中,选择 Logs (日志)。
-
从日志组列表中选择 RDSOSMetrics。
-
从日志流列表中选择要查看的日志流。
可用操作系统指标
下列各表列出了使用 Amazon CloudWatch Logs 可获得的操作系统指标。
Aurora 的指标
组 | 指标 | 控制台名称 | 描述 |
---|---|---|---|
|
|
不适用 |
数据库实例的数据库引擎。 |
|
不适用 |
数据库实例标识符。 |
|
|
不适用 |
数据库实例的不可变标识符,此标识符对于 AWS 区域是唯一的,也用作日志流标识符。 |
|
|
不适用 |
数据库实例的虚拟 CPU 数量。 |
|
|
不适用 |
提取指标的时间。 |
|
|
不适用 |
数据库实例处于活动状态的时间量。 |
|
|
不适用 |
操作系统指标的流 JSON 格式版本。 |
|
|
|
CPU Guest (CPU 访客) |
来宾程序使用的 CPU 百分比。 |
|
CPU Idle (CPU 空闲) |
CPU 空闲百分比。 |
|
|
CPU IRQ |
软件中断使用的 CPU 百分比。 |
|
|
CPU Nice (CPU 良好) |
以最低优先级运行的程序使用的 CPU 百分比。 |
|
|
CPU Steal (CPU 被盗用) |
其他虚拟机使用的 CPU 百分比。 |
|
|
CPU System (CPU 系统) |
内核使用的 CPU 百分比。 |
|
|
CPU Total (CPU 总计) |
使用中的 CPU 百分比总计。此值包含 |
|
|
CPU User (CPU 用户) |
用户程序使用的 CPU 百分比。 |
|
|
CPU Wait (CPU 等待) |
等待 I/O 访问时的未使用 CPU 百分比。 |
|
|
|
Avg Queue Size (平均队列大小) |
在 I/O 设备队列中等待的请求数。 |
|
Ave Request Size (平均请求大小) |
平均请求大小 (以 KB 为单位)。 |
|
|
Disk I/O Await (磁盘 I/O 等待) |
响应请求所需的毫秒数,包括排队时间和服务时间。 |
|
|
不适用 |
使用中的磁盘设备的标识符。 |
|
|
Disk Queue Depth (磁盘队列深度) |
等待访问磁盘的待处理输入和输出 (I/O) 请求的数量。 |
|
|
Read IO/s (读取 IO/秒) |
每秒的读取操作数。 |
|
|
Read Total (读取总计) |
读取的总 KB 数。 |
|
|
Read Kb/s (读取 Kb/秒) |
每秒读取的 KB 数。 |
|
|
Read Latency (读取延迟) |
从提交读取 I/O 请求到完成该请求所经过的时间(以毫秒为单位)。 此指标仅对 Amazon Aurora 可用。 |
|
|
Read Throughput (读取吞吐量) |
向数据库集群发出的请求要使用的网络吞吐量(以字节/秒为单位)。 此指标仅对 Amazon Aurora 可用。 |
|
|
Rrqms |
每秒排队的合并读取请求数。 |
|
|
TPS |
每秒的 I/O 事务数。 |
|
|
Disk I/O Util (磁盘 I/O 利用率) |
发出请求所经历的 CPU 时间的百分比。 |
|
|
Write IO/s (写入 IO/秒) |
每秒的写入操作数。 |
|
|
Write Total (写入总计) |
写入的总 KB 数。 |
|
|
Write Kb/s (写入 Kb/秒) |
每秒写入的 KB 数。 |
|
|
Write Latency (写入延迟) |
从提交写入 I/O 请求到完成该请求所经历的平均时间(以毫秒为单位)。 此指标仅对 Amazon Aurora 可用。 |
|
|
Write Throughput (写入吞吐量) |
来自数据库集群的响应所使用的网络吞吐量(以字节/秒为单位)。 此指标仅对 Amazon Aurora 可用。 |
|
|
Wrqms |
每秒排队的合并写入请求数。 |
|
|
|
Max Inodes (最大 Inode 数) |
可为文件系统创建的文件的最大数量。 |
|
不适用 |
文件系统的路径。 |
|
|
不适用 |
文件系统的名称。 |
|
|
Total Filesystem (文件系统总计) |
文件系统的可用磁盘空间总量 (以 KB 为单位)。 |
|
|
Used Filesystem (已使用的文件系统) |
文件系统中的文件所用的磁盘空间量 (以 KB 为单位)。 |
|
|
Used % (已使用百分比) |
使用中的可用文件百分比。 |
|
|
Used Inodes (已使用 Inode) |
文件系统中的文件数。 |
|
|
Used Inodes % (已使用 Inode 百分比) |
使用中的文件系统磁盘空间百分比。 |
|
|
|
Load Avg 15 min (负载平均 15 分钟) |
过去 15 分钟内请求 CPU 时间的进程数。 |
|
Load Avg 5 min (负载平均 5 分钟) |
过去 5 分钟内请求 CPU 时间的进程数。 |
|
|
Load Avg 1 min (负载平均 1 分钟) |
过去 1 分钟内请求 CPU 时间的进程数。 |
|
|
|
Active Memory (活动内存) |
已分配的内存量 (以 KB 为单位)。 |
|
Buffered Memory (缓冲内存) |
在写入存储设备前用于缓存 I/O 请求的内存量 (以 KB 为单位)。 |
|
|
Cached Memory (缓存内存) |
用于缓存基于文件系统的 I/O 的内存量。 |
|
|
Dirty Memory (脏内存) |
RAM 中已修改但未写入存储中的相关数据块的内存页面大小 (以 KB 为单位)。 |
|
|
Free Memory (空闲内存) |
未分配的内存量 (以 KB 为单位)。 |
|
|
Huge Pages Free (可用大页) |
可用大页数。大页是 Linux 内核的一项功能。 |
|
|
Huge Pages Rsvd (预留大页) |
已提交大页数。 |
|
|
Huge Pages Size (大页大小) |
每个大页单位的大小 (以 KB 为单位)。 |
|
|
Huge Pages Surp (剩余大页) |
剩余可用大页总数。 |
|
|
Huge Pages Total (大页总计) |
大页总数。 |
|
|
Inactive Memory (非活动内存) |
最不常用内存页面大小 (以 KB 为单位)。 |
|
|
Mapped Memory (映射的内存) |
在进程地址空间中有内存映射的文件系统内容的总大小 (以 KB 为单位)。 |
|
|
Page Tables (页表) |
页表使用的内存量 (以 KB 为单位)。 |
|
|
Slab Memory (Slab 内存) |
可重用内核数据结构大小 (以 KB 为单位)。 |
|
|
总内存 |
内存总量 (以 KB 为单位)。 |
|
|
Writeback Memory (回写内存) |
RAM 中仍在写入备份存储的脏页大小 (以 KB 为单位)。 |
|
|
|
不适用 |
数据库实例现用网络接口的标识符。 |
|
RX |
每秒接收的字节数。 |
|
|
TX |
每秒上传的字节数。 |
|
|
|
CPU % (CPU 百分比) |
进程使用的 CPU 百分比。 |
|
不适用 |
进程的标识符。 |
|
|
MEM% |
进程使用的内存量 (以 KB 为单位)。 |
|
|
不适用 |
进程的名称。 |
|
|
不适用 |
进程的父进程的进程标识符。 |
|
|
RES |
分配给进程的 RAM 量 (以 KB 为单位)。 |
|
|
不适用 |
线程组标识符,是表示线程所属进程的 ID 的数字。此标识符用于将同一进程内的线程分入一组。 |
|
|
VIRT |
分配给进程的虚拟内存量 (以 KB 为单位)。 |
|
|
|
Swap (交换) |
可用的交换内存量(以 KB 为单位)。 |
|
Swaps in (换入) |
从磁盘换入的内存量(以 KB 为单位)。 |
|
|
Swaps out (换出) |
换出到磁盘的内存量(以 KB 为单位)。 |
|
|
Free Swap (可用交换) |
空闲交换内存量(以 KB 为单位)。 |
|
|
Committed Swap (已提交的交换) |
用作缓存内存的交换内存量 (以 KB 为单位)。 |
|
|
|
Tasks Blocked (阻止的任务) |
已阻止的任务的数量。 |
|
Tasks Running (正在运行的任务) |
正在运行的任务的数量。 |
|
|
Tasks Sleeping (正在休眠的任务) |
正在睡眠的任务的数量。 |
|
|
Tasks Stopped (已停止的任务) |
已停止的任务的数量。 |
|
|
Tasks Total (任务总计) |
任务总数。 |
|
|
Tasks Zombie (停滞的任务) |
有活动父任务的不活动子任务的数量。 |