首页 文章

使用分组数据的grafana的Influxdb查询

提问于
浏览
0

我正在使用Influxdb来存储一些服务指标 . 这些是简单的指标,例如读取字节或活动连接 . 然后,使用grafana,我正在构建一些可视化 .

将某些内容显示为“读取字节”非常简单,它基本上是按时间间隔对值进行求和 .

SELECT sum("value") FROM "bytesReceived" WHERE $timeFilter GROUP BY time($__interval) fill(0)

这是在'活跃的联系',我有一些麻烦搞清楚 . 这些是连接到服务的tcp套接字,其中测量是连接套接字的数量;每当套接字连接或断开连接时,都会更新 .

如果我只有一个服务实例,这很容易,我会做类似的事情

SELECT last("value") FROM "activeConnections" WHERE $timeFilter GROUP BY time($__interval) fill(0)

问题是有多个服务实例,它们是动态创建的 . 测量使用附加标记“host”编写,该标记填充了运行时服务的id .

那么,让我们进入数据点 .

select * from activeConnections where time > '2018-05-16T16:00:00Z' and time < '2018-05-16T16:10:00Z'

这吐出了类似的东西

time                host         value
----                ----         -----
1526486436041433600 58e5bd04a313 5
1526486438158741000 58e5bd04a313 4
1526486438712713000 58e5bd04a313 3
1526486811218129000 29b39780fd7b 4

你可以注意到,我们最终在一台主机上有3个连接,在另一台主机上有4个连接 . 手头的问题是......显示整个数据合并,例如,最后一行应该是7 .

我尝试按主机分组数据

select last(value) from activeConnections where time > '2018-05-16T16:00:00Z' and time < '2018-05-16T16:10:00Z' group by host

这给了我每组的最后一个值

name: activeConnections
tags: host=29b39780fd7b
time                last
----                ----
1526486811218129000 4

name: activeConnections
tags: host=58e5bd04a313
time                last
----                ----
1526486706993942700 3

还尝试使用子查询

select * from ( select last(value) from activeConnections where time > '2018-05-16T16:00:00Z' and time < '2018-05-16T16:10:00Z' group by host )

但是我遇到了同样的问题,我不知道如何用时间间隔很好地分组grafana .

有什么关心评论和帮助?非常感谢 .

1 回答

  • 1

    好,

    我似乎找到了解决方案 . 它's a shame that Grafana doesn' t支持子查询,因此需要使用原始视图手动插入查询 . 有问题打开here .

    所以,我需要的是一种将所有主机值分组到一个绘图线中的方法 . 这可以通过以下查询来实现:

    SELECT sum("value") FROM (SELECT last("value") as "value" FROM "activeConnections" WHERE $timeFilter GROUP BY time($__interval), "host") GROUP BY time($__interval) fill(previous)
    

    我之前很接近,但没有注意到在内部选择中,如果你没有为结果选择命名,它默认为“最后” . 所以我试图总结“ Value ”,但该字段在子查询中不存在 .

    希望这有助于某人 . 谢谢Yuri,感谢您的评论 . 它指出了我正确的方向 .

相关问题