我想在评估检查之前的3个小时内,当特定类型事件的计数小于5时发出警报,但是我需要每15分钟执行一次此检查。
由于我需要检查的时间比我测量的时间跨度更频繁,因此我无法根据原始数据执行此操作(根据docs,“ [计划]间隔与以下项的合计函数间隔匹配检查查询”。但是我认为我可以使用“任务”将数据转换成可以使用的形式。
我能够通过通量查询以希望的方式聚合数据,甚至将最终的滚动计数保存到仪表板。
from(bucket: "myBucket")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
(r._measurement == "measurementA"))
|> filter(fn: (r) =>
(r._field == "booleanAttributeX"))
|> window(
every: 15m,
period: 3h,
timeColumn: "_time",
startColumn: "_start",
stopColumn: "_stop",
createEmpty: true,
)
|> count()
|> yield(name: "count")
|> to(bucket: "myBucket", org: "myOrg")
导致以下散点图。
我希望我可以将其复制粘贴为新任务,并获得不错的新聚合数据集。解决了几个明显的语法错误后,我决定使用以下任务定义:
option v = {timeRangeStart: -12h, timeRangeStop: now()}
option task = {name: "blech", every: 15m}
from(bucket: "myBucket")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
(r._measurement == "measurementA"))
|> filter(fn: (r) =>
(r._field == "booleanAttributeX"))
|> window(
every: 15m,
period: 3h,
timeColumn: "_time",
startColumn: "_start",
stopColumn: "_stop",
createEmpty: true,
)
|> count()
|> yield(name: "count")
|> to(bucket: "myBucket", org: "myOrg")
不幸的是,我陷入了一个找不到任何地方提及的错误:could not execute task run; Err: no time column detected: no time column detected
。
如果您能帮助我调试此任务运行错误,或者通过以其他方式完成此任务来回避它,我将非常感谢。
[我知道我来晚了,但是to
函数需要一个_time
列,但是您要添加的count
集合返回一个_start
和_stop
列以指示计数的时间范围,而不是_time
。
您可以通过在|> duplicate(column: "_stop", as: "_time")
功能之前添加to
或利用为您处理的aggregateWindow
功能来解决此问题。
|> aggregateWindow(every: 15m, fn: count)
参考:
https://v2.docs.influxdata.com/v2.0/reference/flux/stdlib/built-in/transformations/aggregates/count
https://v2.docs.influxdata.com/v2.0/reference/flux/stdlib/built-in/transformations/duplicate/