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

时间:2019-02-10 01:23:05

标签: grafana influxdb

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

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小时的其他间隔)之间进行最大值的区别。

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

感谢brunorey在我编辑问题以使其更清晰之前在下面回答。

2 个答案:

答案 0 :(得分:0)

您可以将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);

上面的查询对于流入是有好处的,如果您想在grafana中实现它们,我建议您定义一个区间变量(请参阅documentation)或使用$__interval变量(请参阅{{3} }),它会根据您的缩放级别自动调整:

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

答案 1 :(得分:0)

每小时计数:从“计数器”中选择non_negative_derivative(last(“ value”),1h)$ timeFilter GROUP BY time(1h)fill(null)