增强监测 - Amazon Aurora

增强监测

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 提供的免费套餐之外的增强监测付费。

    有关定价的更多信息,请参阅 Amazon CloudWatch 定价

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

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

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

CloudWatch 与增强监测指标的区别

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

设置和启用增强监测

要设置和启用增强监测,请执行下面列出的步骤。

开始前的准备工作

增强监测需要代表您执行操作的权限来向 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 角色

  1. 通过以下网址打开 IAM 控制台https://console.aws.amazon.com

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

  3. 选择创建角色

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

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

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

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

  8. 对于角色名称,输入您的角色的名称(如 emaccess),然后选择创建角色

启用和禁用增强监控

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

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

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

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

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

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

要使用 RDS 控制台启用增强监测,请滚动到 Monitoring 部分并执行以下操作:

  1. 为您的数据库实例或只读副本选择启用增强监测

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

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

要禁用增强监测,请选择禁用增强监测


            启用增强监测

启用增强监测不需要重新启动数据库实例。

注意

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

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

--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 参数设置为您在开始前的准备工作中创建的角色。

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

要使用 RDS API 禁用增强监控,请在这些操作中将 MonitoringInterval 参数设置为 0

查看增强监控

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

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


        “Dashboard (控制面板)”视图

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

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


        “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)。

查看增强监控日志数据

  1. 通过以下网址打开 CloudWatch 控制台:https://console.aws.amazon.com/cloudwatch/

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

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

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

  5. 从日志流列表中选择要查看的日志流。

可用操作系统指标

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

Aurora 的指标

指标 控制台名称 描述

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

不适用

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

diskQueueDepth

Disk Queue Depth (磁盘队列深度)

等待访问磁盘的待处理输入和输出 (I/O) 请求的数量。

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

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

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%

进程使用的内存量 (以 KB 为单位)。

name

不适用

进程的名称。

parentID

不适用

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

rss

RES

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

tgid

不适用

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

VIRT

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 (停滞的任务)

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