Prometheus 监控服务 基于 Prometheus 预聚合能力的查询性能优化

Prometheus 预聚合可以将频繁使用的、计算成本高昂的查询结果,提前计算好并保存为新的时间序列。当用户需要对复杂的聚合语句进行查询时,可以直接读取这个聚合后的指标数据,从而避免每次查询都进行原始数据的重复扫描和计算。

相关产品
Prometheus 监控服务 产品页,含版本规格、价格与购买入口。

一、实践案例

某用户在进行业务迁移至腾讯云的过程中,需依托监控指标支持业务压测评估。但在使用 Grafana 查看监控面板过程中,反馈出现查询缓慢的问题。经协同排查,通过 Prometheus 预聚合能力有效优化了查询性能,提升用户体验。

用户有一个包含200个节点的 Kubernetes 集群,需要监控每个节点的 CPU 使用率,用户配置的原始查询语句如下:

sum(rate(node_cpu_seconds_total{cluster="$cluster",mode!="idle"}[1m])) by (cluster)

随着集群规模扩大,该查询出现了查询延迟高、Grafana 仪表盘加载慢的问题,尤其在查询时间范围扩大至24小时后,Grafana 仪表盘无法正常展示监控数据。

二、原查询计算过程分析

1. 原始数据获取:扫描所有满足 mode!="idle"的 node_cpu_seconds_total 时间序列,每次查询需加载1分钟的高基数原始数据。

2. 实时计算:对每一时间序列实时计算 rate()(每秒增长率),并按 cluster 分组聚合(sum)。

该查询存在以下明显瓶颈:

·计算开销高 :每次查询均需扫描原始数据并实时计算 rate()。

·内存占用大 :需在内存中处理大量时间序列点,节点数量增多时尤为显著。

·查询延迟显著 :数据量增大导致响应变慢。

·存储 I/O 压力大 :频繁读取原始数据,影响其他查询操作。

三、预聚合方案设计

针对以上问题,建议用户在预聚合页面通过 新建预聚合规则 优化查询性能,配置如下:

rules: – record: cluster:node_cpu_util:sum expr: sum (1 – rate(node_cpu_seconds_total{mode="idle"}[1m])) by(cluster)

启用以上预聚合规则后,Prometheus 将定时执行预聚合规则,并将计算结果存储为新指标 cluster:node_cpu_util:sum,用户可直接使用以下简单语句进行查询:

cluster:node_cpu_util:sum{cluster="$cluster"}

对于 node_cpu_seconds_total 指标,mode 包含8个不同的维度,原始查询语句中的 mode != "idle" 需要把其它的维度的时间序列都查询出来进行计算,而预聚合规则中的 1 – {mode="idle"} 只需要查询包含这个标签的时间序列,在预聚合计算时的计算量也将大幅减少,同时也建议用户精简采集指标,减少不必要的指标数据在查询计算中的消耗。

四、性能对比

原始查询语句和通过预聚合规则查询的性能对比如下:

对比项 原始查询 预聚合查询
单次查询计算量 实时计算所有节点 CPU rate + 聚合 直接读取预聚合结果
查询延迟 依赖集群规模 恒定低延迟
内存占用 需加载所有节点1分钟原始数据 仅加载1个聚合值
存储 IO 高频读取原始数据 仅读取预聚合结果
CPU 消耗 每次查询需完整计算 仅需1分钟1次计算
适用场景 临时排查/小规模集群 仪表盘/告警/大规模集群

五、查询面板配置建议

Prometheus 更适合短期、高频的指标查询(15 – 90 天)。若涉及高阶复杂分析,建议结合专门的数据分析/OLAP 系统。对于简单的长期趋势、同比环比报表,需避免直接堆叠原始指标,以减少查询成本和数据噪声。

六、面板设计

·业务视角优先:按业务目标(如请求成功率、延迟、转化率)组织指标,而非以技术组件为单位。

·总览 vs 细节:设置“总览面板”提供核心指标(2 – 3 个比率/趋势曲线),而“细节面板”用于下钻分析,避免使用复杂的变量。

·减少噪音:避免在单个面板上堆砌大量相似曲线,突出核心指标的对比和趋势。

七、查询加速

·聚合前移,分层聚合:先把离散维度(如 cluster、region)合并成更有业务意义的指标;查询时再逐级下钻,而不是在面板端动态拼装复杂聚合。

·统一口径,核心指标优先:统一报表口径,优先使用“总量、比率、分位数”类指标,而非长时间原始计数曲线。同比/环比提供直观的性能和质量变化,避免依赖二次解读。

用少量清晰的组合性指标替代原始数据海洋;通过预聚合、统一口径和分层面板设计,保证长期趋势和同比/环比分析既直观又高效。

八、总结

对于监控仪表盘(Grafana 等需要高频刷新)、告警规则(需快速检测阈值)、超大规模集群(节点 > 50)和长期使用的核心指标,推荐用户提前配置预聚合规则,通过使用预聚合指标来提升查询性能,降低资源消耗,有效保障监控系统的稳定性和用户体验。

赞 (0)
上一篇 4天前
下一篇 4天前