将布尔值 metric/expression 转换为计数器
Convert boolean metric/expression to a counter
我需要将布尔指标转换为计数器以捕获 0/1 的增加。我正在努力想出一个记录规则或一个函数来实现这一点。有哪些选择可以实现这一目标?
从仪表(您的布尔指标)到计数器是不可能的。至少不会丢失数据。例如。给定 10 秒的抓取间隔,您的布尔值可以翻转为 0,然后 1,然后 0,然后 1,等等。在这 10 秒的间隔内任意次数。它甚至可能以与 10 秒前相同的值结束。
例如从像这样每 5 秒翻转一次的序列中,Prometheus 只会看到 1,而不会看到 0:
0 1 0 1 0 1 0 1 0 1
^ ^ ^ ^ ^
因此,从 Prometheus 的角度来看,您的计量器停留在 1,并且永远不会发生任何变化。
不过假设您的计数器的更改频率从未超过 10 秒,您可以设置一个记录规则,例如 changes(boolean_metric[20s])
(仍假设抓取间隔为 10 秒),然后执行 sum_over_time()
该规则的输出。
我需要将布尔指标转换为计数器以捕获 0/1 的增加。我正在努力想出一个记录规则或一个函数来实现这一点。有哪些选择可以实现这一目标?
从仪表(您的布尔指标)到计数器是不可能的。至少不会丢失数据。例如。给定 10 秒的抓取间隔,您的布尔值可以翻转为 0,然后 1,然后 0,然后 1,等等。在这 10 秒的间隔内任意次数。它甚至可能以与 10 秒前相同的值结束。
例如从像这样每 5 秒翻转一次的序列中,Prometheus 只会看到 1,而不会看到 0:
0 1 0 1 0 1 0 1 0 1
^ ^ ^ ^ ^
因此,从 Prometheus 的角度来看,您的计量器停留在 1,并且永远不会发生任何变化。
不过假设您的计数器的更改频率从未超过 10 秒,您可以设置一个记录规则,例如 changes(boolean_metric[20s])
(仍假设抓取间隔为 10 秒),然后执行 sum_over_time()
该规则的输出。