Kapacitor- Handle Alert标准基于全局状态和循环窗口,带有每5秒触发一次的计时器,并发出数据

时间:2019-08-09 21:22:21

标签: kapacitor

我的刻度文件:

    dbrp "xxxxxz"."autogen"

stream
    // Select just the cpu measurement from our example database.
    |from()
        .measurement('stream_periodic_stats__agg')
        .where(lambda: "__agg_period" == '5s')
    |groupBy('__agg_group_by')
    |window()
        .period(1m)
        .every(5s)
        .align()
    |alert()
        .crit(lambda: int("event__count") <  200)
        .message('value for tag {{ index .Tags "component_name" }} field event__count:{{ index .Fields "event__count" }} is < 200')
        // Whenever we get an alert write it to a file.
        .log('/kapacitor/logs/alerts.log')
    |httpOut('dump')
    |influxDBOut()
            .database('xxxxxxxz')
            .measurement('alert_output')

我需要在全局状态更改上实现以下警报逻辑: 对于每1分钟的窗口间隔以及12个周期性输出(.every(5s)), 如果在该窗口的12个周期中的3个周期中有3个满足条件,请设置全局变量ALERT_BAD_STATE(如果尚未设置为TRUE)。 如果在该窗口的12个周期中的12个周期中有12个满足条件,请设置全局变量ALERT_BAD_STATE(如果尚未设置为FALSE)。

仅在状态更改时设置ALERT_BAD_STATE的警报,并且仅在有数据输入时才设置(??)。 详细信息:

|window
    .period: 1m
    .every(5s)
    .align()

从开始时间(?或Kapacitor启动?)开始每隔1分钟(12个周期)

触发条件:

BAD状态:如果存在测量变量(output_fps__count),并且<29。如果在3/12周期内条件为TRUE(如何?),则全局变量ALERT_BAD_STATE设置为ON / true。

良好状态:如果存在测量变量(output_fps__count)且> =30。如果在12/12周期内条件为TRUE,则全局变量ALERT_BAD_STATE设置为OFF / false。

我该怎么办,因为我必须在1分钟窗口的12个间隔中的每个间隔之间保持状态?

我必须针对每个随后的1分钟窗口(每个间隔5秒的12个间隔)再次重做一次。

TIA,

0 个答案:

没有答案