如何在滚动窗口上“检查”(警告)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 以创建模板变量

如何查看webpack警告

磁盘上的 InfluxDB 存储大小

Python InfluxDB2 - write_api.write(...) 如何检查是不是成功?

如何使用 JQuery $.scrollTo() 函数滚动窗口

如何解决此错误“警告:尝试呈现其视图不在窗口层次结构中”?