当前位置: 首页 > 知识库问答 >
问题:

使用分组数据查询grafana的XDB

阮轶
2023-03-14

我正在使用XDB存储一些服务度量。这些是简单的指标,例如读取字节或活动连接。然后,我将在grafana的帮助下,在此基础上创作一些可视化作品。

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

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

这是在“活动连接”上,我很难弄清楚。这些是连接到服务的tcp套接字,其中测量的是连接的html" target="_blank">套接字的数量;每当套接字连接或断开连接时,都会更新。

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

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 )

但我也遇到了同样的问题,我不知道如何在一定的时间间隔内为格拉法纳很好地分组。

有什么要评论和帮助的吗?将不胜感激。

共有1个答案

仉明知
2023-03-14

好的,

我似乎找到了解决办法。遗憾的是Grafana不支持子查询,因此需要使用原始视图手动插入查询。这里有一个悬而未决的问题。

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

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

我之前很接近,但是没有注意到在内部选择中,如果您不给结果选择命名,那么它在默认情况下显示为“last”。因此,我试图对“value”进行求和,但子查询中不存在该字段。

希望这对别人有帮助。谢谢你的评论,尤里。它为我指明了正确的方向。

 类似资料:
  • 问题内容: 我在为MySQL编写SQL查询时遇到一些问题。我有一个具有以下结构的表: 我想创建一个查询,该查询从表中提取以下信息: 查询结果应如下所示: 当然,每个唯一的“ id”具有更多行。 我已经尝试过一些查询,例如 这将返回正确的结果,但是我必须使用“ pass”的其他可能值(最多7个)来扩展它 我尝试在AVG中使用嵌套的SELECT,但这没有用,因为我没有弄清楚如何正确地将其限制为当前的’

  • 如何在Grafana的同一面板中使用来自不同查询的prometheus查询结果。 实例 我在格拉法纳有3个普罗米修斯查询,

  • 当我制作一个表格面板并转到“选项”选项卡时,列参数设置为自动:列及其顺序由数据查询决定。 是否有关于如何编写普罗米修斯对grafana表的查询的文档? 我的普罗米修斯数据是一个指标,有两个标签和: 我想做一张桌子,看起来像:

  • 问题内容: 我正在尝试使用数组查询MySQL数据库,但是遇到了麻烦! 我有一个名为客户的表,我希望能够从“扇区”列等于$ sectorlink的所有行中选择“名称”。 然后,我想将所有名称放入数组,以便执行下一个查询:从另一个表中选择所有行,这些表的“ client”列等于从第一个查询返回的名称之一。我做错了,因为它返回了致命的SQL错误。我对所有变量感到困惑! $ sectorlink和$ co

  • 我有Oracle表: 数据 Oracle是否支持产生以下输出的查询?--删除重复并将其分组到单个JSON数组中 版本: Oracle数据库12c企业版发布12.2.0.1.0-64位生产

  • GROUP 分组查询 >[danger] 分组查询,顾名思义就是按照组区分开,进行查询,比如按照性别分组 > 注意!!! group by 后面分组的字段不能随便加,比如 group by 'sex' 那么,查询字段必须为 sex 按照性别分组查询全部数学成绩的平均分 const { Sequelize } = app; // 按照性别分组查询全班数学成绩的平均分 const ret = awai