15 May 2026
prometheus查询优化
recording rules
通过 recording rules 预计算常用查询或聚合表达式,可以将复杂的实时计算转移到后台提前完成,大幅减少查询时遍历的时间序列数量。这不仅能降低 prometheus 的查询负载,还能让 grafana 仪表盘响应更快。合理设置规则也能为后续的降采样和长期存储打下基础。
优化metric
设计指标时尽量避免使用动态或高基数的标签,比如用用户 id、url 路径全文等作为标签值,很容易造成时间序列数量失控。一方面会拖慢查询速度,另一方面会急剧增加内存与磁盘开销。可以把高基数信息转移到日志、trace 等系统,保持指标标签集合小而稳定。
relabeling机制
利用 prometheus 的 relabel 机制,在抓取阶段主动丢弃那些高基数且对查询没有帮助的标签。例如去掉临时 id 或不必要的实例信息,从源头控制时间序列的膨胀。这比事后清理更有效,也更节约资源。
采样和限流
只采集真正重要的指标数据,从采集端就做好过滤与限制。对历史数据可以采用更稀疏的采样粒度:比如超过 7 天的数据按每 10 分钟一个点聚合,超过 30 天的数据按每小时一个点聚合。在保留基本趋势的同时,大幅降低长期数据查询需要扫描的样本数。
缓存机制
分层利用不同存储介质来提升查询效率:最近 1 小时的热数据直接从内存返回,24 小时内的温数据由本地磁盘承担,更久远的历史数据则归档到对象存储。
数据压缩
通过合理调整 prometheus 的压缩策略,或利用其自带的块压缩机制,可以有效节省磁盘空间。当引入对象存储作为长期保留方案时,还可以叠加通用压缩算法进一步降低存储成本,但需要权衡压缩率对查询解压性能的影响,避免拖慢历史数据加载速度。
LEo
at 00:12