FEDERATION(联合)
Federation允许一个Prometheus服务从另一个Prometheus服务中获取选中的时间序列数据。
Use cases 用例
对于federation,有几种不同的用例。它常常用于实现Prometheus监控的扩展,或者从另一个Prometheus服务中拉取相关度量指标数据。
Hierarchical federation分层扩展
分层扩展允许Prometheus扩展到数十个数据中心和上百万的节点数量。在这个用例中,federation拓扑结构类似一颗树,较高层级的Prometheus服务从大量较低层级的Prometheus服务中检索和聚集时间序列数据。
例如:环境中可能包含许多以数据中心为基础的Prometheus服务,可以从较高层级收集数据,还有一组全局的Prometheus服务,仅仅从本地服务器收集和存储聚合的数据。这提供了一个聚合的全局视图和本地视图。
跨服务的federation
在跨服务的federation中,一个Prometheus服务配置成从另一个Prometheus服务中获取选中的数据,这个Prometheus服务能够对单个服务中的两个数据集启用警告和查询。
例如,一个运行多个服务的集群调度器可能暴露了集群资源使用信息(例如:CPU和内存使用量)。另一方面,运行在集群上的一个服务仅仅暴露应用程序指定的服务度量指标。经常地,独立的Prometheus服务抓取这两个度量指标CPU和内存。使用federation,这个Prometheus服务包含服务级别的度量指标,这个指标可以从集群Prometheus服务中获取有关其指定的服务集群资源使用量,以便在该服务中使用两组度量指标。
配置federation
任何Prometheus服务,这个/federation
允许从服务中选中的时间序列检索当前值。至少一个match[]
URL参数必须指定要选择的暴露时间序列。每一个match[]
参数需要指定一个即时向量选择器,例如:up
或者{job="api-server"}
。如果提供了多个match
参数,将会选取所有匹配的时间序列数据的并集。
为了一个Prometheus服务从另一个Prometheus服务中federate度量指标,从一个源服务的/federate
端点,配置你的目标Prometheus服务。当然,也可以使用honor_labels
获取选项和输入想要的match[]
的参数。例如,下面scrape_config
federates任何带有job="prometheus
标签的所有时间序列,或者一个以job
开头的度量指标名称:从这个Prometheus服务上端口服务prometheus-{1,2,3}:9090
上获取其他Prometheus服务度量指标数据。
- 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'