

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 监控工具
<a name="monitoring-tools"></a>

我们建议您使用可观测性、监控和提醒工具来执行以下操作：
+ 深入了解您的 Amazon RDS 环境的性能
+ 检测意外和可疑行为
+ 规划容量并就分配 Amazon RDS 实例做出明智的决策
+ 分析指标和日志以主动预测潜在问题
+ 在超出阈值时生成提醒，以便在用户受到影响之前排查并解决问题

您可以选择不同的选项和解决方案，包括 AWS 提供的云原生可观测性及监控工具和服务；免费的开源软件解决方案；以及用于监控 Amazon RDS 数据库实例的商业第三方解决方案。以下各节将讨论其中一些工具。

要确定哪种工具最适合您的需求，请将每种工具的特性和功能与组织的要求进行比较。我们还建议您评估这些工具是否易于部署、配置和集成、软件更新和维护、部署方法（例如，硬件或无服务器）、许可、价格以及组织特定的任何其他因素。

**Sections**
+ [Amazon RDS 中包含的工具](amazon-rds-tools.md)
+ [CloudWatch 命名空间](cloudwatch-namespaces.md)
+ [CloudWatch 告警和控制面板](cloudwatch-dashboards.md)
+ [Amazon RDS 性能详情](performance-insights-tools.md)
+ [增强监控](enhanced-monitoring.md)
+ [其他 AWS 服务](aws-monitoring-tools.md)
+ [第三方监控工具](third-party-monitoring-tools.md)

# Amazon RDS 中包含的工具
<a name="amazon-rds-tools"></a>

Amazon Relational Database Service（Amazon RDS）是 AWS 云中的托管式数据库服务。由于 Amazon RDS 是一项托管服务，因此您无需处理大多数管理任务，例如数据库备份、操作系统（OS）和数据库软件安装、操作系统和软件补丁、高可用性设置、硬件生命周期及数据中心运营。AWS 还提供了一套全面的工具，使您能够为 Amazon RDS 数据库实例构建完整的[可观测性](https://aws.amazon.com/products/management-and-governance/use-cases/monitoring-and-observability/)解决方案。

一些监控工具已包含在 Amazon RDS 服务中，且已预配置并自动启用。启动新的 Amazon RDS 实例后，您可以立即使用两个自动工具：
+ **Amazon RDS 实例状态**提供有关数据库实例当前运行状况的详细信息。例如，状态代码包括*可用*、*已停止*、*正在创建*、*正在备份*和*失败*。您可以使用 Amazon RDS 控制台、AWS Command Line Interface（AWS CLI）或 Amazon RDS API 来查看实例状态。有关更多信息，请参阅 Amazon RDS 文档中的[查看 Amazon RDS 数据库实例状态](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/accessing-monitoring.html#Overview.DBInstance.Status)。
+ **Amazon RDS 建议**为数据库实例、只读副本和数据库参数组提供自动建议。这些建议是通过分析数据库实例使用情况、性能数据和配置而提供的，旨在提供指引。例如，*引擎版本已过时*建议表明您的数据库实例没有运行最新版本的数据库软件，您应该升级数据库实例以受益于最新的安全修复和其他改进。有关更多信息，请参阅 Amazon RDS 文档中的[查看 Amazon RDS 建议](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/monitoring-recommendations.html)。

# CloudWatch 命名空间
<a name="cloudwatch-namespaces"></a>

Amazon RDS 与 [Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html) 集成，后者是一项针对 AWS 上运行的云资源和应用程序的监控和提醒服务。Amazon RDS 会自动收集有关数据库实例的操作、利用率、性能及运行状况的指标、日志文件、跟踪和事件，并将它们发送到 CloudWatch 进行长期存储、分析和提醒。

Amazon RDS for MySQL 和 Amazon RDS for MariaDB 每隔一分钟自动向 CloudWatch 发布一组默认指标，无需额外付费。这些指标收集到两个*命名空间*中，这两个命名空间是指标的容器：
+ [AWS/RDS 命名空间](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-metrics.html#rds-cw-metrics-instance)包括数据库实例级别的指标。示例包括 `BinLogDiskUsage`（二进制日志占用的磁盘空间量）、`CPUUtilization`（CPU 利用率的百分比）、`DatabaseConnections`（与数据库实例的客户端网络连接数）等等。
+ [AWS/使用情况命名空间](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-metrics.html#rds-metrics-usage)包括账户级别的使用量指标，这些指标用于确定您是否在 [Amazon RDS 服务配额](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Limits.html#RDS_Limits.Limits)内进行操作。示例包括 `DBInstances`（您的 AWS 账户或区域中的数据库实例数量）、`DBSubnetGroups`（您的 AWS 账户或区域中的数据库子网组数量）和 `ManualSnapshots`（您的 AWS 账户或区域中手动创建的数据库快照数量）。

CloudWatch 将保留指标数据，如下所示：
+ 3 小时：周期小于 60 秒的高分辨率自定义指标将保留 3 小时。3 小时后，数据点将汇总为 1 分钟周期指标并保存 15 天。
+ 15 天：周期为 60 秒（1 分钟）的数据点保留 15 天。15 天后，数据点将汇总为 5 分钟周期指标并保存 63 天。
+ 63 天：周期为 300 秒（5 分钟）的数据点保留 63 天。63 天后，数据点将汇总为 1 小时周期指标并保存 15 个月。
+ 15 个月：周期为 3600 秒（1 小时）的数据点可用 15 个月（455 天）。

有关更多信息，请参阅 CloudWatch 文档中的[指标](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Metric)。

# CloudWatch 告警和控制面板
<a name="cloudwatch-dashboards"></a>

您可以使用 [Amazon CloudWatch 告警](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html)在特定时间段内监控特定 Amazon RDS 指标。例如，您可以监控 `FreeStorageSpace`，然后在指标值超出您设置的阈值时执行一个或多个操作。如果您将阈值设置为 250 MB，且可用存储空间为 200 MB（小于阈值），则告警将被激活，且可能触发一项操作，自动为 Amazon RDS 数据库实例预调配额外存储空间。告警还可以使用 Amazon Simple Notification Service（Amazon SNS）向 DBA 发送通知短信。下图阐明了此过程。

![\[使用 CloudWatch 告警监控 Amazon RDS 指标\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/amazon-rds-monitoring-alerting/images/cloudwatch-alarms.png)


CloudWatch 还提供[控制面板](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html)，您可以使用控制面板创建指标、自定义指标、与指标交互及保存指标的自定义视图（图表）。您还可以使用 [CloudWatch Logs Insights](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AnalyzingLogData.html) 创建控制面板，用于监控慢速查询日志和错误日志，并在这些日志中检测到特定模式时接收提醒。以下屏幕显示了 CloudWatch 控制面板示例。

![\[使用 CloudWatch 控制面板监控指标\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/amazon-rds-monitoring-alerting/images/cloudwatch-dashboard.png)


# Amazon RDS 性能详情
<a name="performance-insights-tools"></a>

[Amazon RDS 性能详情](https://aws.amazon.com/rds/performance-insights/)是一款数据库性能优化和监控工具，可扩展 Amazon RDS 监控功能。它通过可视化数据库实例负载并按等待、SQL语句、主机或用户筛选负载，帮助您分析数据库的性能。该工具将多个指标组合成单一交互式图表，可帮助您识别数据库实例可能存在的瓶颈类型，例如锁定等待、高 CPU 消耗或 I/O 延迟，并确定哪些 SQL 语句造成了瓶颈。以下屏幕显示了可视化示例。

![\[Amazon RDS 性能详情中的示例图\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/amazon-rds-monitoring-alerting/images/performance-insights-example.png)


您必须在数据库实例创建过程中[启用性能详情](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.Enabling.html)，才能收集账户中的 Amazon RDS 数据库实例的指标。免费套餐包括七天的性能数据历史记录和每月 100 万个 API 请求。（可选）您可以购买更长的保留期。有关完整的定价信息，请参阅[性能详情定价](https://aws.amazon.com/rds/performance-insights/pricing/)。

有关如何使用性能详情监控数据库实例的信息，请参阅本指南后面的[数据库实例监控](db-instance-monitoring.md)部分。

性能详情会[自动将指标发布到 CloudWatch](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.Cloudwatch.html)。除了使用性能详情工具外，您还可以利用 CloudWatch 提供的其他功能。您可以使用 CloudWatch 控制台、AWS CLI 或 CloudWatch API 来检查性能详情指标。您还可以像添加任何其他指标一样添加 CloudWatch 告警。例如，如果 `DBLoad` 指标超出您设置的阈值，您可能希望触发向 DBA 的 SMS 通知或采取纠正措施。您还可以将性能详情指标添加到现有的 CloudWatch 控制面板。

# 增强监控
<a name="enhanced-monitoring"></a>

[增强监控](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.overview.html)是一个可以实时捕获 Amazon RDS 数据库实例运行所在操作系统（OS）的指标的工具。这些指标为 CPU、内存、Amazon RDS 和操作系统进程、文件系统和磁盘 I/O 数据等提供高达一秒的粒度。您可以在 [Amazon RDS 控制台](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.Viewing.html)中访问和分析这些指标。与性能详情一样，增强监控指标从 Amazon RDS 传输到 CloudWatch，您可以从其他功能中受益，例如长期保存指标以供分析、创建指标筛选条件、在 CloudWatch 控制面板上显示图表以及设置告警。默认情况下，在创建新的 Amazon RDS 数据库实例时禁用增强监控。在创建或修改数据库实例时，可以[启用](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.Enabling.html)此功能。定价基于从 Amazon RDS 传输到 CloudWatch Logs 的数据量和存储费率。根据启用增强监控的数据库实例的粒度和数量，部分监控数据可以包含在 CloudWatch Logs 免费套餐内。有关完整的定价详细信息，请参阅 [Amazon CloudWatch 定价](https://aws.amazon.com/cloudwatch/pricing/)。有关此工具的更多信息，请参阅 [Amazon RDS 文档](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.html)和[增强监控](https://aws.amazon.com/rds/faqs/#Enhanced_Monitoring)常见问题。

# 其他 AWS 服务
<a name="aws-monitoring-tools"></a>

AWS 提供了多种支持服务，这些服务还与 Amazon RDS 和 CloudWatch 集成，以进一步增强数据库的可观测性。其中包括 Amazon EventBridge、Amazon CloudWatch Logs 和 AWS CloudTrail。
+ [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) 是一种无服务器事件总线，可以接收、筛选、转换、路由和传送来自您的应用程序和 AWS 资源（包括 Amazon RDS 数据库实例）的事件。*Amazon RDS 事件*表示 Amazon RDS 环境中的更改。例如，当数据库实例将状态从*可用*更改为*已停止*时，Amazon RDS 会生成事件 `RDS-EVENT-0087 / The DB instance has been stopped`。Amazon RDS 将事件近乎实时地传输到 CloudWatch Events 和 EventBridge。使用 EventBridge 和 CloudWatch Events，您可以定义规则，以针对感兴趣的特定 Amazon RDS 事件发送提醒，并在事件符合规则时自动执行操作。有多种目标可用于响应事件，例如可以执行纠正措施的 AWS Lambda 函数，或者可以发送邮件或 SMS 通知 DBA 或 DevOps 工程师有关事件的 Amazon SNS 主题。
+ [Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) 是一项集中存储所有应用程序、系统和 AWS 服务（包括 Amazon RDS for MySQL 和 MariaDB 数据库实例及 AWS CloudTrail）中的日志文件的服务。如果您为数据库实例[启用](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.Concepts.MariaDB.html#USER_LogAccess.MariaDB.PublishtoCloudWatchLogs)该功能，Amazon RDS 会自动将以下日志发布到 CloudWatch Logs：
  + 错误日志
  + 慢速查询日志
  + 常规日志
  + 审核日志

  您可以使用 CloudWatch Logs Insights 查询和分析日志数据。该功能包括一种专用查询语言，可帮助您搜索与您定义的模式匹配的日志事件。例如，您可以通过监视以下模式的错误日志文件来跟踪 MySQL 数据库实例中的表损坏：`"ERROR 1034 (HY000): Incorrect key file for table '*'; try to repair it OR Table * is marked as crashed"`。筛选的日志数据可以转换为 CloudWatch 指标。然后，您可以使用这些指标创建包含图表或表格数据的控制面板，或者在超出定义的阈值时设置告警。这在使用审核日志时特别有用，因为如果检测到任何意外或可疑行为，您可以自动监控、发送提醒并采取纠正措施。您可以使用 AWS 管理控制台、AWS CLI、Amazon RDS API 或适用于 CloudWatch Logs 的 AWS SDK，来访问和管理数据库日志。
+ [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html) 会记录并持续监控 AWS 账户中的用户和 API 活动。它可以帮助您对 Amazon RDS for MySQL 或 MariaDB 数据库实例进行审计、安全监控和运营问题排查。CloudTrail 与 Amazon RDS 集成。所有操作都可以记录，CloudTrail 提供 Amazon RDS 中用户、角色或 AWS 服务执行的操作记录。例如，当用户创建新的 Amazon RDS 数据库实例时，会检测到一个事件，且日志包括有关所请求的操作（`"eventName": "CreateDBInstance"`）、操作的日期和时间（`"eventTime": "2022-07-30T22:14:06Z"`）、请求参数（`"requestParameters": {"dBInstanceIdentifier": "test-instance", "engine": "mysql", "dBInstanceClass": "db.m6g.large"}`）等方面的信息。CloudTrail 记录的事件包括来自 Amazon RDS 控制台的调用和来自使用 Amazon RDS API 的代码的调用。

# 第三方监控工具
<a name="third-party-monitoring-tools"></a>

在某些情况下，除了 AWS 为 Amazon RDS 提供的全套云原生可观测性和监控工具之外，您可能还需要使用其他软件供应商的监控工具。此类场景包括混合部署，在这种部署中，您的本地数据中心可能运行多个数据库，而另一组数据库则在 AWS 云中运行。如果您已建立企业可观测性解决方案，则可能需要继续使用现有工具并将其扩展到您的 AWS 云部署中。设置第三方监控解决方案的挑战通常在于作为云托管服务的 Amazon RDS 所实施的保护措施。例如，您无法在运行数据库实例的主机操作系统上安装代理软件，因为对数据库主机的访问被拒绝。但是，您可以在 CloudWatch 和其他 AWS 云服务之上进行构建，将许多第三方监控解决方案与 Amazon RDS 集成。例如，可以导出 Amazon RDS 指标、日志、事件和跟踪，然后将其导入第三方监控工具，以进行进一步分析、可视化和提醒。其中一些第三方解决方案包括 Prometheus、Grafana 和 Percona。

## Prometheus 和 Grafana
<a name="prometheus-grafana"></a>

[Prometheus](https://prometheus.io/) 是一种[开源](https://github.com/prometheus/prometheus)监控解决方案，可按给定的间隔从配置的目标收集指标。它是一种通用监控解决方案，可以监控任何应用程序或服务。当您监控 Amazon RDS 数据库实例时，CloudWatch 会从 Amazon RDS 收集指标。然后，使用开源导出程序（例如 YACE 导出程序或 CloudWatch 导出程序）将指标导出到 Prometheus 服务器。
+ [YACE 导出程序](https://promcat.io/apps/aws-rds)通过在 CloudWatch API 的单个请求中检索多个指标，从而优化数据导出任务。指标存储在 Prometheus 服务器上后，服务器会评估规则表达式，并在观察到指定条件时生成提醒。
+ [CloudWatch 导出程序](https://github.com/prometheus/cloudwatch_exporter)由 Prometheus 官方维护。它通过 CloudWatch API 检索 CloudWatch 指标，并使用对 HTTP 端点的 REST API 请求，以与 Prometheus 兼容的格式将其存储在 Prometheus 服务器上。

在选择导出程序、设计部署模型及配置导出程序实例时，考虑 [CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_limits.html) 和 [CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/cloudwatch_limits_cwl.html) 服务及 API 配额，因为将 CloudWatch 指标导出到 Prometheus 服务器是基于 CloudWatch API 实现的。例如，在单个 AWS 账户和区域中部署多个 CloudWatch 导出程序实例来监控数百个 Amazon RDS 数据库实例，可能会导致节流错误 (**ThrottlingException**) 和代码 400 错误。要克服此类限制，请考虑使用 YACE 导出程序，该导出程序经过优化，可在单个请求中收集多达 500 个不同的指标。此外，要部署大量 Amazon RDS 数据库实例，您应考虑使用[多个](https://docs.aws.amazon.com/whitepapers/latest/organizing-your-aws-environment/benefits-of-using-multiple-aws-accounts.html#distribute-aws-service-quotas-and-api-request-rate-limits)实例AWS 账户，而不是将工作负载集中到单个 AWS 账户，并限制每个 AWS 账户中的导出程序实例数量。

提醒由 Prometheus 服务器生成并由 [Alertmanager](https://prometheus.io/docs/alerting/latest/alertmanager/) 处理。此工具负责对提醒进行重复数据删除、分组和路由到正确的接收者，例如邮件、SMS 或 Slack，或者启动自动响应操作。另一个名为 [Grafana](https://grafana.com/) 的[开源](https://github.com/grafana/grafana)工具显示这些指标的可视化效果。Grafana 提供丰富的可视化小组件，例如高级图表、动态控制面板以及临时查询和动态深入分析等分析功能。它还可以搜索和分析日志，并包括提醒功能，以持续评估指标和日志，并在数据与提醒规则匹配时发送通知。

![\[将 Prometheus 和 Grafana 与 Amazon RDS 和 CloudWatch 结合使用\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/amazon-rds-monitoring-alerting/images/third-party-tools.png)


## Percona
<a name="percona"></a>

[Percona 监控和管理（PMM）](https://docs.percona.com/percona-monitoring-and-management/setting-up/client/aws.html)是一款免费的[开源](https://github.com/percona/pmm)数据库监控、管理和可观测性解决方案，适用于 MySQL 和 MariaDB。PMM 从数据库实例及其主机收集数千个性能指标。它提供了用于在控制面板中可视化数据的 Web 用户界面以及其他功能，例如用于数据库运行状况评测的自动顾问。您可以使用 PMM 监控 Amazon RDS。但是，PMM 客户端（代理）未安装在 Amazon RDS 数据库实例的底层主机上，因为它无法访问这些主机。相反，该工具连接到 Amazon RDS 数据库实例，查询服务器统计数据、`INFORMATION_SCHEMA`、系统架构和性能架构，并使用 CloudWatch API 获取指标、日志、事件和跟踪。PMM 需要 AWS Identity and Access Management（IAM）用户访问密钥（IAM 角色），并会自动发现可供监控的 Amazon RDS 数据库实例。PMM 工具专为数据库监控而设计，且比 Prometheus 收集更多数据库特定指标。要使用 [PMM 查询分析控制面板](https://docs.percona.com/percona-monitoring-and-management/get-started/query-analytics.html)，必须将性能架构配置为查询源，因为未为 Amazon RDS 安装查询分析代理，也无法读取慢速查询日志。相反，它直接从 MySQL 和 MariaDB 数据库实例中查询 `performance_schema`，以获取指标。PMM 的突出特点之一是它能够就该工具在数据库中发现的问题向 DBA [发出提醒](https://docs.percona.com/percona-monitoring-and-management/get-started/alerting.html)和建议。PMM 提供一系列检查，可检测常见的安全威胁、性能下降、数据丢失和数据损坏。

除了这些工具之外，市场上还有几种可与 Amazon RDS 集成的商业可观测性和监控解决方案。示例包括 [Datadog 数据库监控](https://www.datadoghq.com/dg/monitor/rds-benefits/)、[Dynatrace Amazon RDS 监控](https://www.dynatrace.com/technologies/aws-monitoring/amazon-rds-monitoring/)和 [AppDynamics 数据库监控](https://www.appdynamics.com/supported-technologies/database/amazon-rds-monitoring)。