在 Amazon Redshift 无服务器中配置监控、限制和警报,以保持成本的可预测性

Amazon Redshift 无服务器 使在几秒钟内即可轻松运行和扩展分析。它可以自动预置和智能地扩展数据仓库的计算容量以提供快速的性能,而且您只需为实际使用量付费。只需加载数据并立即在 Amazon Redshift 查询编辑器 或您最喜欢的商业智能 (BI) 工具中开始查询。Redshift 无服务器以红移处理单元 (RPU) 测量数据仓库容量,您可以在 8—512 之间配置基本 RPU。您可以从首选 RPU 容量或默认容量开始,然后随时进行调整。

在这篇文章中,我们将分享如何通过三种方法监控在 Redshift 无服务器上运行的工作负载:Redshift 无服务器控制台、Amazon CloudWatch 和系统视 。 我们还将介绍如何通过 Redshift Serverless 的警报和限制设置防护栏,以保持成本的可预测性。

方法 1:通过 Redshift 无服务器控制台进行监控

您可以通过 Redshift 无服务器控制台查看所有用户查询,包括数据操作语言 (DML) 语句、数据定义语言 (DDL) 语句和数据控制语言 (DCL)。您还可以在单个页面上查看运行这些工作负载所需的 RPU 消耗。您还可以根据时间、数据库、用户和查询类型应用筛选器。

监控访问权限的先决条件

默认情况下,超级用户有权监控所有工作负载和资源消耗。如果其他用户需要通过 Redshift Serverless 控制台监控访问权限,则超级用户可以通过执行以下步骤来提供必要的访问权限:

  1. 创建具有必要权限的策略,并将此策略分配给所需的用户或角色。
  2. 向用户或角色授予查询监控权限。

有关更多信息,请参阅 授予监控查询访问权限

查询监控

在本节中,我们将介绍 Redshift Serverless 控制台,查看查询历史记录、数据库性能和资源使用情况。我们还将介绍监控选项以及如何设置过滤器以使用过滤器属性缩小结果范围。

  1. 在 Redshift Serverless 控制台上, 在导航窗格的 监控 下,选择 查询和数据库 监控。
  2. 打开要监视的工作组。
  3. 指标筛选器 部分,展开 其他筛选选项
  4. 您可以为时间范围、聚合时间间隔、数据库、查询类别、SQL 和用户设置过滤器。

Query and database monitoring

有两个选项卡可用:“ 查询历史记录 ” 和 “ 数据库性能 ” 。使用 查询历史 选项卡获取每个查询级别的详细信息,使用 数据库性能 选项卡查看跨查询汇总的性能。这两个选项卡都是根据您所做的选择进行筛选的。

在 “ 查询历史记录 ” 下 ,您将看到 查询运行时 图。使用此图表来研究查询并发性(在相同时间段内运行的查询)。您可以选择查询来查看更多查询运行详细信息,例如,运行时间比预期更长的查询。

Query runtime monitoring dashbaord

查询和加载 部分中,默认情况下您可以查看所有查询,但也可以按状态筛选以查看已完成、正在运行和失败的查询。

Query history screen

导航到 “ 查询和 数据库监控” 部分中的 “数据库 性能 ” 选项卡,查看以下内容:

  • 每秒完成的查询 -每秒完成的平均查询数
  • 查询时长 -完成查询的平均时间
  • 数据库连接 -活跃的数据库连接数
  • 正在运行的查询和排队查询 -资源监控中正在运行的查询和排队查询的总数

要监控您的资源,请完成以下步骤:

  1. 在 Redshift 无服务器控制台上,选择导航窗格 中 监控 下的 资源 监控。

默认情况下将选择默认工作组,但您可以选择要监控的工作组。

  1. 指标筛选器 部分,展开 其他筛选选项
  2. 选择 1 分钟的时间间隔(例如)并查看结果。

你也可以尝试不同的范围来查看结果。

Screen to apply metric filters

RPU 已用容量 图表上,您可以看到 Redshift Serverless 如何在几分钟内扩展 RPU。这可以直观地呈现您在所选时间段内的消耗量峰值和低点。

RPU capacity consumption

您还可以看到您运行的工作负载的实际计算使用量(以 RPU 秒为单位)。
RPU Seconds consumed

方法 2:监控 CloudWatch 中的指标

Redshift 无服务器向 CloudWatch 发布无服务器端点性能指标。 亚马逊 Redshift CloudWatch 指标 是用于运营监控的数据点。这些指标使您能够监控无服务器工作组(计算)的性能和命名空间(数据)的使用情况。CloudWatch 允许您在一个 亚马逊云科技 账户中集中监控您的无服务器终端节点,也可以 跨账户和跨 区域集中监控您的无服务器终端节点。

  • 在 CloudWatch 控制台上, 在导航窗格的 指标 下,选择 所有指标
  • 在 “ 浏览 ” 选项卡上,选择 亚马逊云科技/Redshift-Serverless 以获取 Redshift 无服务器 使用情况的指标集。

Redshift Serverless in Amazon CloudWatch

  • 选择 工作组查看 与工作组 相关的指标。

Workgroups and Namespaces

从列表中,您可以检查您的特定工作组和可用指标(在本示例中为 computeSeconds 和 ComputeCapacity )。 您应该会看到图表已更新并绘制了数据图表。

Redshift Serverless Workgroup Metrics

  • 要命名图形,请选择图表标题旁边的铅笔图标并输入图表名称(例如, dataanalytics-serverles s ),然后选择应用。

Rename CloudWatch Graph

  • 在 “ 浏览 ” 选项卡上,选择 亚马逊云科技/redshift-Serverles s,这次选择命名空间。
  • 选择要监控的命名空间和感兴趣的指标。

Redshift Serverless Namespace Metrics

您可以向图表中添加其他指标。要集中监控,您可以将这些指标添加到现有的 CloudWatch 控制面板 或新的控制面板中。

  • 在 “ 操作 ” 菜单上,选择 “ 添加到控制面板 ” 。

Redshift Serverless Namespace Metrics

方法 3:使用系统视图进行精细监控

Redshift Serverless 中的@@ 系统视图 用于在一段时间内精细监控工作负载性能和 RPU 使用情况。这些查询监控系统视图已简化为包括对 DDL、DML、COPY 和 UNLOAD 查询的监控。有关系统视图及其用途的完整列表,请参阅 监控视图

SQL 笔记本

你可以下载 包含最常用系统视图查询的 SQL 笔记本 。这些查询有助于回答下面列出的最常见的监控问题。

  • 如何根据状态监控查询?
  • 如何监控特定的查询耗时细分详情?
  • 如何按查询数量和百分位运行时间监控工作负载明细?
  • 如何监控查询执行中涉及的详细步骤?
  • 如何按天监控 Redshift 无服务器使用成本?
  • 如何监控数据加载(复制命令)?
  • 如何监控会话数量和连接?

您可以在 查询编辑器 V2.0 中将其导入, 然后运行连接到要监控的 Redshift 无服务器工作组的查询。

设定限制以控制成本

创建无服务器端点时,基本容量默认为 128 个 RPU。但是,你可以在创建时或稍后通过 Redshift 无服务器控制台对其进行更改。

  1. 在无服务器工作组的详细信息页面上,选择 限制 选项卡。
  2. 基本容量 部分中,选择 编辑
  3. 您可以指定介于 8—512 个 RPU 之间的 基本容 量,增量为 8。

每个 RPU 提供 16 GB 内存,因此最低基数 8 的 RPU 使用 128 GB 的内存进行计算,最高的基数 512 RPU 使用 8 TB 的内存进行计算。

Edit base RPU capacity

使用限制

要配置使用容量限制以限制您的总体 Redshift 无服务器账单,请完成以下步骤:

  1. 使用限制 部分中,选择 管理使用限制
  2. 要控制 RPU 使用量,请按频率设置最大 RPU 小时数。您可以将 “ 频率 ” 设置为 “每 ” 、“ 每周 ” 和 “每 ” 。
  3. 使用限制(RPU 小时数) 中 ,输入您的首选值。
  4. 对于 “ 操作 ” ,选择 “ 警报 ” 、“ 登录到系统表 ” 或 “ 关闭用户查询 ” 。

Set RPU usage limit

或者,您可以选择现有的 亚马逊简单通知服务 (Amazon SNS) 主题或创建新的 SNS 主题,然后通过电子邮件订阅此 SNS 主题,以便在达到使用限制时收到通知。

查询 Redshift 无服务器监控规则

为了防止因重写不当的查询而造成资源浪费和成本失控,您可以通过对 Redshift Serverless 工作组的查询限制来实施查询监控规则。有关更多信息,请参阅 WLM 查询监控规则 。Redshift Serverless 中的查询监控规则会停止符合规则中设置的限制的查询。要在 Slack 上接收通知和自动通知,请参阅在 Slack 上 自动发送有关违反 Amazon Redshift 查询监控规则的 通知。

要设置查询限制,请完成以下步骤:

  1. 在 Redshift 无服务器控制台上, 在导航窗格中选择 工作组配置
  2. 选择要监控的工作组。
  3. 在工作组详细信息页面的 查询监控规则 下 ,选择 管理查询限制

您最多可以向每个无服务器工作组添加 10 条查询监控规则。

Set query limits

每次您添加或删除限制时,无服务器工作组都将进入 修改 状态。

让我们举一个例子,你必须为仪表板创建一个无服务器工作组。您知道仪表板查询通常会在不到一分钟的时间内完成。如果任何仪表板查询花费的时间超过一分钟,则可能表示查询写得不好,或者查询没有经过很好的测试,并且已被错误地发布到生产环境中。

对于这个用例,我们将 限制类型 设置 为 查询执行时间 限制(秒) 设置 为60的规则。

Set required limit

以下屏幕截图显示了可用于设置查询监控规则的 Redshift 无服务器指标。

Query Monitoring Metrics on CloudWatch

配置警报

警报非常有用,因为它们使您能够对 Redshift 无服务器端点做出主动决策。您设置的任何使用限制都会在 Redshift 无服务器控制台上自动显示为警报,并以 CloudWatch 警报的形式创建。

此外,您可以针对 亚马逊 Redsh ift 无服务器指标中列出的任何指标设置一个或多个 CloudWatch 警报。

例如,将 DataStorage 的警报设置为超过阈值将跟踪您的无服务器命名空间用于存储数据的存储空间。

要为您的 Redshift 无服务器实例创建警报,请完成以下步骤:

  1. 在 Redshift 无服务器控制台上, 在导航窗格的 监控 下,选择 警报。
  2. 选择 “ 创建警报 ” 。

Set Alarms from console

  1. 选择要监控的指标级别:
    • 工作组
    • 命名空间 快照存

如果我们选择 工作组 ,则可以从以下屏幕截图中显示的工作组级别指标中进行选择。

Workgroup Level Metrics

以下屏幕截图显示了我们如何在命名空间级别设置警报以及可供使用的各种指标。

Namespace Level Metrics

以下屏幕截图显示了快照存储级别上可用的指标。

Snapshot level metrics

如果你是从头开始,那么请从下面列出的最常用指标开始。另请 创建账单警报以监控您的预计 亚马逊云科技 费用

  • 计算秒
  • 计算容量
  • 数据库连接
  • 预计费用
  • 数据存储
  • 查询失败

通知

定义警报后,提供名称和描述,然后选择启用通知。

亚马逊 Redshift 使用 SNS 主题发送警报通知。有关创建 SNS 主题的说明,请参阅 创建 Amazon SNS 主题。 您必须订阅该主题才能接收向其发布的消息。有关说明,请参阅 订阅 Amazon SNS 主题

您还可以监控事件通知,以了解您的 Redshift 无服务器数据仓库中的变化。有关更多详情,请参阅 亚马逊 EventBridge 发送的亚马逊 Redshift 无服务器事件通知

清理

要清理资源,请删除您在尝试本文中讨论的监控方法时使用的工作组和命名空间。

Cleanup

结论

在这篇文章中,我们介绍了如何通过Redshift无服务器控制台、系统视图和CloudWatch在Redshift无服务器上执行监控活动,以及如何保持成本的可预测性。尝试本文中讨论的监控方法,并在评论中告诉我们您的反馈。


作者简介

Satesh Sonti 是一位来自亚特兰大的高级分析专家解决方案架构师,专门构建企业数据平台、数据仓库和分析解决方案。他在为全球银行和保险客户构建数据资产和领导复杂数据平台项目方面拥有超过17年的经验。

Harshida Patel 是 亚马逊云科技 的专业首席解决方案架构师,负责分析。

Raghu Kuppala 是一位分析专家解决方案架构师,在数据库、数据仓库和分析领域工作经验丰富。工作之余,他喜欢尝试不同的美食,也喜欢与家人和朋友共度时光。

阿什什·阿格劳瓦尔 是亚马逊 Redshift 的高级技术产品经理,负责构建基于云的数据仓库和分析云服务。Ashish 在 IT 领域拥有超过 24 年的经验。Ashish 在数据仓库、数据湖和平台即服务方面拥有专业知识。Ashish 曾在全球技术会议上发表演讲。


*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您发展海外业务和/或了解行业前沿技术选择推荐该服务。