Prometheus 2.x 限制内存使用

Posted

技术标签:

【中文标题】Prometheus 2.x 限制内存使用【英文标题】:Prometheus 2.x Limit Memory Usage 【发布时间】:2020-03-01 00:21:31 【问题描述】:

基本上我正在寻找相当于 1.x storage.local.target-heap-size 的东西。

我有一个 prometheus 应用程序(在 6 核、32G 机器上运行),它从 2000 个虚拟机中提取主机指标。刮擦间隔5分钟。

在几分钟内,我的 RAM 使用量增加到 29-30GB,然后在 10-15 分钟后,它因 OOM 或服务器无法从 UI 中使用而死。

我们可以告诉 prometheus 使用定义的最大 RAM 吗?

【问题讨论】:

【参考方案1】:

Prometheus 2.x 不提供限制内存使用的配置 - 它使用处理当前工作负载所需的内存。有一个 calculator 用于根据工作负载估算 Prometheus 2.x 所需的内存。

附:如果您在工作负载下遇到 Prometheus OOM,请查看 VictoriaMetrics。在相同的工作负载下,它需要的内存比 Prometheus 少 7 倍。见https://valyala.medium.com/prometheus-vs-victoriametrics-benchmark-on-node-exporter-metrics-4ca29c75590f。还有vmagent,可用于高效抓取大量Prometheus目标。

【讨论】:

以上是关于Prometheus 2.x 限制内存使用的主要内容,如果未能解决你的问题,请参考以下文章

针对prometheus监控系统的influxdb数据库内存优化 #yyds干货盘点#

Kubernetes Prometheus:当容器内存使用量大于 kube 节点总内存容量时添加警报

使用 prometheus 计算 k8s 集群 cpu/内存使用情况

Prometheus 查询以获取 kubernetes pod 中的 CPU 和内存使用情况

如何使用 Micrometer 和 Alertmanager 在 Prometheus 中提醒 JVM 内存使用情况

Kubernetes:比较 Prometheus / PromQL 中 Pod 的 RSS 内存使用和 Pod 内存需求