Grafana 变量 - 区间乘数

Grafana variable - Interval mutiplier

我正在 grafana 中绘制图表,我在其中获取一个计数器的速率并从另一个计数器的速率中减去它。 我在图中使用区间变量。 现在,当我想使用 5m 作为间隔时,我希望速率相乘 (5*60)。 同样,当 1h 应乘以 (1 * 24 * 60 * 60)

$period = 1m,5m,10m,1h and like this.

我的查询

rate(service_total{state="otp_send"}[$period]) * 300 - ignoring(state) rate(service_total{state="otp_validate"}[$period]) *300 

所以我希望将这个 300 放入一个变量中,当我更改 grafana 中的 $period 值时该变量会发生变化

> If $period is 5m, 300 should be 300 
> If $period is 1m, 300 should be 60
> If $period is 10m, 300 should be 600

并以这种方式。 grafana有什么可以做的吗

所以基本上我想将 $period 附加到一个常量变量,该变量根据间隔相乘。

您可以将 "rate(vector)*time" 更改为 "delta(vector)" 以获得相同的结果,如下所示:

delta(service_total{state="otp_send"}[$period]) - ignoring(state) delta(service_total{state="otp_validate"}[$period])

Prometheus 文档中的更多信息here

更新:

正如@brian-brazil 回复的那样,在这种情况下正确的做法是使用 "increase" 函数而不是 "delta" 函数,因为第二个函数不处理计数器重置。

Prometheus 文档中的更多信息here

  increase(service_total{state="otp_send"}[$period]) 
- ignoring(state) 
  increase(service_total{state="otp_validate"}[$period]) 

increaserate 之上的语法糖。