计算数据 window 中的峰值,kapacitor

count peak values in a data window, kapacitor

我想计算 window 5 分钟内的峰值磁盘使用量。 我是 tick script 和 kapacitor 的新手。这是示例代码。问题是我只想计算活动 window(不是发出的 2 分钟 window,即使它有一些数据点)。

var curr = stream
|from()
    .measurement('disk_usage_root_used_percentage')
|window()
    .period(5m)
    .every(2m)
    .align()
// here i want the count to happen
|alert()
    .crit(lambda: "count" >5 )
    .log('/tmp/alerts.log')

问: 如何计算 5 分钟内 window 的峰值磁盘使用量?

答: 当您指定 period=5mevery=2m 时会发生什么,Kapacitor 将缓冲 5 分钟的点数据,并尝试每 2 分钟将其写入其管道。

因此,如果 stream 任务持续 10m,您会发现您的 TICK 脚本将总共执行 5 次。

对于每次执行 window,数据集将由 3m 的旧数据和 2m 的新数据组成。本质上它们是重叠的,这很糟糕,因为您在这里的用例是仅分析最新的 5m 点数据并在需要时发出警报,而不是回顾旧数据。换句话说,您不希望收到误报的垃圾邮件。

要更正它,您需要为 window 节点指定 .period=5m.every=5m。这样做你会发现 TICK 在 10 分钟后得到两次 运行,每次 运行 包含最近 5 分钟的数据。

如果这有帮助,请告诉我。