使用 Amazon Redshift 无服务器监控查询和工作负载 - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

使用 Amazon Redshift 无服务器监控查询和工作负载

您可使用提供的系统视图监控无服务器端点查询和工作负载。

授予监控查询的访问权限

超级用户可以向不是超级用户的用户提供访问权限,以便他们可以对所有用户执行查询监控。首先,您可以为用户或角色添加策略以提供查询监控访问权限。然后,您可以授予用户或角色查询监控权限。

添加查询监控策略

  1. 选择 https://console.aws.amazon.com/iam/

  2. Access management (访问管理) 下,选择 Policies (策略)

  3. 选择 Create Policy (创建策略)

  4. 选择 JSON,然后粘贴以下策略定义。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "redshift-data:ExecuteStatement", "redshift-data:DescribeStatement", "redshift-data:GetStatementResult", "redshift-data:ListDatabases" ], "Resource": "*" }, { "Effect": "Allow", "Action": "redshift-serverless:GetCredentials", "Resource": "*" } ] }

    如果出现以下错误消息,请忽略它。

    Invalid Service In Action: The service redshift-serverless:* specified in the action does not exist.
  5. 选择 Review policy (审核策略)

  6. 对于 Name (名称),输入策略的名称,如 query-monitoring

  7. 选择 Create policy (创建策略)

  8. Policies(策略)下,选择您创建的策略。

  9. Actions(操作)下,选择 Attach(附加)。

  10. 选择要附加该策略的用户或角色,然后选择 Attach policy(附加策略)。

授予用户查询监控权限

具有 sys:monitor 权限的用户可以查看所有查询。此外,具有 sys:operator 权限的用户可以取消查询、分析查询历史记录和执行 vacuum 操作。

  1. 输入以下命令以提供系统监控访问权限,其中 user-name 是您想要为其提供访问权限的用户的名称。

    grant "sys:monitor" to "IAM:user-name";
  2. (可选)输入以下命令以提供系统操作员访问权限,其中 user name 是您想要为其提供访问权限的用户的名称。

    grant "sys:operator" to "IAM:user-name";

授予角色查询监控权限

具有 sys:monitor 权限的角色的用户可以查看所有查询。此外,具有 sys:operator 权限的角色的用户可以取消查询、分析查询历史记录和执行 vacuum 操作。

  1. 输入以下命令以提供系统监控访问权限,其中 role-name 是您想要为其提供访问权限的角色的名称。

    grant "sys:monitor" to "IAMR:role-name";
  2. (可选)输入以下命令以提供系统操作员访问权限,其中 role-name 是您想要为其提供访问权限的角色的名称。

    grant "sys:operator" to "IAMR:role-name";

监控视图

Monitoring views(监控视图)是 Amazon Redshift 无服务器中用于监控查询和工作负载使用情况的系统视图。这些视图位于 pg_catalog 架构中。可用的系统视图旨在为您提供监控无服务器端点所需的信息,这比预置集群所需的信息简单。SYS 系统视图旨在与无服务器端点配合使用。要显示这些视图提供的信息,请运行 SQL SELECT 语句。

系统视图的定义是为了支持以下监控目标。

工作负载监控

您可以随时间推移监控查询活动,以便:

  • 了解工作负载模式,这样您就可以了解正常运行状况(基准)以及业务服务级别协议(SLA)中的内容。

  • 快速识别偏离正常运行的状况,这可能是个暂时性问题,或是需要采取进一步操作的问题。

数据传入和传出监控

进出无服务器端点的数据移动是一项关键函数。您可以使用 COPY 和 UNLOAD 来传入或传出数据,并且必须密切监控传输的字节/行数和文件的完成进度,以跟踪遵守业务 SLA 的情况。这通常是通过频繁运行系统表查询(即每分钟)来完成,以便跟踪进度,并在检测到重大偏差时发出调查/纠正操作的提示。

故障和问题诊断

某些情况下,必须对查询或运行时故障采取措施。开发人员依靠系统表自行诊断问题,并确定正确的纠正补救措施。

性能优化

您可能需要优化从一开始就不符合 SLA 要求的查询或随时间推移而降级的查询。要进行优化,您需要获得运行时详细信息,包括运行计划、统计数据、持续时间和资源消耗。您需要用于违规查询的基准数据,以确定偏差的原因并指导您如何改进。

用户对象事件监控

您需要监控用户对象上的操作和活动,例如刷新具体化视图、vacuum 和分析。这包括系统管理的事件,例如具体化视图的自动刷新。如果事件是用户启动的,您想监控事件结束时间,或者如果是系统启动的,则监控最后一次成功执行。

计费的使用情况跟踪

您可以随时间转移监控您的使用情况趋势,以便:

  • 告知预算计划和业务扩展估计值。

  • 确定潜在的成本节约机会,例如删除冷数据。

您无法使用 Amazon Redshift 无服务器查询 STL、STV、SVCS、SVL 以及某些 SVV 系统表和视图,但以下情况除外:

您可以查询以下 SYS 系统视图,以监控无服务器端点。