联邦允许 Prometheus 服务器从另一个 Prometheus 服务器抓取选定的时间序列。
关于原生直方图(实验性功能)的说明:要通过联邦抓取原生直方图,抓取的 Prometheus 服务器需要启用原生直方图(通过命令行标志--enable-feature=native-histograms
),这意味着抓取时使用 protobuf 格式。如果联邦指标包含相同指标名称的不同样本类型(float64、计数器直方图、仪表直方图)的混合,则联邦负载将包含多个具有相同名称(但类型不同)的指标系列。从技术上讲,这违反了 protobuf 暴露格式的规则,但 Prometheus 仍然能够正确地摄取所有指标。
联邦有不同的用例。通常,它用于实现可扩展的 Prometheus 监控设置,或者将一个服务的 Prometheus 中的相关指标拉入另一个服务中。
分层联邦允许 Prometheus 扩展到具有数十个数据中心和数百万个节点的环境。在这种用例中,联邦拓扑类似于一棵树,高层 Prometheus 服务器从大量下属服务器收集聚合的时间序列数据。
例如,一个设置可能由许多每个数据中心的 Prometheus 服务器组成,这些服务器收集高细节的数据(实例级向下钻取),以及一组全局 Prometheus 服务器,这些服务器仅从这些本地服务器收集和存储聚合的数据(作业级向下钻取)。这提供了聚合的全局视图和详细的本地视图。
在跨服务联邦中,一个服务的 Prometheus 服务器被配置为从另一个服务的 Prometheus 服务器抓取选定的数据,以便在单个服务器中对两个数据集启用告警和查询。
例如,运行多个服务的集群调度程序可能会公开有关集群上运行的服务实例的资源使用信息(如内存和 CPU 使用率)。另一方面,在该集群上运行的服务将仅公开特定于应用程序的服务指标。通常,这两组指标由单独的 Prometheus 服务器抓取。使用联邦,包含服务级指标的 Prometheus 服务器可以从集群 Prometheus 中提取有关其特定服务的集群资源使用指标,以便可以在该服务器中使用这两组指标。
在任何给定的 Prometheus 服务器上,/federate
端点允许检索该服务器中选定的一组时间序列的当前值。必须至少指定一个 match[]
URL 参数来选择要暴露的系列。每个 match[]
参数都需要指定一个即时向量选择器,例如 up
或 {job="api-server"}
。如果提供了多个 match[]
参数,则选择所有匹配系列的并集。
要将指标从一个服务器联邦到另一个服务器,请将目标 Prometheus 服务器配置为从源服务器的 /federate
端点抓取,同时启用 honor_labels
抓取选项(以不覆盖源服务器暴露的任何标签)并传入所需的 match[]
参数。例如,以下 scrape_configs
从 source-prometheus-{1,2,3}:9090
上的 Prometheus 服务器将任何带有标签 job="prometheus"
或指标名称以 job:
开头的系列联邦到抓取 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'
此文档是开源的。请通过提交问题或拉取请求来帮助改进它。