如何显示每个时间间隔发出的命令的 Grafana 仪表板



每次启动命令时,我都会递增一个计数器,并且每隔几毫秒添加一个条目来输入计数器的当前值,从而生成如下所示的条目。

time            value
----            -----
1549754123986   0
1549754183993   1
1549754243999   2
1549754304005   3

我想要一个 Grafana 时序仪表板,显示命令在一个时间间隔内启动了多少次(例如每小时、每 3 小时、每 6 小时......

例如,如果命令在 9:00、

9:30、10:45、11:00 和 12:15 启动,则每小时启动的命令图如下所示:

3|
2|       -------                 -----------
1|-------       --------    -----           -----    ----------------
0|_________________________________________________________________________
  9:00  9:30  10:00   10:30   11:00   11:30   12:00    12:30   1:00  

从 https://docs.influxdata.com/influxdb/v1.5/query_language/functions 上列出的流入函数中,我想在间隔 1 小时(与其他间隔间隔的 3、6、12、24 小时(的最大值之间做一个差异。

我的选择语句会是什么样子?

感谢布鲁诺里在下面回答,然后我编辑了我的问题以使其更清晰。

您可以将SUM()GROUP BY一起使用,以选择该值在三小时内为 1 的总次数:

> SELECT SUM(value) FROM my_data GROUP BY time(3h);
name: my_data
time                 sum
----                 ---
2019-02-06T12:00:00Z 216
2019-02-06T15:00:00Z 766
2019-02-06T18:00:00Z 704
2019-02-06T21:00:00Z 547
2019-02-07T00:00:00Z 436
2019-02-07T03:00:00Z 497
> 

从您的数据中,我知道value总是10.

如果有更多不同的数字,并且您希望每次都是 1 时都得到,则可以使用带有条件的 COUNT:

> SELECT COUNT(value) FROM my_data WHERE value=1 GROUP BY time(3h);

上面的查询适用于 influx,如果您想在 grafana 中实现它们,我建议您定义一个间隔变量(请参阅文档(或使用 $__interval 变量(请参阅文档(,该变量将根据您的缩放级别自动调整:

SELECT SUM(value) FROM my_data GROUP BY time($__interval);

对于每小时计数: 从"计数器"中选择non_negative_derivative(最后一个("值"(, 1h( 其中$timeFilter分组时间(1小时( 填充(空(

最新更新