如何在滚动窗口上“检查”(警告)InfluxDB 2.0 中的聚合?
Posted
技术标签:
【中文标题】如何在滚动窗口上“检查”(警告)InfluxDB 2.0 中的聚合?【英文标题】:How do I "check" (alert on) an aggregate in InfluxDB 2.0 over a rolling window? 【发布时间】:2020-04-21 14:47:00 【问题描述】:我想在评估检查之前的 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
。
如果你能帮我调试这个任务运行错误,或者通过其他方式完成这个任务来避开它,我将非常感激。
【问题讨论】:
【参考方案1】:我知道我来晚了,但 to
函数需要一个 _time
列,但您添加的 count
聚合返回一个 _start
和 _stop
列来指示时间范围计数,而不是_time
。
您可以通过在 to
函数之前添加 |> duplicate(column: "_stop", as: "_time")
或利用为您处理此问题的 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/
https://v2.docs.influxdata.com/v2.0/reference/flux/stdlib/built-in/transformations/aggregates/aggregatewindow/
【讨论】:
以上是关于如何在滚动窗口上“检查”(警告)InfluxDB 2.0 中的聚合?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 grafana 仪表板中查询 influxdb 以创建模板变量
Python InfluxDB2 - write_api.write(...) 如何检查是不是成功?