【问题标题】:How to measure throughput with dynamic interval in Grafana如何在 Grafana 中使用动态间隔测量吞吐量
【发布时间】:2019-07-12 12:26:43
【问题描述】:

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

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

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

SELECT sum("count") / $__interval FROM "http_requests" GROUP BY time($__interval) 但是这种方法行不通,因为返回的是空结果。

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

【问题讨论】:

    标签: monitoring grafana influxdb


    【解决方案1】:

    你没有得到结果的原因是$__interval不是一个数字,而是一个字符串,如10s、1m等,influxdb理解为一个时间范围。因此无法按照您尝试的方式使用它。

    但是,您要计算的是 mean,它可作为 InfluxQL 中的一个函数使用。获得你想要的行为的方法是这样的。

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

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

    Edit2:你认为这回答了你的问题Calculating request per second using InfluxDB on Grafana

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

    【讨论】:

    • 我一定已经很累了……连第三次编辑都不够
    • 要清楚一点,如果我们有自 Anno Domini 以来的登录次数之类的累积总和,我们可以使用 derivative 函数,它计算一段时间的差异,最终,它将是rps。但是如果我们的数据不是累积的,只是 10 秒内发生了多少事情,我们必须使用子查询。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-12
    • 1970-01-01
    • 1970-01-01
    • 2016-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多