Amazon CloudWatch 解决方案:Amazon EC2 上的 Prometheus 指标收集
此解决方案可帮助您从 Amazon EC2 实例收集与 Prometheus 兼容的指标,而无需运行或扩展您自己的收集基础设施。您在实例上运行一个或多个 Prometheus 导出程序,Amazon CloudWatch 托管式 Prometheus 收集器可发现 VPC 中的目标,抓取其 /metrics 端点,并将指标传输至 CloudWatch。有关所有 CloudWatch 可观测性解决方案的一般信息,请参阅 CloudWatch 可观测性解决方案。有关托管式收集器的更多信息,请参阅 Amazon CloudWatch 托管式 Prometheus 收集器。
要求
此解决方案适用于以下情况:
-
计算:运行一个或多个 Prometheus 导出程序的 Amazon EC2 实例。
-
已启用 DNS 的 Amazon VPC,以及至少两个位于不同可用区的子网,可供收集器使用。
-
允许收集器访问实例上导出程序端口的安全组。
启用 Prometheus 导出程序
Prometheus 导出程序是指在 HTTP /metrics 端点上以 Prometheus 展览格式公开指标的进程。运行与要监控的工作负载相匹配的导出程序。以下导出程序通常在 Amazon EC2 上使用:
-
Node Exporter:主机级基础设施指标,例如 CPU、内存、磁盘和网络(默认端口 9100)。有关更多信息,请参阅 GitHub 上的 Node Exporter
存储库。 -
JMX Exporter:用于 Java 工作负载的 JVM 和 Java 应用程序指标。有关更多信息,请参阅 GitHub 上的 JMX Exporter
存储库。 -
NGINX Prometheus Exporter:NGINX Web 服务器和反向代理指标。有关更多信息,请参阅 GitHub 上的 NGINX Prometheus Exporter
存储库。 -
DCGM Exporter:GPU 工作负载的 NVIDIA GPU 指标,例如机器学习训练和推理(默认端口 9400)。有关更多信息,请参阅 GitHub 上的 DCGM Exporter
存储库。 -
HAProxy Exporter:HAProxy 负载均衡器指标。有关更多信息,请参阅 GitHub 上的 HAProxy Exporter
存储库。 -
Apache Exporter:Apache HTTP 服务器指标。有关更多信息,请参阅 GitHub 上的 Apache Exporter
存储库。
按照官方文档在实例上安装并运行每个导出程序。记录每个导出程序侦听的端口,因为您需要在抓取配置中引用这些端口。有关可用导出程序的完整目录,请参阅 Prometheus 文档中的导出程序和集成
启动导出程序后,通过从实例查询其端点以确认是否公开指标:
curl http://localhost:port-number/metrics
步骤 1:设置抓取配置
以下示例结合使用 static_configs 和实例私有 DNS 名称,在 Amazon EC2 实例上抓取示例应用程序(端口 8080)和 Node Exporter(端口 9100)。relabel_configs 部分会为指标添加一致的标签,以便您可以跨服务进行查询和筛选。有关受支持的全部配置选项,请参阅 抓取程序配置。
global: scrape_interval: 30s scrape_timeout: 10s scrape_configs: - job_name: 'ec2-metrics' static_configs: - targets: - ip-ip-address.us-west-2.compute.internal:8080 metrics_path: '/metrics' relabel_configs: - source_labels: [__address__] target_label: instance replacement: 'ec2-metrics-instance' - target_label: service replacement: 'ec2-metrics' - target_label: environment replacement: 'dev' metric_relabel_configs: - source_labels: [__name__] regex: '.*' action: keep - job_name: ec2-node-exporter static_configs: - targets: - ip-ip-address.us-west-2.compute.internal:9100
步骤 2:设置抓取程序
创建连接 VPC 的托管式收集器,用于抓取实例并将指标传输至 CloudWatch 数据集。提供允许收集器访问导出程序端口的子网和安全组:
您可以使用 GetDefaultScraperConfiguration 以检索通用抓取程序配置,也可以提供自己的抓取程序配置。
创建托管式收集器时,Amazon Managed Service for Prometheus 会自动创建服务相关角色,该角色授予收集器访问 VPC 资源和写入 CloudWatch 数据集的权限。
验证指标收集
几分钟内,指标即可开始流入 CloudWatch 数据集。要确认指标是否已到达,使用 Query Studio 在 CloudWatch 中运行临时查询即可。例如,以下查询将返回 ec2-metrics 任务的指标:
{job="ec2-metrics"}
构建自定义控制面板
在收集器开始将 Amazon EC2 指标传输至 CloudWatch 后,您可以构建自定义 CloudWatch 控制面板,以直观显示这些指标。使用自定义控制面板,您可以将 Prometheus 导出程序中的指标合并到小组件中,添加基于 PromQL 的查询,并整理小组件以满足监控需求。有关更多信息,请参阅使用 CloudWatch 控制面板。
成本
按小时对 Prometheus 收集器收费,且适用 CloudWatch OpenTelemetry 指标摄取定价。有关 CloudWatch 定价的信息,请参阅 Amazon CloudWatch 定价