

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

# 第三方监控工具
<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)。