如何在 Grafana 中使用动态间隔测量吞吐量

How to measure throughput with dynamic interval in Grafana

我们正在使用 Grafana 和 Influx 测量吞吐量。当然,我们希望根据每秒 每秒 (rps) 大约发生多少请求来衡量吞吐量。 典型的请求是:

SELECT sum("count") / 10 FROM "http_requests" GROUP BY time(10s)

但是我们正在失去使用惊人动态的可能性 $__interval 这在图形范围很大时非常有用,比如一周中的一天。当我们更改间隔时,我们应该将 divider 更改为 SELECT expression.

SELECT sum("count") / $__interval FROM "http_requests" GROUP BY time($__interval) 但是这种方法不起作用,因为结果为空 returns.

如何使用动态 $__interval 创建请求以进行吞吐量测量?

你得不到结果的原因是 $__interval 不是一个数字,而是一个字符串,例如 10s1m 等,被 influxdb 理解为一个时间范围.所以不可能按照你尝试的方式使用它。

但是,您要计算的是 mean,它在 InfluxQL 中作为函数提供。获得你想要的行为的方法是这样的。

SELECT mean("count") FROM "http_requests" GROUP BY time($__interval)

编辑:再想一想,这并不是您想要的。 您可能需要使用 derivative。稍后我会回来找你。

Edit2:你认为这回答了你的问题

Edit3:第三次编辑很有魅力。 我们使用您的起始查询并将其包装在另一个查询中: SELECT sum("rps") from (SELECT sum("count") / 10 as rps FROM "http_requests" GROUP BY time(10s)) GROUP BY time($__interval)