【发布时间】:2016-08-17 13:41:40
【问题描述】:
我在 Grafana 中有一个查询:
SELECT mean(value) FROM "queues_value" WHERE "host" =~ /$host/ AND "type" = 'rabbitmq_messages' AND $timeFilter GROUP BY time($interval), "host", "instance"
目前,此图表绘制了给定时间段内 rabbitmq 队列中的平均消息数,显示了每个主机的每个队列的单独图表。
我想做基本相同的事情,但结果是每个主机只有一个图表将所有队列加在一起。这意味着取指定时间段内所有消息计数的平均值(保持不同的instances、hosts 和时间间隔分开),然后将它们相加(这次只保持不同的hosts 和时间间隔分开)。
问题是,像 mean 或 sum 这样的每个聚合函数只会影响整个查询,而且似乎没有办法将 GROUP BY 语句应用于一个聚合函数。
如果可能的话,我会做这样的事情:
SELECT sum(mean(value) GROUP BY "instance") FROM "queues_value" WHERE "host" =~ /$host/ AND "type" = 'rabbitmq_messages' AND $timeFilter GROUP BY time($interval), "host"
或者这个:
SELECT sum(value) FROM (SELECT mean(value) FROM "queues_value" WHERE "host" =~ /$host/ AND "type" = 'rabbitmq_messages' AND $timeFilter GROUP BY time($interval), "host", "instance") GROUP BY time($interval), "host"
但这些都不是有效的语法。
本质上,我试图首先在给定时间段内处理一个特定主机上包含一个特定队列的聚合,然后尝试处理由同一主机上的计算结果形成的聚合时间段。
有没有办法在 influxdb 或 grafana 中完成我想要的?
【问题讨论】: