【问题标题】:How to create Influxdb alert for deviating from average hourly values?如何为偏离平均每小时值创建 Influxdb 警报?
【发布时间】:2020-10-26 07:50:17
【问题描述】:

因此,我正在尝试查找有关更复杂的 Flux 查询的任何文档,但经过几天的搜索,我仍然迷路了。我希望能够计算一周中每个小时的平均值,然后当新数据进来时,我想检查它是否偏离了那个小时的 x 个标准偏差。

基本上,我希望有 24x7 数组字段,每个字段代表过去 1 年一周中每个小时的平均值/中值。然后我想将每个小时的最后几天值与这些平均值进行比较并报告错误。我不明白如何计算这些平均值。是否有一些关于 Flux 的隐藏的大量文档?

我真的不需要一个完整的解决方案,只要有一个方向就好了。比如,在标准库或其他东西中是否有一些实用功能

编辑:经过一番阅读,看起来我需要做的就是使用 window 和 aggregateWindow 函数,但我还没有找到确切的方法

【问题讨论】:

    标签: influxdb influxdb-2 flux-influxdb


    【解决方案1】:

    好的,所以,这对我有用。需要进行一些清理,但可以成功地将每小时+工作日分组的值以及所有值的平均值

    import "date"
    tab1 = from(bucket: "qweqwe")
      |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
      |> filter(fn: (r) => r["_measurement"] == "asdasd")
      |> filter(fn: (r) => r["_field"] == "reach")
      |> aggregateWindow(every: 1h, fn: mean, createEmpty: false)
    
    
    mapped = tab1 
      |> map(fn: (r) => ({ r with wd: string(v: date.weekDay(t: r._time)), h: string(v: date.hour(t: r._time)) }))
      |> map(fn: (r) => ({ r with mapped_time: r.wd + " " + r.h }))
    
    grouped = mapped
      |> group(columns: ["mapped_time"], mode: "by")
      |> mean()
      |> group() 
      |> toInt()
    
      |> yield()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多