联邦允许Prometheus服务器从另一个Prometheus服务器上抓取选定的时间序列。
使用场景
联邦有不同的使用场景。通常,它用于实现可伸缩的Prometheus监控,或将一个服务相关指标从一个Prometheus拉取到另一个中。
为了扩展单个 Prometheus 的采集能力和存储能力,Prometheus 引入了“联邦”的概念。
多个 Prometheus节点组成两层联邦结构,上面一层是联邦节点,负责定时从下面的Prometheus节点获取数据并汇总,部署多个联邦节点是为了实现高可用;下层的 Prometheus 节点又分别负责不同区域的数据采集,在多机房的事件部署中,下层的每个Prometheus节点都可以被部署到单独的一个机房,充当代理。
这不仅降低了单个Prometheus的采集负载,而且通过联邦节点汇聚核心数据,也降低了本地存储的压力。为了避免下层Prometheus的单点故障,也可以部署多套 Prometheus 节点,只是在效率上会差很多,每个监控对象都会被重复采集,数据会被重复保存。这种联邦方案并不是最完善的解决方案,原因如下:
◎ 这种配置方式相对复杂,缺少统一的全局视图;
◎ 对历史数据的存储问题仍未得到彻底解决,必须依赖第三方存储,并且缺少针对历史数据的降准采样能力;
◎ Prometheus在设计之初的定位就是一款实时监控系统,这是根本原因。
Prometheus的一些缺陷
◎ Prometheus只针对性能和可用性监控,并不具备日志监控等功能,并不能通过Prometheus解决所有监控问题。
◎ 由于对监控数据的查询通常都是最近几天的,所以 Prometheus 的本地存储的设计初衷只是存储短期(一个月)数据,并非存储大量历史数据。如果需要报表之类的历史数据,则建议使用Prometheus的远端存储如OpenTSDB influxdb等。
◎ Prometheus的监控数据没有对单位进行定义,这里需要使用者自己区分或者事先定义好所有监控数据单位,避免发生数据缺少单位的情况。如果要为多租户提供监控视图,则还需要各个业务系统基于 Prometheus 的多维度指标自己进行组合