【百度云原生导读】Prometheus 在云原生监控领域已经成为事实的标准。在业界常见的实践案例中,更多是介绍如何做基础的监控能力对接,很少介绍如何将 Prometheus 大规模的应用于生产环境的案例。
而在现实场景中,大型互联网公司/金融行业场景的大规模、高可用、高时效性、高精确度等要求,会对现有的联邦或分布式存储 Prometheus 解决方案带来挑战。
本文将会介绍,百度云原生团队是如何针对金融行业的场景需求,结合百度内的应用实践经验,构建基于 Prometheus 的大规模线上业务交易监控能力。
Prometheus 的集群化方案分析
Prometheus 最大的优势在于 PromQL,它提供了灵活的数据分析查询能力,结合Grafana 提供的仪表盘查询,可以满足指标监控的大部分需求。
而面向大型互联网公司、金融行业等大规模业务监控的场景,原生的 Prometheus 单实例模式无法直接满足需求,需要一种面向生产环境的集群化高可用方案来进行支撑。
Prometheus 常见的集群化高可用思路包括两种:
-
Prometheus 联邦集群方案
-
Prometheus 联邦集群方案,是基于 Prometheus 单体模式的一种补充。可以让一系列 Prometheus 的单体分别采集不同的目标,然后将数据统一汇总到中央的 Prometheus 集群服务中。
-
在这种该方案中,中央的 Prometheus 仍然为单体模式,实际的存储能力仍然会受到单机的限制。所以在构建联邦模式时,需要根据数据量,对第一层的 Prometheus 所采集到的数据进行一些聚合计算,将减少后的数据传输到中央 Prometheus 中。故这种方案只能适用于最终需要分析的数据量偏少的场景。
-
同时该方案本身的维护成本颇高,需要对集群中的每一个 Prometheus 分片采集配置、预计算配置进行管理,如要访问除中央 Prometheus 集群中的数据,还需记录每一个 Prometheus 分片的访问路由。
-
-
Prometheus 远端存储方案
-
远端存储可以提供相比单体 Prometheus,突破了单机的资源限制,能够提供更大规模和更长时间的存储能力。
-
通过这种方式,整体集群的管理会更加简单,只需要对 Prometheus 设置分片采集,统一将数据导入远端存储即可,配置管理成本也会降低许多。
-
基于以上分析,可以判断出在大规模的业务监控场景下,一种基于远端存储的Prometheus 方案是必须的。但对于远端存储,仍然有如下问题需要解决:
-
远端存储本身仍然有容量的上限限制,针对数据存储时长、性能等要求,并不可能无限扩容。
-
存储的数据量越大,查询分析的压力也就会越大,一些涉及聚合计算曲线较多的查询、预计算规则(Record Rule)、报警规则(Alert Rule)所带来的大量查询,仍然会将整个集群拖垮。
我们从两个角度,来构建出一套解决方案:
-
减少指标量级:借鉴 Prometheus 联邦的思路,从采集层做预聚合,来减少指标量级,这个需要从业务角度来进行分析,如何针对交易量类型的指标,缩减指标量级。