0

我想从节点导出器获取时间序列向量node_memory_MemAvailable_bytes 。它在 RHEL7 上运行良好,但在 RHEL6 上不存在此数据,因为旧内核上的 /proc/meminfo 中不存在此数据。

所以没问题,Prometheus 让我可以通过它的规则来计算这个时间序列向量。

我想总结node_memory_MemFree_bytes + node_memory_Buffers_bytes + node_memory_Cached_bytes。(这可能不准确,但在大多数情况下似乎很好)。

我在 Prometheus 主配置文件中创建了这样的字符串

rule_files:
   - 'prometheus.rules.yml'

和这样的文件prometheus.rules.yml:

groups:
- name: node_memory_MemAvailable_bytes for RHEL6
  rules:
  - record: node_memory_MemAvailableRH6_bytes
    expr: node_memory_MemFree_bytes + node_memory_Buffers_bytes + node_memory_Cached_bytes
    labels:
      sumof: FreeBuffersCached

并且出现了新的时间序列node_memory_MemAvailableRH6_bytes

但是......它也出现在 RHEL7 主机上!

我找不到如何处理它。

是否可以仅在不存在node_memory_MemAvailable_bytes的情况下应用我的规则?

或者

仅当node_memory_MemAvailable_bytes不存在时,是否可以要求 Grafana 绘制node_memory_MemAvailableRH6_bytes图形?

PS/我不想在 Prometheus 规则中用 node_memory_MemAvailableRH6_bytes 重写 node_memory_MemAvailable_bytes,因为我的总和不准确。

4

1 回答 1

0

新的一天,新鲜的大脑......似乎这让我想要:

- name: node_memory_MemAvailable_bytes absent for old kernels
  rules:
  - record: rule:node_memory_MemAvailable_bytes
    expr: node_memory_MemAvailable_bytes or ( node_memory_MemFree_bytes + node_memory_Buffers_bytes + node_memory_Cached_bytes )

如果存在,则规则写入node_memory_MemAvailable_bytes 。

或者node_memory_MemAvailable_bytes如果不存在则由 sum 创建。

请注意,将记录命名为“ node_memory_MemAvailable_bytes ”(我使用规则:node_memory_MemAvailable_bytes )是个坏主意,因为 Prom 会将合成度量的最后结果重写为新记录。

于 2019-12-13T07:28:33.123 回答