托管 Prometheus 支持通过工作区的 Federate 端点抓取指定的时间序列,实现多 Prometheus 服务的数据聚合。本文介绍如何获取工作区的 Federate 端点并抓取时间序列。
说明
【邀测·申请试用】:该功能目前处于 邀测 阶段,如需使用,请联系您的产品解决方案工程师。
Federate 端点允许 Prometheus 服务从另一个 Prometheus 服务中抓取选定的时间序列,以此来实现多 Prometheus 服务的数据聚合。实现可扩展的 Prometheus 监控系统。
分层联合允许 Prometheus 扩展到具有数十个数据中心和数百万个节点的环境。在此场景下,联合拓扑类似于一棵树结构,较高级别的 Prometheus 服务器从大量下属 Prometheus 服务中收集聚合的时间序列数据。
例如,用户可能包含许多每个数据中心,每个数据中心均配备单独 Prometheus 服务。它们会非常详细地收集本地数据中心的数据(细化到实例级别)。还有一组全局的 Promethues 服务,这些全局服务仅从那些本地服务中收集并存储聚合数据(细化到任务级别)。这样便提供了一个聚合的全局视角以及详细的本地视角。
在跨服务联邦场景中,一个 Prometheus 服务被配置为从另一个 Prometheus 服务抓取选定的数据,以便在统一的服务中针对两个数据集进行查询和报警。
例如,运行多个服务的容器服务集群可能会公开集群上基础资源的使用情况信息(如内存和 CPU 使用情况)。另一方面,在该集群上运行的服务将仅公开应用程序的特定服务指标。通常,这两组指标由单独的 Prometheus 服务抓取。使用跨服务联邦后,将集群指标的数据和应用程序的指标进行聚合,方便用户通过这两组指标来共同衡量基础设施和应用的健康情况。
已创建托管 Prometheus 工作区。详情请参见 创建工作区。
创建工作区并获取 Federate 端点后,您可以通过该端点抓取工作区的指定时间序列。例如:您可以在火山引擎内网的主机实例中,执行以下命令,获取工作区中的up
指标数据。
curl -u admin:password 'http://query.prometheus-cn-shanghai.ivolces.com/workspaces/0446e83d-***/api/v1/federate?match\[\]=up'
预期反馈结果如下,可以正确读取工作区中的指定数据。
# TYPE up untyped 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[]
指定需要采集的指标。
scrape_configs: - job_name: 'federate' scrape_interval: 15s honor_labels: true metrics_path: '/federate' params: 'match[]': - '{job="prometheus"}' - '{__name__=~"job:.*"}' static_configs: - targets: - 'http://query.prometheus-cn-shanghai.ivolces.com/workspaces/0446e83d-***/api/v1/federate'
说明