【问题标题】:count peak values in a data window, kapacitor计算数据窗口中的峰值,kapacitor
【发布时间】:2017-07-19 06:43:39
【问题描述】:

我想统计 5 分钟内的磁盘使用高峰。 我是打勾脚本和kapacitor的新手。这是示例代码。问题是我只想计算活动窗口(不是发出的 2 分钟窗口,即使它有一些数据点)。

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')

【问题讨论】:

    标签: monitoring influxdb kapacitor


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

    • 您最初的问题不清楚。那么我是否正确地说您只想考虑每个窗口的peak 数据?
    • 说,我的报警阈值=5;在前 5 分钟窗口中,我在最后 1 分钟有 2 个峰值。在下一个窗口中,我在拳头 2 分钟内有 4 个峰值。如果我设置 every=5,我将丢弃最后一分钟的 2 个峰值,以及该相对 5 分钟的警报阈值(最后 1 分钟 2+ 当前 2 分钟 4,总共 6)。这就是为什么我每 2 分钟给一次。
    • 好的,我知道你的问题了。您的数据似乎以 30 秒的间隔进行采样。也许你的频率或every 应该设置为 30,这样你就不会错过任何东西。缺点是你可能会被它持续点击peak 的警报发送垃圾邮件。你认为这行得通吗?
    • 我的目标是,我不会针对单个峰值发出警报,而是针对计数,例如窗口中的 5 个。
    • 是的。如果您有every=30speriod=5m,您的5 分钟窗口将以30s 的间隔移动,这样您就不会错过任何内容。麻烦的是,如果您点击了alert,那么接下来的 30 秒也是一个高峰。您基本上会收到 2 个警报,并且它会一直出现,直到下一个样本是 non-peak。这就是为什么我说你会收到垃圾邮件
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-10
    • 2019-07-31
    • 1970-01-01
    • 2014-12-09
    相关资源
    最近更新 更多