亚马逊AWS官方博客

Amazon Managed Service for Prometheus 现已全面推出并具备警报管理器和规则器

在 AWS Re: Invent 2020 上,我们推出了 Amazon Managed Service for Prometheus的预览版,这是一项与 Prometheus 兼容的开源监控服务,可以轻松地大规模监控容器化应用程序。借助 Amazon Managed Service for Prometheus,您可以使用 Prometheus 查询语言 (PromQL) 监控容器化工作负载的性能,而无需管理扩展与保护摄取、存储、警报和查询操作指标所需的底层基础设施。

Amazon Managed Service for Prometheus 会随着监控需求的增长而自动扩展。这是一项跨多个可用区 (AZ) 部署的高可用性服务,集成了 AWS 安全性和合规性功能。该服务为 ProMQL 提供原生支持,并能够从开源社区维护的 150 多家 Prometheus 出口商那里提取 Prometheus 指标。

借助 Amazon Managed Service for Prometheus,您可以使用 AWS Distro for OpenTelemetry (ADOT) 或 Prometheus 服务器作为收集代理,从 Amazon Elastic Compute Cloud (Amazon EC2)Amazon Elastic Container Service (Amazon ECS)Amazon Elastic Kubernetes Service (Amazon EKS) 环境中收集 Prometheus 指标。

在预览期间,我们为开源 Cortex 项目贡献了高可用性警报管理器,该项目为 Prometheus 提供了水平可扩展、高度可用、多租户的长期存储。此外,我们将已摄取指标样本的价格降低多达 84%,并支持由 ADOT 收集 AWS Lambda 应用程序的指标。

今天,我很高兴地宣布,Amazon Managed Service for Prometheus 全面推出,它具有警报管理器和规则器等新功能,支持将 Amazon Simple Notification Service (Amazon SNS) 作为来自警报管理器的通知的接收器目标。您可以将电子邮件、webhook、Slack、PagerDuty、OpsGenie 或 VictorOps 等目标集成到 Amazon SNS 中。

警报管理器和规则器入门
要开始使用 AWS 管理控制台,您只需创建一个工作区,即专用于存储、警报和查询来自一台或多台 Prometheus 服务器的指标的逻辑空间。您可以使用 Helm 设置将 Prometheus 指标摄入此工作区并查询这些指标。要了解更多信息,请参阅 Amazon Managed Service for Prometheus 用户指南中的入门

在全面推出时,我们添加了新的警报管理器和规则管理功能。该服务支持两种类型的规则:记录规则警报规则。这些规则文件与独立的 Prometheus 的 YAML 格式相同,可以定期对其进行配置和评估。

要使用一组规则配置工作区,请在规则管理中选择添加命名空间,然后选择 YAML 格式的规则文件。

示例规则文件将记录容器工作负载中的 CPU 使用率指标,并在 CPU 持续高使用率达 5 分钟时触发警报。

接下来,您可以创建新的 Amazon SNS 主题或重复使用现有的 SNS 主题,它将在其中发送警报。警报管理器将警报路由到 SNS,而 SNS 将警报路由到下游位置。配置的警报规则将向警报管理器激活警报,警报管理器通过 SNS 接收器删除重复数据、分组警报并将其路由到 Amazon SNS。如果您想接收警报的电子邮件通知,请为拥有的 SNS 主题配置电子邮件订阅。

要授予 Amazon Managed Service for Prometheus 向您的 SNS 主题发送消息的权限,请选择计划发送消息的主题,然后添加访问策略数据块:

{
    "Sid": "Allow_Publish_Alarms",
    "Effect": "Allow",
    "Principal": {
        "Service": "aps.amazonaws.com"
    },
    "Action": [
        "sns:Publish",
        "sns:GetTopicAttributes"
    ],
    "Resource": "arn:aws:sns:us-east-1:123456789012:Notifyme"
}

如果您有获取警报的主题,则可以在警报管理器配置中配置此 SNS 接收器。示例配置文件的格式与 Prometheus 相同,但您必须在 alertmanager_config: 数据块下方为服务的警报管理器提供配置。有关警报管理器配置的更多信息,请访问 Prometheus 指南中的警报配置

alertmanager_config:
  route:
    receiver: default
    repeat_interval: 5m
  receivers:
    name: default
    sns_configs:
      topic_arn: "arn:aws:sns:us-east-1:123456789012:Notifyme"
      sigv4:
        region: us-west-2
      attributes:
        key: severity
        value: "warning"

您可以替换在设置 SNS 连接时所创建主题的 topic_arn。要在警报管理器配置中了解有关 SNS 接收器的更多信息,请访问 Prometheus Github 页面上的 Prometheus SNS 接收器

要配置警报管理器,请打开警报管理器并选择添加定义,然后选择 YAML 格式的警报配置文件。

当 Prometheus 创建警报并将其发送到警报管理器时,可以通过点击 ListAlerts 端点查看系统中的所有活动警报来查询该警报。点击端点后,您可以在主动触发警报的列表中看到警报。

$ curl https://aps-workspaces.us-east-1.amazonaws.com/workspaces/ws-0123456/alertmanager/api/v2/alerts
GET /workspaces/ws-0123456/alertmanager/api/v2/alerts HTTP/1.1
Host: aps-workspaces.us-east-1.amazonaws.com
X-Amz-Date: 20210628T171924Z
...
[
    "receivers": [
      {
        "name": "default"
      }
    ],
    "startsAt": "2021-09-24T01:37:42.393Z",
    "updatedAt": "2021-09-24T01:37:42.393Z",
    "endsAt": "2021-09-24T01:37:42.393Z",
    "status": {
      "state": "unprocessed",
    },
    "labels": {
      "severity": "warning"
    }
  }
]

成功的通知将导致收到来自您的 SNS 主题的电子邮件,其中包含警报详细信息。此外,您还可以输出 JSON 格式的消息,以便 AWS Lambda 或其他 API 和 webhook 接收端点在 SNS 下游轻松处理。例如,您可以将 SNS 与 Lambda 函数连接起来,以进行消息转换或触发自动化。要了解更多信息,请访问 Amazon Managed Service for Prometheus 用户指南中的配置警报管理器以将 JSON 输出到 SNS

从 Amazon SNS 发送到其他通知目标
您可以将 Amazon SNS 连接到各种出站目标,例如电子邮件、webhook (HTTP)、Slack、PageDuty 和 OpsGenie。

  • Webhook – 要配置先前存在的 SNS 主题以将消息输出到 webhook 端点,请首先创建现有主题的订阅。激活后,您的 HTTP 端点应该会收到 SNS 通知。
  • Slack – 您可以集成 Slack 的电子邮件到频道集成,其中 Slack 可以接受电子邮件并将其转发到 Slack 频道,也可以使用 Lambda 函数将 SNS 通知重写到 Slack。要了解更多信息,请参阅将电子邮件转发到 Slack 频道将 SNS 消息转换为 Slack 的 AWS Lambda 函数
  • PagerDuty – 要自定义发送到 PagerDuty 的负载,请通过调整或更新警报管理器定义中的 template_files 数据块来自定义用于生成发送到 SNS 的消息的模板。

现已发布
Amazon Managed Service for Prometheus 现已在 9 个 AWS 区域推出:美国东部 (弗吉尼亚北部)、美国东部 (俄亥俄)、美国西部 (俄勒冈)、欧洲 (法兰克福)、欧洲 (爱尔兰)、欧洲 (斯德哥尔摩)、亚太地区 (新加坡)、亚太地区 (悉尼) 和亚太地区 (东京)。

根据摄取、查询和存储的指标,您只需为使用量付费。作为 AWS 免费套餐的一部分,您可以开始使用 Amazon Managed Service for Prometheus,每月可以摄取 4000 万个指标样本并存储 10 GB 指标。如需了解更多信息,请访问定价页面

如果您想了解 AWS 上的 AWS 可观察性,请访问 One Observability Workshop,该研讨会为您提供了 AWS 提供的各种工具集的实践经验,用于在应用程序上设置监控和可观察性。

请将反馈发送到 Amazon Managed Service for Prometheus 的 AWS 论坛,或通过您常用的 AWS Support 联系人发送反馈。

Channy