在 Amazon Redshift 无服务器中配置监控、限制和警报,以保持成本的可预测性
在这篇文章中,我们将分享如何通过三种方法监控在 Redshift 无服务器上运行的工作负载:Redshift 无服务器控制台、Amazon CloudWatch 和系统视
方法 1:通过 Redshift 无服务器控制台进行监控
您可以通过 Redshift 无服务器控制台查看所有用户查询,包括数据操作语言 (DML) 语句、数据定义语言 (DDL) 语句和数据控制语言 (DCL)。您还可以在单个页面上查看运行这些工作负载所需的 RPU 消耗。您还可以根据时间、数据库、用户和查询类型应用筛选器。
监控访问权限的先决条件
默认情况下,超级用户有权监控所有工作负载和资源消耗。如果其他用户需要通过 Redshift Serverless 控制台监控访问权限,则超级用户可以通过执行以下步骤来提供必要的访问权限:
- 创建具有必要权限的策略,并将此策略分配给所需的用户或角色。
- 向用户或角色授予查询监控权限。
有关更多信息,请参阅
查询监控
在本节中,我们将介绍 Redshift Serverless 控制台,查看查询历史记录、数据库性能和资源使用情况。我们还将介绍监控选项以及如何设置过滤器以使用过滤器属性缩小结果范围。
- 在 Redshift Serverless 控制台上, 在导航窗格的 监控 下,选择 查询和数据库 监控。
- 打开要监视的工作组。
- 在 指标筛选器 部分,展开 其他筛选选项 。
- 您可以为时间范围、聚合时间间隔、数据库、查询类别、SQL 和用户设置过滤器。
有两个选项卡可用:“ 查询历史记录 ” 和 “ 数据库性能 ” 。使用 查询历史 选项卡获取每个查询级别的详细信息,使用 数据库性能 选项卡查看跨查询汇总的性能。这两个选项卡都是根据您所做的选择进行筛选的。
在 “ 查询历史记录 ” 下 ,您将看到 查询运行时 图。使用此图表来研究查询并发性(在相同时间段内运行的查询)。您可以选择查询来查看更多查询运行详细信息,例如,运行时间比预期更长的查询。
在 查询和加载 部分中,默认情况下您可以查看所有查询,但也可以按状态筛选以查看已完成、正在运行和失败的查询。
导航到 “ 查询和 数据库监控” 部分中的 “数据库 性能 ” 选项卡,查看以下内容:
- 每秒完成的查询 -每秒完成的平均查询数
- 查询时长 -完成查询的平均时间
- 数据库连接 -活跃的数据库连接数
- 正在运行的查询和排队查询 -资源监控中正在运行的查询和排队查询的总数
要监控您的资源,请完成以下步骤:
- 在 Redshift 无服务器控制台上,选择导航窗格 中 监控 下的 资源 监控。
默认情况下将选择默认工作组,但您可以选择要监控的工作组。
- 在 指标筛选器 部分,展开 其他筛选选项 。
- 选择 1 分钟的时间间隔(例如)并查看结果。
你也可以尝试不同的范围来查看结果。
在 RPU 已用容量 图表上,您可以看到 Redshift Serverless 如何在几分钟内扩展 RPU。这可以直观地呈现您在所选时间段内的消耗量峰值和低点。
您还可以看到您运行的工作负载的实际计算使用量(以 RPU 秒为单位)。
方法 2:监控 CloudWatch 中的指标
Redshift 无服务器向 CloudWatch 发布无服务器端点性能指标。
- 在 CloudWatch 控制台上, 在导航窗格的 指标 下,选择 所有指标 。
- 在 “ 浏览 ” 选项卡上,选择 亚马逊云科技/Redshift-Serverless 以获取 Redshift 无服务器 使用情况的指标集。
- 选择 工作组查看 与工作组 相关的指标。
从列表中,您可以检查您的特定工作组和可用指标(在本示例中为 computeSeconds 和
您应该会看到图表已更新并绘制了数据图表。 ComputeCapacity
)。
- 要命名图形,请选择图表标题旁边的铅笔图标并输入图表名称(例如,
dataanalytics-serverles
s ),然后选择应用。
- 在 “ 浏览 ” 选项卡上,选择 亚马逊云科技/redshift-Serverles s,这次选择命名空间。
- 选择要监控的命名空间和感兴趣的指标。
您可以向图表中添加其他指标。要集中监控,您可以将这些指标添加到现有的
- 在 “ 操作 ” 菜单上,选择 “ 添加到控制面板 ” 。
方法 3:使用系统视图进行精细监控
Redshift Serverless 中的@@
SQL 笔记本
你可以下载 包含最常用系统视图查询的
- 如何根据状态监控查询?
- 如何监控特定的查询耗时细分详情?
- 如何按查询数量和百分位运行时间监控工作负载明细?
- 如何监控查询执行中涉及的详细步骤?
- 如何按天监控 Redshift 无服务器使用成本?
- 如何监控数据加载(复制命令)?
- 如何监控会话数量和连接?
您可以在
设定限制以控制成本
创建无服务器端点时,基本容量默认为 128 个 RPU。但是,你可以在创建时或稍后通过 Redshift 无服务器控制台对其进行更改。
- 在无服务器工作组的详细信息页面上,选择 限制 选项卡。
- 在 基本容量 部分中,选择 编辑 。
- 您可以指定介于 8—512 个 RPU 之间的 基本容 量,增量为 8。
每个 RPU 提供 16 GB 内存,因此最低基数 8 的 RPU 使用 128 GB 的内存进行计算,最高的基数 512 RPU 使用 8 TB 的内存进行计算。
使用限制
要配置使用容量限制以限制您的总体 Redshift 无服务器账单,请完成以下步骤:
- 在 使用限制 部分中,选择 管理使用限制 。
- 要控制 RPU 使用量,请按频率设置最大 RPU 小时数。您可以将 “ 频率 ” 设置为 “每 日 ” 、“ 每周 ” 和 “每 月 ” 。
- 在 使用限制(RPU 小时数) 中 ,输入您的首选值。
- 对于 “ 操作 ” ,选择 “ 警报 ” 、“ 登录到系统表 ” 或 “ 关闭用户查询 ” 。
或者,您可以选择现有的
查询 Redshift 无服务器监控规则
为了防止因重写不当的查询而造成资源浪费和成本失控,您可以通过对 Redshift Serverless 工作组的查询限制来实施查询监控规则。有关更多信息,请参阅
要设置查询限制,请完成以下步骤:
- 在 Redshift 无服务器控制台上, 在导航窗格中选择 工作组配置 。
- 选择要监控的工作组。
- 在工作组详细信息页面的 查询监控规则 下 ,选择 管理查询限制 。
您最多可以向每个无服务器工作组添加 10 条查询监控规则。
每次您添加或删除限制时,无服务器工作组都将进入 修改 状态。
让我们举一个例子,你必须为仪表板创建一个无服务器工作组。您知道仪表板查询通常会在不到一分钟的时间内完成。如果任何仪表板查询花费的时间超过一分钟,则可能表示查询写得不好,或者查询没有经过很好的测试,并且已被错误地发布到生产环境中。
对于这个用例,我们将 限制类型 设置 为 查询执行时间 , 限制(秒) 设置 为60的规则。
以下屏幕截图显示了可用于设置查询监控规则的 Redshift 无服务器指标。
配置警报
警报非常有用,因为它们使您能够对 Redshift 无服务器端点做出主动决策。您设置的任何使用限制都会在 Redshift 无服务器控制台上自动显示为警报,并以 CloudWatch 警报的形式创建。
此外,您可以针对
例如,将 DataStorage 的警报设置为超过阈值将跟踪您的无服务器命名空间用于存储数据的存储空间。
要为您的 Redshift 无服务器实例创建警报,请完成以下步骤:
- 在 Redshift 无服务器控制台上, 在导航窗格的 监控 下,选择 警报。
- 选择 “ 创建警报 ” 。
- 选择要监控的指标级别:
- 工作组
- 命名空间 快照存
- 储
如果我们选择 工作组 ,则可以从以下屏幕截图中显示的工作组级别指标中进行选择。
以下屏幕截图显示了我们如何在命名空间级别设置警报以及可供使用的各种指标。
以下屏幕截图显示了快照存储级别上可用的指标。
如果你是从头开始,那么请从下面列出的最常用指标开始。另请
- 计算秒
- 计算容量
- 数据库连接
- 预计费用
- 数据存储
- 查询失败
通知
定义警报后,提供名称和描述,然后选择启用通知。
亚马逊 Redshift 使用 SNS 主题发送警报通知。有关创建 SNS 主题的说明,请参阅
您还可以监控事件通知,以了解您的 Redshift 无服务器数据仓库中的变化。有关更多详情,请参阅
清理
要清理资源,请删除您在尝试本文中讨论的监控方法时使用的工作组和命名空间。
结论
在这篇文章中,我们介绍了如何通过Redshift无服务器控制台、系统视图和CloudWatch在Redshift无服务器上执行监控活动,以及如何保持成本的可预测性。尝试本文中讨论的监控方法,并在评论中告诉我们您的反馈。
作者简介
Satesh Sonti 是一位来自亚特兰大的高级分析专家解决方案架构师,专门构建企业数据平台、数据仓库和分析解决方案。他在为全球银行和保险客户构建数据资产和领导复杂数据平台项目方面拥有超过17年的经验。
Harshida Patel 是 亚马逊云科技 的专业首席解决方案架构师,负责分析。
Raghu Kuppala 是一位分析专家解决方案架构师,在数据库、数据仓库和分析领域工作经验丰富。工作之余,他喜欢尝试不同的美食,也喜欢与家人和朋友共度时光。
阿什什·阿格劳瓦尔 是亚马逊 Redshift 的高级技术产品经理,负责构建基于云的数据仓库和分析云服务。Ashish 在 IT 领域拥有超过 24 年的经验。Ashish 在数据仓库、数据湖和平台即服务方面拥有专业知识。Ashish 曾在全球技术会议上发表演讲。