使用适用于 Amazon RDS 的 Amazon DevOps Guru 分析性能异常 - Amazon Relational Database Service

使用适用于 Amazon RDS 的 Amazon DevOps Guru 分析性能异常

Amazon DevOps Guru 是一项完全托管式运营服务,可帮助开发人员和运营商提高应用程序的性能和可用性。DevOps Guru 卸下了与识别运营问题相关的任务,以便您可以快速实施改进应用程序的建议。有关更多信息,请参阅《Amazon DevOps Guru 用户指南》中的什么是 Amazon DevOps Guru?

DevOps Guru 可检测、分析所有 Amazon RDS 数据库引擎的现有操作问题并提出建议。DevOps Guru for RDS 通过将机器学习应用于 RDS for PostgreSQL 数据库的性能详情指标,扩展了此功能。这些监控功能使得适用于 RDS 的 DevOps Guru 可以检测和诊断性能瓶颈,并建议具体的纠正措施。DevOps Guru for RDS 还可以在您的 RDS for PostgreSQL 数据库中出现问题状况之前检测出这些状况。

现在,您可以在 RDS 控制台中查看这些建议。有关更多信息,请参阅 来自 Amazon RDS 的建议

以下视频是关于 DevOps Guru for RDS 的概览。

有关此主题的深入分析,请参阅 Amazon DevOps Guru for RDS 深入剖析

DevOps Guru for RDS 的优势

如果是您负责 RDS for PostgreSQL 数据库,则您可能不知道正在发生影响该数据库的事件或回归。当您了解这个问题时,您可能不知道为什么会发生这个问题,也不知道该怎么处理它。您可以遵循 DevOps Guru for RDS 的建议,而不是向数据库管理员 (DBA) 寻求帮助或依赖第三方工具。

从 DevOps Guru for RDS 的详细分析中,您可以获得以下优势:

快速诊断

DevOps Guru for RDS 会持续监控和分析数据库遥测。性能详情、增强监控和 Amazon CloudWatch 会收集数据库实例的遥测数据。DevOps Guru for RDS 会使用统计和机器学习技术来挖掘这些数据并检测异常情况。要了解有关遥测数据的更多信息,请参阅《Amazon RDS 用户指南》中的在 Amazon RDS 上使用性能详情监控数据库负载使用增强监控来监控操作系统指标

快速解决方案

每个异常情况都会识别性能问题,并建议调查或纠正措施的途径。例如,DevOps Guru for RDS 可能会建议您调查特定的等待事件。或者,它可能建议您优化应用程序池设置以限制数据库连接的数量。根据这些建议,您可以比手动进行故障排除更快地解决性能问题。

主动见解

DevOps Guru for RDS 使用资源中的指标来检测潜在的问题行为,以免其成为更大的问题。例如,此服务可以检测数据库何时使用越来越多的磁盘临时表,这可能会开始影响性能。然后,DevOps Guru 会提供建议以帮助解决问题,从而防止问题变成更大的问题。

深入了解 Amazon 工程师和机器学习

为了检测性能问题并帮助您解决瓶颈,DevOps Guru for RDS 依赖于机器学习(ML)和高级数据公式。Amazon 数据库工程师为 DevOps Guru for RDS 结果的开发做出了贡献,该服务封装了多年来管理成千上万个数据库的经验。通过利用这些集体知识,适用于 RDS 的 DevOps Guru 可以教您最佳实践。

适用于 RDS 的 DevOps Guru 的工作原理

DevOps Guru for RDS 从 Amazon RDS 性能详情中收集有关 RDS for PostgreSQL 数据库的数据。最重要的指标是 DBLoad。适用于 RDS 的 DevOps Guru 使用性能详情指标,使用机器学习对其进行分析,并将洞察发布到控制面板。

洞察是 DevOps Guru 检测到的相关异常的集合。

在 DevOps Guru for RDS 中,异常是一种与 RDS for PostgreSQL 数据库的正常性能有所偏差的模式。

主动见解

主动见解可以让您在问题发生之前了解问题行为。它包含异常情况以及建议和相关指标,可以帮助您解决 RDS for PostgreSQL 数据库中的问题,以免问题变得更严重。这些见解发布在 DevOps Guru 控制面板上。

例如,DevOps Guru 可能会检测到 RDS for PostgreSQL 数据库正在创建许多磁盘上的临时表。如果不加以解决,这种趋势可能会导致性能问题。每项主动见解都包含有关纠正行为的建议以及指向使用 Amazon DevOps Guru 主动见解优化 RDS for PostgreSQL中相关主题的链接。有关更多信息,请参阅《Amazon DevOps Guru 用户指南》中的在 DevOps Guru 中使用见解

被动见解

被动见解可在异常行为发生时识别此类行为。如果 DevOps Guru for RDS 发现您的 RDS for PostgreSQL 数据库实例中的性能问题,它会在 DevOps Guru 控制面板中发布被动见解。有关更多信息,请参阅《Amazon DevOps Guru 用户指南》中的在 DevOps Guru 中使用见解

因果异常

因果异常是被动见解内的一项顶级异常。数据库加载(数据库加载)是适用于 RDS 的 DevOps Guru 的因果异常。

异常情况通过分配严重性级别 High(高)、Medium(中)或 Low(低)来衡量性能影响。要了解详情,请参阅《Amazon DevOps Guru 用户指南》中的适用于 RDS 的 DevOps Guru 的关键概念

如果 DevOps Guru 检测到数据库实例上的当前异常情况,则会在 RDS 控制台的 Databases(数据库)页面中收到提示。控制台还会提示您注意过去 24 小时内发生的异常。要从 RDS 控制台转到异常页面,请选择警报消息中的链接。RDS 控制台还会在 RDS for PostgreSQL 数据库实例的页面中向您发出提示。

上下文异常

上下文异常数据库负载(DB 负载)内与被动见解相关的一项调查结果。每个上下文异常都描述了需要调查的特定 RDS for PostgreSQL 性能问题。例如,适用于 RDS 的 DevOps Guru 可能会建议您考虑增加 CPU 容量或调查导致数据库负载的等待事件。

重要

我们建议您在修改生产实例之前在测试实例上测试所有更改。通过这种方式,您可以了解更改的影响。

要了解详情,请参阅《Amazon DevOps Guru 用户指南》中的分析 Amazon RDS 中的异常

设置适用于 RDS 的 DevOps Guru

要允许 DevOps Guru for Amazon RDS 发布 RDS for PostgreSQL 数据库的见解,请完成以下任务。

配置适用于 RDS 的 DevOps Guru 的 IAM 访问策略

要在 RDS 控制台中查看来自 DevOps Guru 的提示,您的 AWS Identity and Access Management (IAM) 用户或角色必须具有以下任一策略:

  • AWS 托管策略 AmazonDevOpsGuruConsoleFullAccess

  • AWS 托管式策略 AmazonDevOpsGuruConsoleReadOnlyAccess 以及以下任一策略:

    • AWS 托管策略 AmazonRDSFullAccess

    • 客户托管策略包括 pi:GetResourceMetricspi:DescribeDimensionKeys

有关更多信息,请参阅 为 Performance Insights 配置访问策略

为您的 RDS for PostgreSQL 数据库实例开启性能详情

适用于 RDS 的 DevOps Guru 依靠性能详情来获取其数据。如果没有性能详情,DevOps Guru 会发布异常情况,但不包括详细的分析和建议。

在创建或修改 RDS for PostgreSQL 数据库实例时,可以开启性能详情。有关更多信息,请参阅 为 Amazon RDS 打开和关闭 Performance Insights

打开 DevOps Guru 并指定资源覆盖范围

您可以开启 DevOps Guru,以让它通过以下任一方式监控您的 RDS for PostgreSQL 数据库。

在 RDS 控制台中开启 DevOps Guru

您可以在 Amazon RDS 控制台中通过多个途径来开启 DevOps Guru。

创建 RDS for PostgreSQL 数据库时开启 DevOps Guru

创建工作流包括一个设置,该设置可为数据库开启 DevOps Guru 覆盖范围。原定设置情况下,当您选择 Production(生产)模板时,此设置处于开启状态。

创建 RDS for PostgreSQL 数据库时开启 DevOps Guru
  1. 登录 AWS Management Console 并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 创建数据库实例中的步骤操作,直至(但不包括)您选择监控设置的步骤。

  3. Monitoring(监控)中,选择 Turn on Performance Insights(开启性能详情)。为让 DevOps Guru for RDS 提供对性能异常情况的详细分析,必须开启性能详情。

  4. 选择 Turn on DevOps Guru(开启 DevOps Guru)。

    创建数据库实例时开启 DevOps Guru
  5. 为数据库创建一个标签,以便 DevOps Guru 可以对其进行监控。执行以下操作:

    • Tag key(标签键)的文本字段中,输入以 Devops-Guru- 开头的名称。

    • Tag key(标签键)的文本字段中,输入任意值。例如,如果输入 rds-database-1 作为 RDS for PostgreSQL 数据库的名称,还可以输入 rds-database-1 作为标签值。

    有关标签的更多信息,请参阅《Amazon DevOps Guru 用户指南》中的“使用标签识别 DevOps Guru 应用程序中的资源”。

  6. 完成创建数据库实例 中的其余步骤。

从通知横幅开启 DevOps Guru

如果 DevOps Guru 未涵盖您的资源,Amazon RDS 会在以下位置通过横幅通知您:

  • 数据库集群实例的 Monitoring(监控)选项卡

  • 性能详情控制面板

DevOps Guru 横幅
RDS for PostgreSQL 数据库开启 DevOps Guru
  1. 在横幅中,选择 Turn on DevOps Guru for RDS(开启适用于 RDS 的 DevOps Guru)。

  2. 输入标签键名称和值。有关标签的更多信息,请参阅《Amazon DevOps Guru 用户指南》中的“使用标签识别 DevOps Guru 应用程序中的资源”

    在 RDS 控制台中开启 DevOps Guru
  3. 选择 Turn on DevOps Guru(开启 DevOps Guru)。

响应开启 DevOps Guru 时的权限错误

如果您在创建数据库时从 RDS 控制台开启 DevOps Guru,RDS 可能会显示以下关于缺少权限的横幅。

指明缺少权限错误的横幅
响应权限错误
  1. 向您的 IAM 用户或角色授予用户托管式角色 AmazonDevOpsGuruConsoleFullAccess。有关更多信息,请参阅 配置适用于 RDS 的 DevOps Guru 的 IAM 访问策略

  2. 打开 RDS 控制台。

  3. 在导航窗格中,选择 Performance Insights

  4. 在刚创建的集群中选择一个数据库实例。

  5. 选择此开关以开启 DevOps Guru for RDS

    选择此开关以开启 DevOps Guru for RDS
  6. 选择标签值。有关更多信息,请参阅《Amazon DevOps Guru 用户指南》中的“使用标签识别 DevOps Guru 应用程序中的资源”。

    在 Amazon RDS 控制台中开启 DevOps Guru
  7. 选择 Turn on DevOps Guru(开启 DevOps Guru)。

在 DevOps Guru 控制台中添加 RDS for PostgreSQL 资源

您可以在 DevOps Guru 控制台上指定 DevOps Guru 资源覆盖范围。按照《Amazon DevOps Guru 用户指南》中的指定 DevOps Guru 资源覆盖范围中描述的步骤操作。编辑所分析的资源时,请选择以下选项之一:

有关更多信息,请参阅《Amazon DevOps Guru 用户指南》中的启用 DevOps Guru

使用 AWS CloudFormation 添加 RDS for PostgreSQL 资源

可以使用标签向您的 CloudFormation 模板添加 RDS for PostgreSQL 资源的覆盖范围。以下过程假设您具有同时适用于 RDS for PostgreSQL 数据库实例和 DevOps Guru 堆栈的 CloudFormation 模板。

使用 CloudFormation 标签指定 RDS for PostgreSQL 数据库实例
  1. 在数据库实例的 CloudFormation 模板中,使用键/值对定义标签。

    以下示例将 RDS for PostgreSQL 数据库实例的值 my-db-instance1 分配给 Devops-guru-cfn-default

    MyDBInstance1: Type: "AWS::RDS::DBInstance" Properties: DBInstanceIdentifier: my-db-instance1 Tags: - Key: Devops-guru-cfn-default Value: devopsguru-my-db-instance1
  2. 在 DevOps Guru 堆栈的 CloudFormation 模板中,在资源收集筛选条件中指定相同的标签。

    以下示例将 DevOps Guru 配置为使用标签值 my-db-instance1 为资源提供覆盖范围。

    DevOpsGuruResourceCollection: Type: AWS::DevOpsGuru::ResourceCollection Properties: ResourceCollectionFilter: Tags: - AppBoundaryKey: "Devops-guru-cfn-default" TagValues: - "devopsguru-my-db-instance1"

    以下示例涵盖了应用程序边界 Devops-guru-cfn-default 内的所有资源。

    DevOpsGuruResourceCollection: Type: AWS::DevOpsGuru::ResourceCollection Properties: ResourceCollectionFilter: Tags: - AppBoundaryKey: "Devops-guru-cfn-default" TagValues: - "*"

有关更多信息,请参阅《AWS CloudFormation 用户指南》中的 AWS::DevOpsGuru::ResourceCollectionAWS::RDS::DBInstance