Amazon Managed Service for Prometheus
完全兼容 Prometheus 的全托管监控服务,为容器工作负载提供可扩展的指标收集、存储和查询
概述
Amazon Managed Service for Prometheus(AMP)是一项完全兼容开源 Prometheus 的全托管监控服务。通过 Prometheus remote write API 摄入指标,支持 PromQL 查询。收集 EKS、ECS 和 EC2 上工作负载的指标并存储在自动扩展的存储中。消除了自管理 Prometheus 的存储容量管理、高可用性和长期保留等问题,大幅降低运维负担。结合 Amazon Managed Grafana 可构建从指标收集到可视化的完整可观测性栈。跨多个可用区冗余,提供 99.9% 可用性 SLA。
工作区设计与指标摄入
AMP 工作区是指标的逻辑隔离单元。建议按环境(dev/stg/prod)或团队分离工作区,实现清晰的访问控制和成本分配。指标摄入使用 Prometheus remote write API,从现有 Prometheus 服务器、OpenTelemetry Collector 或 AWS Distro for OpenTelemetry(ADOT)发送。EKS 环境中,常见做法是将 ADOT Collector 作为 DaemonSet 部署,从各节点收集 Pod 指标并发送到 AMP。认证使用 AWS SigV4 签名,通过 IAM 角色实现细粒度访问控制。EKS 中使用 IRSA(IAM Roles for Service Accounts)在 Pod 级别授予写入权限。默认摄入速率限制为每秒 70,000 个样本,可通过 Service Quotas 请求增加。高基数指标(大量标签组合)影响成本和性能,设计 relabel 规则排除不必要的标签很重要。
PromQL 查询与告警规则配置
AMP 完全支持 PromQL,可使用与自管理 Prometheus 相同的查询语法分析指标。查询端点也受 AWS SigV4 认证保护,从 Grafana 连接时使用 SigV4 插件。告警规则和记录规则作为规则组在工作区中配置,使用与 Prometheus 规则 YAML 文件相同的语法编写。可指定 Amazon SNS 作为告警目标,通过 SNS 集成到 Lambda、PagerDuty 和 Slack。记录规则预计算并存储常用的复杂查询,提高仪表板显示速度。例如预计算所有 Pod 的 5 分钟平均 CPU 利用率,显示仪表板时无需实时计算。实践中,将 SLI(服务级别指标)计算定义为记录规则,用告警规则监控 SLO(服务级别目标)达成情况是有效的设计。
成本优化与多账户运维
AMP 定价由摄入样本数、存储样本数和查询样本数三个维度组成。成本优化的第一步是抑制不必要的指标摄入。Prometheus relabel 规则(metric_relabel_configs)丢弃未使用的指标并排除高基数标签。默认保留期为 150 天,如果只需要短期指标,缩短工作区保留期可降低存储成本。多账户环境中,常见做法是将各账户 EKS 集群的指标汇聚到中央监控账户的 AMP 工作区。跨账户写入需要配置从各账户到监控账户 IAM 角色的 AssumeRole。Organizations SCP 控制对监控账户的写入权限,防止未授权的指标提交。Grafana 仪表板可注册多个工作区作为数据源,实现跨环境指标比较。