托管 Prometheus 支持通过工作区的 Federate 端点抓取指定的时间序列,实现多 Prometheus 服务的数据聚合。本文介绍如何获取工作区的 Federate 端点并抓取时间序列。
背景信息
Federate 端点允许 Prometheus 服务从另一个 Prometheus 服务中抓取选定的时间序列,以此来实现多 Prometheus 服务的数据聚合。实现可扩展的 Prometheus 监控系统。
分层联邦
分层联合允许 Prometheus 扩展到具有数十个数据中心和数百万个节点的环境。在此场景下,联合拓扑类似于一棵树结构,较高级别的 Prometheus 服务器从大量下属 Prometheus 服务中收集聚合的时间序列数据。
例如,用户可能包含许多每个数据中心,每个数据中心均配备单独 Prometheus 服务。它们会非常详细地收集本地数据中心的数据(细化到实例级别)。还有一组全局的 Promethues 服务,这些全局服务仅从那些本地服务中收集并存储聚合数据(细化到任务级别)。这样便提供了一个聚合的全局视角以及详细的本地视角。
跨服务联邦
在跨服务联邦场景中,一个 Prometheus 服务被配置为从另一个 Prometheus 服务抓取选定的数据,以便在统一的服务中针对两个数据集进行查询和报警。
例如,运行多个服务的容器服务集群可能会公开集群上基础资源的使用情况信息(如内存和 CPU 使用情况)。另一方面,在该集群上运行的服务将仅公开应用程序的特定服务指标。通常,这两组指标由单独的 Prometheus 服务抓取。使用跨服务联邦后,将集群指标的数据和应用程序的指标进行聚合,方便用户通过这两组指标来共同衡量基础设施和应用的健康情况。
前提条件
已创建托管 Prometheus 工作区。详情请参见 创建工作区。 使用 Federate 端点导出指标时,不支持导出存储时长 15 天工作区中的 云产品基础指标(即免费指标)。详情请参见 按量计费。 操作步骤
- 在工作区列表中,选择目标工作区,单击工作区的名称,进入工作区详情页面。在 地址信息 页面中,可以查看到该工作区的联邦查询地址。
结果验证
创建工作区并获取 Federate 端点后,您可以通过该端点抓取工作区的指定时间序列。例如:执行以下命令,获取工作区中的up指标数据。
curl -u admin:password 'http://query.prometheus-cn-shanghai.ivolces.com/workspaces/0446e83d-***/api/v1/federate?match\[\]=up'
预期反馈结果如下,可以正确读取工作区中的指定数据。
up{cluster="ccm***",job="cluster-autoscaler",instance="ccm***-cluster-autoscaler-57b***",account_id="210***"} 1 1735625564572
up{cluster="ccm***",job="csi-ebs",instance="192.168.88.2:19809",prometheus="kube-system/prometheus-agent"} 1 1735625564432
up{cluster="ccm***",job="ingress-nginx",instance="ingress-nginx-controller-7c5***",prometheus="kube-system/prometheus-agent"} 1 1735625562362
up{cluster="ccm***",job="ingress-nginx",instance="ingress-nginx-controller-7c5***",prometheus="kube-system/prometheus-agent"} 1 1735625562128
后续配置
您可以在其他 Prometheus 系统(自建 Prometheus 服务、其他云厂商 Prometheus 服务)中,配置采集规则。允许基于 Federate 端点抓取托管 Prometheus 工作区的时间序列,实现数据聚合。并支持通过match[]指定需要采集的指标。
metrics_path: '/workspaces/0446e83d-***/api/v1/federate'
- '{__name__=~"job:.*"}'
- 'query.prometheus-cn-shanghai.ivolces.com'
说明
Federate 功能的更多详情,请参见 官方文档。 默认情况下,Federate 端点中周期内抓取数据的最大回溯时间窗口为 5 分钟。由于部分云产品的指标上报间隔有时可能很长(超过 5 分钟),这会导致偶尔无法抓取到指标的情况出现。
为避免上述问题,托管 Prometheus 的 Federate 端点支持配置max_lookback,允许您自定义周期内抓取数据的最大回溯时间窗口。在如下示例代码中,配置max_lookback为10m,即 10 分钟。
metrics_path: '/workspaces/0446e83d-***/api/v1/federate'
- '{__name__=~"job:.*"}'
- 'query.prometheus-cn-shanghai.ivolces.com'