我在 InfluxDB 中有一个测量来跟踪系统的状态。例如,考虑以下措施:
03/22/18 00:00:00AM STATUS_A
03/22/18 09:00:00AM STATUS_B
03/22/18 13:00:00AM STATUS_C
03/22/18 18:00:00AM STATUS_B
03/22/18 19:00:00AM STATUS_D
03/22/18 21:00:00AM STATUS_A
我现在需要做的是导出系统每天处于每个状态的时间。在上面的例子中,期望的结果是这样的
STATUS_A 12h (from 00:00 to 09:00 and from 21:00 to 24:00)
STATUS_B 5h (from 09:00 to 13:00 and from 18:00 to 19:00)
STATUS_C 5h (from 13:00 to 18:00)
STATUS_D 2h (from 09:00 to 21:00)
我对 TICK 堆栈非常陌生,所以我可能会遗漏一些非常基本的东西。我正在考虑使用 Kapacitor 来创建聚合结果,但我真的不知道如何获取结果
最佳答案
您提到了 TICK 堆栈,所以我假设您使用的是 InfluxDB 版本 1。
在 InfluxDB 中报告给定状态的总持续时间是可行的,但只能在 Flux 中报告,而不是在 InfluxQL 中(很容易)。 您可以尝试以下步骤:
通过配置更改在 v1.8 中启用 Flux here
样本通量可以是:
from(bucket: "yourDatabaseName/autogen") |> 范围(开始: 2018-03-20T00:00:00Z, 停止: 2018-03-20T23:59:59Z) |> 过滤器(fn: (r) => r._measurement == "yourMeasurementName") |> stateDuration(fn: (r) => r._value == "STATUS_A", 列: "state", 单位: 1h)
尽管社区已经等待了一段时间,但在 InfluxQL 中仍然无法做到这一点。查看更多详情here .
关于InfluxDB - 状态持续时间的聚合数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49550199/