Amazon Relational Database Service
用户指南 (API 版本 2014-10-31)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

监控 Amazon RDS

监控是保持 Amazon RDS 和 AWS 解决方案的可靠性、可用性和性能的重要环节。您应从 AWS 解决方案的所有部分收集监控数据,以便更轻松地调试出现的多点故障。在开始监控 Amazon RDS 之前,建议您创建一个可以回答以下问题的监控计划:

  • 您的监控目标是什么?

  • 您将监控哪些资源?

  • 监控这些资源的频率如何?

  • 您将使用哪些监控工具?

  • 谁负责执行监控任务?

  • 出现错误时应通知谁?

接下来,通过在不同时间和不同负载条件下衡量性能,在您的环境中建立为正常的 Amazon RDS 性能建立基准。在监控 Amazon RDS 时,您应考虑存储历史监控数据。此存储数据将为您提供与当前性能数据进行比较的基准,确定正常性能模式和性能异常,以及设计解决问题的方法。

例如,使用 Amazon RDS,您可监控网络吞吐量、读写 I/O 和/或元数据操作、客户端连接以及数据库实例的突增积分余额。如果性能在您建立的基准之外,您可能需要更改数据库实例的实例类或对客户端可用的数据库实例和只读副本的数量,以便针对您的工作负载优化数据库可用性。

通常,性能指标的可接受值取决于您的基准性能以及应用程序执行的操作。应调查相对于基准性能的一致或趋势性变化。有关特定类型指标的建议如下:

  • 高 CPU 或 RAM 消耗 – 较高的 CPU 或 RAM 消耗值可能是正常情况,前提是它们符合您的应用程序的目标 (如吞吐量或并发度) 并且是预期情况。

  • 磁盘空间消耗 – 如果使用的空间始终不低于总磁盘空间的 85%,则应调查磁盘空间消耗。应查看是否可以从实例中删除数据或是将数据存档到其他系统以释放空间。

  • 网络流量 – 对于网络流量,应与系统管理员进行讨论,以了解域网络和 Internet 连接的预期吞吐量。如果吞吐量始终低于预期,则应调查网络流量。

  • 数据库连接 – 如果发现用户连接数较高,同时实例性能下降并且响应时间延长,请考虑约束数据库连接。数据库实例的最佳用户连接数因您的实例类所执行操作的复杂性而异。您可以通过将数据库实例与 User Connections 参数设置为 0 以外的值 (无限制) 的参数组关联,确定数据库连接的数量。您可以使用现有参数组或新建一个。有关更多信息,请参阅 使用数据库参数组

  • IOPS 指标 – IOPS 指标的预期值取决于磁盘规格和服务器配置,因此,请使用您的基准来了解典型状况。调查值是否始终与您的基准不同。要获得最佳 IOPS 性能,请确保典型工作集适合内存大小,以最大程度减少读取和写入操作。

监控工具

AWS 为您提供了各种可用于监控 Amazon RDS 的工具。您可以配置其中的一些工具来为您执行监控任务,但有些工具需要手动干预。建议您尽可能实现监控任务自动化。

自动监控工具

您可以使用以下自动化监控工具来监控 Amazon RDS 并在出现错误时进行报告:

  • Amazon RDS 事件 – 订阅 Amazon RDS 事件以在数据库实例、数据库集群、数据库快照、数据库集群快照、数据库参数组或数据库安全组出现更改时收到通知。有关更多信息,请参阅 使用 Amazon RDS 事件通知

  • 数据库日志文件 – 使用 Amazon RDS 控制台或 Amazon RDS API 操作查看、下载或监视数据库日志文件。您还可以查询一些加载到数据库表中的数据库日志文件。有关更多信息,请参阅 Amazon RDS 数据库日志文件

  • Amazon RDS 增强监控 - 实时查看运行数据库实例或数据库集群的操作系统的指标。有关更多信息,请参阅 增强监测

此外,Amazon RDS 与 Amazon CloudWatch 集成以提供其他监控功能:

  • Amazon CloudWatch 指标 – Amazon RDS 每分钟自动向 CloudWatch 发送一次每个活动数据库实例和集群的指标。您无需为 CloudWatch 中的 Amazon RDS 指标额外付费。有关更多信息,请参阅 查看数据库实例指标

  • Amazon CloudWatch 警报 – 您可以观察特定时间段中的单个 Amazon RDS 指标,并根据相对于您设置的阈值的指标值执行一项或多项操作。有关更多信息,请参阅 使用 Amazon CloudWatch 进行监控

  • Amazon CloudWatch Logs – MariaDB、MySQL 和 Aurora MySQL 使您能够在 CloudWatch Logs 中监控、存储和访问数据库日志文件。有关更多信息,请参阅Amazon CloudWatch Logs User Guide

手动监控工具

监控 Amazon RDS 时的另一个重要环节是手动监控 CloudWatch 警报未涵盖的那些项。Amazon RDS、CloudWatch、AWS Trusted Advisor 和其他 AWS 控制台控制面板均提供 AWS 环境状态的概览视图。建议您还要查看 DB instance 上的日志文件。

  • 您可以从 Amazon RDS 控制台监视资源的以下项目:

    • 与数据库实例的连接数

    • 针对数据库实例的读写操作数量

    • 数据库实例当前使用的存储量

    • 为数据库实例使用的内存和 CPU 量

    • 流入和流出数据库实例的网络流量

  • 您可以从 AWS Trusted Advisor 控制面板查看以下成本优化、安全性、容错能力和性能改进检查:

    • Amazon RDS 闲置数据库实例

    • Amazon RDS 安全组访问风险

    • Amazon RDS 备份

    • Amazon RDS 多可用区

    • Amazon Aurora 数据库实例的可访问性

    有关这些检查的更多信息,请参阅 Trusted Advisor 最佳实践 (检查)

  • CloudWatch 主页显示:

    • 当前警报和状态

    • 警报和资源的图表

    • 服务运行状况

    此外,您还可以使用 CloudWatch 执行以下操作:

    • 创建自定义控制面板以监控您关心的服务

    • 绘制指标数据图,以排除问题并弄清楚趋势

    • 搜索并浏览您所有的 AWS 资源指标

    • 创建和编辑警报以接收有关问题的通知

使用 Amazon CloudWatch 进行监控

您可以使用 Amazon CloudWatch 监控数据库实例,此工具可从 Amazon RDS 收集原始数据,并将数据处理为易读的近乎实时的指标。这些统计数据会保存两周,从而使您能够访问历史信息,并能够更好地了解您的 Web 应用程序或服务的执行情况。默认情况下,系统将在 1 分钟的时间段内自动将 Amazon RDS 指标数据发送至 CloudWatch。有关 CloudWatch 的更多信息,请参阅什么是 Amazon CloudWatch、Amazon CloudWatch Events 和 Amazon CloudWatch Logs? (位于 Amazon CloudWatch 用户指南 中)。

Amazon RDS 指标和维度

在使用 Amazon RDS 资源时,Amazon RDS 每分钟向 Amazon CloudWatch 发送指标和维度一次。您可以按照以下步骤查看 Amazon RDS 的各项指标。

使用 Amazon CloudWatch 控制台查看指标

指标的分组首先依据服务命名空间,然后依据每个命名空间内的各种维度组合。

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

  2. 如果需要,可以更改区域。从导航栏中,选择 AWS 资源所在的区域。有关更多信息,请参阅区域和终端节点

  3. 在导航窗格中,选择 Metrics。选择 RDS 指标命名空间。

     选择指标命名空间
  4. 选择指标维度,例如,按数据库类

  5. 要对指标进行排序,请使用列标题。要为指标绘制图表,请选中该指标旁的复选框。要按资源进行筛选,请选择资源 ID,然后选择 Add to search。要按指标进行筛选,请选择指标名称,然后选择 Add to search

     筛选指标

使用 AWS CLI 查看指标

  • 在命令提示符处,输入以下命令:

    aws cloudwatch list-metrics --namespace AWS/RDS

Amazon RDS 指标

AWS/RDS 命名空间包括以下指标。

指标 说明
BinLogDiskUsage

主节点上的二进制日志所占的磁盘空间大小。适用于 MySQL 只读副本。

单位:字节

BurstBalance

可用的通用型 SSD (GP2) 突增存储桶 I/O 点数的百分比。

单位:百分比

CPUUtilization

CPU 使用百分率。

单位:百分比

CPUCreditUsage

[T2 实例] 实例为保持 CPU 使用率而花费的 CPU 积分数。一个 CPU 积分等于一个 vCPU 按 100% 利用率运行一分钟,或者 vCPU、利用率和时间的等效组合(例如, 一个 vCPU 按 50% 利用率运行两分钟,或者两个 vCPU 按 25% 利用率运行两分钟)。

CPU 积分指标仅每 5 分钟提供一次。如果您指定一个大于五分钟的时间段,请使用Sum 统计数据,而非 Average 统计数据。

单位:积分 (vCPU 分钟)

CPUCreditBalance

[T2 实例] 实例自启动后已累积获得的 CPU 积分数。对于 T2 标准,CPUCreditBalance 还包含已累积的启动积分数。

在获得积分后,积分将在积分余额中累积;在花费积分后,将从积分余额中扣除积分。积分余额具有最大值限制,这是由实例大小决定的。在达到限制后,将丢弃获得的任何新积分。对于 T2 标准,启动积分不计入限制。

实例可以花费 CPUCreditBalance 中的积分,以便突增到基准 CPU 使用率以上。

在实例运行过程中,CPUCreditBalance 中的积分不会过期。在实例停止时,CPUCreditBalance 不会保留,并且所有累积的积分都将丢失。

CPU 积分指标仅每 5 分钟提供一次。

单位:积分 (vCPU 分钟)

DatabaseConnections

使用中的数据库连接数。

单位:计数

DiskQueueDepth

等待访问磁盘的未完成 IO(读取/写入请求)的数量。

单位:计数

FreeableMemory

随机存取内存的可用大小。

单位:字节

FreeStorageSpace

可用存储空间的大小。

单位:字节

MaximumUsedTransactionIDs

已使用的最大事务 ID。适用于 PostgreSQL。

单位:计数

NetworkReceiveThroughput

数据库实例的传入(接收)网络流量,包括用于监控和复制的客户数据库流量和 Amazon RDS 流量。

单位:字节/秒

NetworkTransmitThroughput

数据库实例的传出(传输)网络流量,包括用于监控和复制的客户数据库流量和 Amazon RDS 流量。

单位:字节/秒

OldestReplicationSlotLag

在接收 WAL 数据方面最滞后的副本的滞后大小。适用于 PostgreSQL。

单位:MB

ReadIOPS

每秒平均磁盘读取 I/O 操作数。

单位:计数/秒

ReadLatency

每个磁盘 I/O 操作所需的平均时间。

单位:秒

ReadThroughput

每秒从磁盘读取的平均字节数。

单位:字节/秒

ReplicaLag

只读副本数据库实例滞后于源数据库实例的时间量。适用于 MySQL、MariaDB 和 PostgreSQL 只读副本。

单位:秒

ReplicationSlotDiskUsage

复制插槽文件使用的磁盘空间。适用于 PostgreSQL。

单位:MB

SwapUsage

数据库实例上使用的交换空间的大小。

单位:字节

TransactionLogsDiskUsage

事务日志使用的磁盘空间。适用于 PostgreSQL。

单位:MB

TransactionLogsGeneration

每秒生成的事务日志的大小。适用于 PostgreSQL。

单位:MB/秒

WriteIOPS

每秒平均磁盘写入 I/O 操作数。

单位:计数/秒

WriteLatency

每个磁盘 I/O 操作所需的平均时间。

单位:秒

WriteThroughput

每秒写入磁盘的平均字节数。

单位:字节/秒

Amazon RDS 维度

Amazon RDS 指标数据可使用下表中的任意维度进行筛选:

维度

描述

DBInstanceIdentifier

该维度筛选您为特定数据库实例请求的数据。

DBClusterIdentifier

此维度将筛选您为特定 Amazon Aurora 数据库群集请求的数据。

DBClusterIdentifier, Role

此维度将筛选您为特定 Amazon Aurora 数据库群集请求的数据,并按实例角色 (WRITER/READER) 聚合指标。例如,您可以聚合属于某个群集的所有 READER 实例的指标。

DatabaseClass

该维度筛选您为数据库类中的所有实例请求的数据。例如,您可以聚合属于数据库类 db.m1.small 的所有实例的指标。

EngineName

该维度筛选您仅为已识别的引擎名称请求的数据。例如,您可以聚合具有引擎名称 mysql 的所有实例的指标。

创建 CloudWatch 警报以监控 Amazon RDS

您可以创建 CloudWatch 警报,以在警报改变状态时发送 Amazon SNS 消息。警报会每隔一段时间 (由您指定) 监控一个指标,并根据相对于给定阈值的指标值每隔若干个时间段执行一项或多项操作。操作是向 Amazon SNS 主题或 Auto Scaling 策略发送的通知。

警报只会调用操作进行持续的状态变更。CloudWatch 警报将不会调用操作,因为这些操作处于特定状态,必须改变其状态并维持指定的若干个时间段。以下过程概述如何为 Amazon RDS 创建警报。

使用 CloudWatch 控制台设置警报

  1. 登录 AWS 管理控制台并通过以下网址打开 CloudWatch 控制台 https://console.amazonaws.cn/cloudwatch/

  2. 选择 Alarms,然后选择 Create AlarmCreate Alarm Wizard (创建警报向导) 将随即启动。

  3. 选择 RDS Metrics 并滚动 Amazon RDS 指标以找到要为其设置警报的指标。要仅在此对话框中显示 Amazon RDS 指标,请搜索资源的标识符。选择要为其创建警报的指标,然后选择 Next

  4. 填写指标的 NameDescriptionWhenever 值。

  5. 如果您希望 CloudWatch 在达到警报状态时向您发送一封电子邮件,请在 Whenever this alarm: (每当此警报:) 字段中,选择 State is ALARM (状态为“警报”)。在 Send notification to (发送通知到) 字段中,选择一个现有 SNS 主题。如果您选择 Create topic (创建主题),那么您就可以为新电子邮件订阅列表设置名称和电子邮件地址。此列表将保存下来并会在将来的警报字段中显示出来。

    注意

    如果您使用 Create topic (创建主题) 创建一个新 Amazon SNS 主题,那么电子邮件地址在接收通知之前必须通过验证。当警报进入警报状态时,才会发送电子邮件。如果在验证电子邮件地址之前警报状态发生了变化,那么它们不会接收到通知。

  6. 此时,Alarm Preview 区域将为您提供一次机会来预览即将创建的警报。选择 Create Alarm

使用 AWS CLI 设置警报

使用 CloudWatch API 设置警报

将数据库引擎日志发布到 Amazon CloudWatch Logs

您可以配置 Amazon RDS 数据库引擎以将日志数据发布到 Amazon CloudWatch Logs 中的日志组。利用 CloudWatch Logs,可以对日志数据进行实时分析并使用 CloudWatch 创建警报和查看指标。您可以使用 CloudWatch Logs 在高持久性存储中存储日志记录,并且可以使用 CloudWatch Logs 代理对日志记录进行管理。例如,您可以确定何时将日志记录从主机轮换到日志服务,以便可在需要时访问原始日志。

您可以导出 Amazon RDS MariaDB (版本 10.0 和 10.1)、Amazon RDS MySQL (版本 5.6 和 5.7) 和 Aurora MySQL 的日志。

注意

您必须具有服务相关角色才能启用日志数据发布。有关服务相关角色的更多信息,请参阅以下内容:为 Amazon RDS 使用服务相关角色

有关这些引擎的特定要求,请参阅以下内容:

配置 CloudWatch 日志集成

要将数据库日志文件发布到 CloudWatch Logs,请选择要发布的日志。在创建新数据库实例时,在高级设置部分中做出此选择。您也可以修改现有数据库实例以开始发布。

添加 CloudWatch 日志

在启用发布之后,Amazon RDS 会持续将所有数据库实例日志记录流式传输到日志组。例如,对于您发布的每种类型的日志,您具有日志组 /aws/rds/instance/log type。此日志组与生成日志的数据库实例位于同一 AWS 区域中。

在发布了日志记录后,可以使用 CloudWatch Logs 搜索和筛选记录。有关搜索和筛选日志的更多信息,请参阅搜索和筛选日志数据

查看数据库实例指标

Amazon RDS 提供多个指标,使您可以监控数据库实例和数据库集群的运行状况。您可以监控数据库实例指标和操作系统 (OS) 指标。

本节提供有关如何使用 RDS 控制台和 CloudWatch 查看数据库实例指标的详细信息。有关使用 CloudWatch Logs 实时监控数据库实例的操作系统指标的信息,请参阅增强监测

使用控制台查看指标

查看数据库实例的数据库和操作系统指标

  1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台:https://console.amazonaws.cn/rds/

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

  3. 选中需了解其信息的数据库集群左侧的复选框。对于 Show Monitoring,从下面选择指标查看方式选项:

    • CloudWatch – 显示可从 Amazon CloudWatch 获得的数据库实例指标摘要。每个指标均包括一个图形,显示特定时间范围内监控的指标。

    • Enhanced monitoring (增强监控) – 在启用增强监控的情况下显示数据库实例的可用操作系统指标摘要。每个指标均包括一个图形,显示特定时间范围内监控的指标。

    • OS Process list (操作系统进程列表) – 显示所选实例中运行的每个进程的详细信息。

     RDS 指标查看选项

    提示

    您可以选择由带时间范围下拉列表的图表表示的指标的时间范围。

    您可以选择任意图表来呈现更详细的视图。您还可以对数据应用指标特定的筛选器。

使用 CLI 或 API 查看数据库实例指标

Amazon RDS 与 CloudWatch 指标集成以提供多种数据库实例指标。您可使用 RDS 控制台、AWS CLI 或 API 查看 CloudWatch 指标。

有关 Amazon RDS 指标的完整列表,请转到 Amazon CloudWatch 用户指南 中的 Amazon RDS 维度与指标

使用 CloudWatch CLI 查看数据库指标

注意

下列 CLI 示例需要使用 CloudWatch 命令行工具。如需有关 CloudWatch 的更多信息及下载开发人员工具,请参阅 Amazon CloudWatch 产品页。此示例中提供的 StartTimeEndTime 值均供说明之用。您必须为数据库实例替换相应的开始时间和结束时间值。

查看数据库实例的使用情况和性能统计数据

  • 使用带以下参数的 CloudWatch 命令 mon-get-stats

    PROMPT>mon-get-stats FreeStorageSpace --dimensions="DBInstanceIdentifier=mydbinstance" --statistics= Average --namespace="AWS/RDS" --start-time 2009-10-16T00:00:00 --end-time 2009-10-16T00:02:00
使用 CloudWatch API 查看数据库指标

此示例中提供的 StartTimeEndTime 值均供说明之用。您必须为数据库实例替换相应的开始时间和结束时间值。

查看数据库实例的使用情况和性能统计数据

  • 使用以下参数调用 CloudWatch API GetMetricStatistics

    • Statistics.member.1 = Average

    • Namespace = AWS/RDS

    • StartTime = 2009-10-16T00:00:00

    • EndTime = 2009-10-16T00:02:00

    • Period = 60

    • MeasureName = FreeStorageSpace