首页 > 解决方案 > 将布尔度量/表达式转换为计数器

问题描述

我需要将布尔度量转换为计数器以捕获 0/1 的增加。我正在努力想出一个记录规则或一个功能来实现这一点。有哪些选择可以实现这一目标?

标签: prometheus

解决方案


从仪表(您的布尔度量)到计数器是不可能的。至少不会丢失数据。例如,给定 10 秒的抓取间隔,您的布尔值可以在 10 秒间隔内多次翻转为 0,然后是 1,然后是 0,然后是 1,等等。它甚至可能最终达到与 10 秒前相同的值。

因此,例如,从像这样每 5 秒翻转一次的序列中,Prometheus 只会看到 1,而不会看到 0:

0 1 0 1 0 1 0 1 0 1
  ^   ^   ^   ^   ^

因此,从普罗米修斯的角度来看,您的计量表卡在 1 并且永远不会有任何变化。

假设您的计数器的更改频率从未超过 10 秒,您可以设置一个记录规则,例如changes(boolean_metric[20s])(仍然假设抓取间隔为 10 秒),然后sum_over_time()对该规则的输出进行过度处理。


推荐阅读