Prometheus 报告 node_memory_Active_bytes 和 free -b 的值不同

Posted

技术标签:

【中文标题】Prometheus 报告 node_memory_Active_bytes 和 free -b 的值不同【英文标题】:Prometheus reports a different value for node_memory_Active_bytes and free -b 【发布时间】:2020-05-01 11:32:01 【问题描述】:

我对 Prometheus 很陌生,所以这可能是一个愚蠢的问题 - 但这里是。

当我请求 node_memory_Active_bytes 和 node_memory_MemTotal_bytes 我得到:

node_memory_Active_bytesinstance="10.1.4.9:9100",job="node-exporter"  3257815040

(..and..)

node_memory_MemTotal_bytesinstance="10.1.4.9:9100",job="node-exporter"    16509550592

但是,在盒子上,如果我运行 free -b,我会得到以下信息:

$ free -b
              total        used        free      shared  buff/cache   available
Mem:    16509550592  2264915968  6787731456    59121664  7456903168 14140530688
Swap:             0           0           0

我正在努力将 prometheus 的内存视图与实际机器的视图进行映射。我确定我一定做错了什么,但我不知道是什么。总的匹配,但是免费的

【问题讨论】:

【参考方案1】:

我认为您将“活动”内存与“已用”内存混淆了,不是吗?它们是不同的东西。

查看有关此here 的更多信息。

要使用 Prometheus 节点导出器计算“已用”内存:

node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes

【讨论】:

啊!有道理,不过还是有点过头了。 node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes = 2394025984 used = 2282270720 有什么理由吗?这在相当长的一段时间内始终如一地发生。 嗯...我不知道 :-(【参考方案2】:

free -b 命令的等效查询:

总计:node_memory_MemTotal_bytes 使用:node_memory_MemTotal_bytes - node_memory_MemFree_bytes - node_memory_Buffers_bytes - node_memory_Cached_bytes - node_memory_SReclaimable_bytes 分享:node_memory_Shmem_bytes 免费:node_memory_MemFree_bytes buff/缓存:node_memory_Buffers_bytes + node_memory_Cached_bytes + node_memory_SReclaimable_bytes 可用:node_memory_MemAvailable_bytes

【讨论】:

你拯救了我的一天!这应该是正确的答案。

以上是关于Prometheus 报告 node_memory_Active_bytes 和 free -b 的值不同的主要内容,如果未能解决你的问题,请参考以下文章

如何在prometheus + grafana中显示零而不是最后一个值

Prometheus - 计算百分比增加

JMX 导出器和 Prometheus

JMX导出器和Prometheus

Prometheus 和 Node 导出器(以毫秒为单位)

k8s 上的 Prometheus 自定义指标服务发现