Prometheus缩小内存办法之一,治标不治本

运维有笔谈 2024-03-07 01:13:19

Prometheus还是小规模使用,资源压力大,所以还是跑的单台Prometheus,随着接入的项目以及grafana的一些查询,Prometheus内存占用也是稳步上升。暂时也没条件去做分片,上thanos等,大内存的问题又需要缓解下。所以临时使用了一个治标不治本的办法,减少我们的收集指标的频率。

Prometheus 的内存消耗主要是因为每隔 2 小时做一个 Block 数据落盘,落盘之前所有数据都在内存里面,因此和采集量有关。其他原因比如:加载历史数据时,是从磁盘到内存的,查询范围越大,内存越大,一些不合理的查询条件也会加大内存,如 Group 或大范围 Rate赞不考虑(主要是能力有限[打脸])。

我们目前是使用Prometheus operator部署,target是通过servicemonitor去获取。首先将全局配置调整为scrape_interval: 30s,这应该也是默认配置,servicemonitor不加interval参数,默认采集的时间间隔就是30s。在Prometheus原生UI查看tsdb-status可用查看当前 "Top 10 series count by metric names"可以了解哪些指标使用占比比较多,适当延长对应exporter采集数据间隔。

参考servicemonitor

apiVersion: monitoring.coreos.com/v1kind: ServiceMonitormetadata: labels: app: demo2-exporter name: demo2-exporter namespace: monitoringspec: endpoints: - interval: 2m scrapeTimeout: 30s port: http selector: matchLabels: app: demo-exporter
0 阅读:0

运维有笔谈

简介:感谢大家的关注