在 Amazon Managed Service for Prometheus 中管理查询成本 - Amazon Managed Service for Prometheus

在 Amazon Managed Service for Prometheus 中管理查询成本

Amazon Managed Service for Prometheus 通过限制单个查询可以使用的已处理的查询样本(QSP)数量,来限制查询成本。您可以为 QSP 配置两种类型的阈值,即警告错误,以协助有效地管理和控制查询成本。

当查询达到警告阈值时,API 查询响应中会显示一条警告消息。对于通过 Amazon Managed Grafana 查看的查询,该警告将在 Amazon Managed Grafana UI 中显示,有助于用户识别代价高昂的查询。达到错误阈值的查询不需要付费,并且会因错误而被拒绝。

除了查询节流外,Amazon Managed Service for Prometheus 还提供将查询性能数据记录到 CloudWatch Logs 的功能。此功能支持您详细分析查询,有助于您优化 Amazon Managed Service for Prometheus 查询并更有效地管理成本。查询日志记录捕获有关超出指定的已处理查询样本(QSP)数阈值的查询的信息。然后,这些数据将发布到 CloudWatch Logs,使您能够调查和分析查询性能。记录的查询包括 API 查询和规则查询。默认情况下,查询日志记录处于禁用状态,以最大限度地减少不必要的 CloudWatch Logs 使用量。当查询分析需要时,您可以启用此功能。

配置查询日志记录

您可以在 Amazon Managed Service for Prometheus 控制台中配置查询日志记录,也可以在 AWS CLI 中通过调用 create-query-logging-configuration API 请求来进行配置。此 API 正文包含目标列表,但目前,我们仅支持 CloudWatch Logs 作为目标,而目标应正好包含一个采用 CloudWatch 配置的元素。

先决条件

确保已创建了 logGroup。用于进行配置的 ID 或角色应具有以下策略或等效的权限。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogDelivery", "logs:GetLogDelivery", "logs:UpdateLogDelivery", "logs:DeleteLogDelivery", "logs:ListLogDeliveries", "logs:PutResourcePolicy", "logs:DescribeResourcePolicies", "logs:DescribeLogGroups", "aps:CreateQueryLoggingConfiguration", "aps:UpdateQueryLoggingConfiguration", "aps:DescribeQueryLoggingConfiguration", "aps:DeleteQueryLoggingConfiguration" ], "Resource": "*" } ] }

配置 CloudWatch Logs

您可以使用 AWS 管理控制台或 AWS CLI 登录 Amazon Managed Service for Prometheus 来配置 CloudWatch Logs。

使用 Amazon Managed Service for Prometheus 控制台配置查询日志记录
  1. 导航到工作区详细信息面板中的日志选项卡。

  2. 查询洞察下,选择创建

  3. 选择日志组下拉列表并选择要发布日志的日志组。

    还可以在 CloudWatch 控制台中创建新的日志组。

  4. 输入阈值(QSP)

  5. 选择保存

要使用 AWS CLI 配置查询日志记录,请使用命令

aws amp create-query-logging-configuration \ --workspace-id my_workspace_ID \ --destinations '[{"cloudWatchLogs":{"logGroupArn":"$my-log-group-arn"},"filters":{"qspThreshold":$qspThreshold}}]'

有关如何更新、删除和描述操作的信息,请参阅 Amazon Managed Service for Prometheus API 参考

配置查询节流阈值

要配置 QSP 阈值,必须在 QueryMetrics API 中提供查询参数。

  • max_samples_processed_warning_threshold:为已处理的查询样本设置警告阈值

  • max_samples_processed_error_threshold:为已处理的查询样本设置错误阈值

对于 Amazon Managed Grafana 用户,您可以使用 grafana 数据来源配置对来自该数据来源的所有查询应用限制:

  1. 在 Amazon Managed Grafana 中浏览到 Amazon Managed Service for Prometheus 数据来源配置。

  2. 自定义查询参数下,添加阈值标头。

  3. 选择保存

日志内容

对于源自规则的查询,您将在 CloudWatch Logs 中看到有关该查询的以下信息:

{ workspaceId: "workspace_id", message: { query: "avg(rate(go_goroutines[1m])) > 1", name: "alert_rule", kind: "alerting", group: "test-alert", namespace: "test", samples: "59321", }, component: "ruler" }

对于源自 API 调用的查询,您将在 CloudWatch Logs 中看到有关该查询的以下信息:

{ workspaceId: "ws-5e7658c2-7ccf-4c30-9de9-2ab26fa30639", message: { query: "sum by (instance) (go_memstats_alloc_bytes{job=\"node\"})", queryType: "range", start: "1683308700000", end: "1683913500000", step: "300000", samples: "11496", userAgent: "AWSPrometheusDPJavaClient/2.0.436.0 ", dashboardUid: "11234", panelId: "12" }, component: "query-frontend" }

限制

策略大小限制:CloudWatch Logs 资源策略限制为 5120 个字符。当 CloudWatch Logs 检测到策略正在接近大小限制时,它会自动启用以 /aws/vendedlogs/ 开头的日志组。启用查询日志记录时,Amazon Managed Service for Prometheus 必须使用您指定的日志组更新 CloudWatch Logs 资源策略。为避免达到 CloudWatch Logs 资源策略大小限制,请在 CloudWatch Logs 日志组名称前加上 /aws/vendedlogs/ 前缀。