CnOps 智能运维与可观测社区
首页开源项目实践文章视频课程常见问答开发者工具STAROps 专题
导航菜单
首页开源项目实践文章视频课程常见问答开发者工具STAROps 专题

CnOps 智能运维与可观测社区

愿景

CnOps 智能运维与可观测社区是一个以"智能运维与可观测"为核心的开放、包容、分享的技术社区,旨在聚集运维专家、开发者和爱好者,共同探讨、学习和分享可观测最佳实践与最新技术,与众多技术社区合作互动,共同探讨交叉领域的技术挑战,推动可观测领域的创新与进步。

内容社区

  • 实践文章
  • 视频课程
  • 开源项目
  • 常见问答
  • 开发者工具

友情链接

  • Prometheus
  • Grafana Lab
  • OpenTelemetry
  • LoongCollector

关注我们

阿里云云原生公众号阿里云云原生
阿里云可观测公众号阿里云可观测

Copyright © 2026 CnOps 社区. All rights reserved.

首页/开源项目/Prometheus/联邦
文档目录
安装Prometheus Agent 模式存储联邦编写 HTTP 服务发现管理 APIPrometheus 3.0 迁移指南API 稳定性保证功能开关

Prometheus

联邦

联邦允许一个 Prometheus 服务器从另一个 Prometheus 服务器抓取选定的时间序列。 关于原生直方图的说明:要通过联邦抓取原生直方图,抓取端的 Prometheus 服务器需要在其抓取配置中设置 scrapenativehistograms: true,这意味着使用 protobuf...

联邦允许一个 Prometheus 服务器从另一个 Prometheus 服务器抓取选定的时间序列。

关于原生直方图的说明:要通过联邦抓取原生直方图,抓取端的 Prometheus 服务器需要在其抓取配置中设置 scrape_native_histograms: true,这意味着使用 protobuf 格式进行抓取。如果联邦的指标包含同一指标名称下不同样本类型的混合(任意类型的浮点数、计数器直方图或 gauge 直方图),联邦载荷将包含多个具有相同名称(但不同类型)的指标族 - 出于技术原因,浮点样本始终以 untyped 类型联邦,而直方图样本则带有完整的类型信息进行联邦。从技术上讲,这违反了 protobuf 暴露格式的规则,但 Prometheus 仍然能够正确摄入所有指标。

使用场景

联邦有不同的使用场景。通常,它用于实现可扩展的 Prometheus 监控架构,或从一个服务的 Prometheus 中拉取相关指标到另一个服务中。

分层联邦

分层联邦允许 Prometheus 扩展到拥有数十个数据中心和数百万节点的环境。在此用例中,联邦拓扑类似于一棵树,更高层级的 Prometheus 服务器从大量下级服务器收集聚合的时间序列数据。

例如,一个部署可能由许多每数据中心的 Prometheus 服务器组成,以高粒度(实例级下钻)收集数据,以及一组全局 Prometheus 服务器,仅从这些本地服务器收集和存储聚合数据(job 级下钻)。这提供了聚合的全局视图和详细的本地视图。

跨服务联邦

在跨服务联邦中,一个服务的 Prometheus 服务器被配置为从另一个服务的 Prometheus 服务器抓取选定的数据,以便在单个服务器中对两个数据集进行告警和查询。

例如,运行多个服务的集群调度器可能会暴露关于运行在集群上的服务实例的资源使用信息(如内存和 CPU 使用率)。另一方面,运行在该集群上的服务只会暴露应用程序特定的服务指标。通常,这两组指标由不同的 Prometheus 服务器抓取。使用联邦,包含服务级指标的 Prometheus 服务器可以从集群 Prometheus 中拉取其特定服务的集群资源使用指标,从而可以在该服务器中使用两组指标。

配置联邦

在任意给定的 Prometheus 服务器上,/federate 端点允许检索该服务器中选定时间序列集合的当前值。必须指定至少一个 match[] URL 参数来选择要暴露的序列。每个 match[] 参数需要指定一个即时向量选择器,如 up 或 {job="api-server"}。如果提供了多个 match[] 参数,则选择所有匹配序列的并集。

要将指标从一个服务器联邦到另一个服务器,请配置目标 Prometheus 服务器从源服务器的 /federate 端点抓取,同时启用 honor_labels 抓取选项(以不覆盖源服务器暴露的任何标签),并传入所需的 match[] 参数。例如,以下 scrape_configs 将带有标签 job="prometheus" 的任何序列或指标名称以 job: 开头的序列从位于 source-prometheus-{1,2,3}:9090 的 Prometheus 服务器联邦到抓取端的 Prometheus:

scrape_configs:
  - job_name: 'federate'
    scrape_interval: 15s

    honor_labels: true
    metrics_path: '/federate'

    params:
      'match[]':
        - '{job="prometheus"}'
        - '{__name__=~"job:.*"}'

    static_configs:
      - targets:
        - 'source-prometheus-1:9090'
        - 'source-prometheus-2:9090'
        - 'source-prometheus-3:9090'

文章大纲