如何为偏离平均小时值创建 Influxdb 警报?
How to create Influxdb alert for deviating from average hourly values?
因此,我试图找到有关更复杂的 Flux 查询的任何文档,但经过几天的搜索后,我仍然迷路了。我希望能够计算一周中每个小时的平均值,然后当新数据进来时,我想检查它是否偏离那个小时的 x 标准差。
基本上我想要 24x7 数组字段,每个字段代表过去 1 年一周中每个小时的 mean/median 值。然后我想将每个小时的最后几天值与这些平均值进行比较并报告错误。我不明白如何计算这些平均值。是否有一些关于 Flux 的隐藏的大量文档?
我真的不需要完整的解决方案,只是一些指导就好了。比如,在标准库或其他什么地方有一些实用函数吗
编辑:经过一些阅读,看起来我需要做的就是使用 window 和 aggregateWindow 函数,但我还没有找到确切的方法
好的,所以,这对我有用。需要一些清理,但获得每小时+工作日成功分组的值和所有值的平均值
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()
因此,我试图找到有关更复杂的 Flux 查询的任何文档,但经过几天的搜索后,我仍然迷路了。我希望能够计算一周中每个小时的平均值,然后当新数据进来时,我想检查它是否偏离那个小时的 x 标准差。
基本上我想要 24x7 数组字段,每个字段代表过去 1 年一周中每个小时的 mean/median 值。然后我想将每个小时的最后几天值与这些平均值进行比较并报告错误。我不明白如何计算这些平均值。是否有一些关于 Flux 的隐藏的大量文档?
我真的不需要完整的解决方案,只是一些指导就好了。比如,在标准库或其他什么地方有一些实用函数吗
编辑:经过一些阅读,看起来我需要做的就是使用 window 和 aggregateWindow 函数,但我还没有找到确切的方法
好的,所以,这对我有用。需要一些清理,但获得每小时+工作日成功分组的值和所有值的平均值
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()