0

我在 kapacitor 中有一个 tickscript,我使用窗口节点计算一系列测量以创建警报。在这种特定情况下,窗口为 30 分钟,每 1 分钟测量一次。这实际上做的是缓存 30 个测量值并通过管道传输到下一个节点。

警报按预期创建,但我想将警报存储在 influxdb 中,这会导致 30 个重复,每个缓存测量一个。如何删除以便只有一个警报存储到 influxdb?

var data = stream
    |from()
        .measurement(measurement)
        .groupBy(groupBy)
        .where(whereFilter)
    |log()
    |window()
        .period(period)
        .every(every)
        .align()
    |log()
    |stateCount(stateCountExpr)
        .as('value')
    |log()

var trigger = data
    |alert()
        .category(category)
        .info(info)
        .warn(warn)
        .crit(crit)
        .message(message)
        .details(details)
        .id(idVar)
        .idTag(idTag)
        .levelTag(levelTag)
        .messageField(messageField)
        .durationField(durationField)
        .stateChangesOnly()
        .topic(topic)

trigger
    |eval(lambda: float("value"))
        .as('value')
        .keep()
    |log()
    |influxDBOut()
        .create()
        .database(outputDB)
        .retentionPolicy(outputRP)
        .measurement(outputMeasurement)
        .tag('alertName', name)
        .tag('triggerType', triggerType)
4

0 回答 0