Monitoring 统计数据窗口中的峰值,kapacitor
我想在5分钟的时间内计算磁盘使用的峰值。 我不熟悉tick脚本和kapacitor。这是示例代码。问题是我只想在活动窗口中计数(而不是发出的2分钟窗口,即使它有一些数据点) Q: 如何计算5分钟内的峰值光盘使用量 A: 当您指定Monitoring 统计数据窗口中的峰值,kapacitor,monitoring,influxdb,kapacitor,Monitoring,Influxdb,Kapacitor,我想在5分钟的时间内计算磁盘使用的峰值。 我不熟悉tick脚本和kapacitor。这是示例代码。问题是我只想在活动窗口中计数(而不是发出的2分钟窗口,即使它有一些数据点) Q: 如何计算5分钟内的峰值光盘使用量 A: 当您指定period=5m和every=2m时,Kapacitor将缓冲5分钟的点数据,并尝试每2分钟将其写入管道 因此,如果stream任务持续10m,您会发现您的勾号脚本将总共执行5次 对于每个执行窗口,数据集将由较旧数据的3m和较新数据的2m组成。本质上,它们是重叠的,这是
period=5m
和every=2m
时,Kapacitor将缓冲5分钟的点数据,并尝试每2分钟将其写入管道
因此,如果stream
任务持续10m
,您会发现您的勾号脚本将总共执行5次
对于每个执行窗口,数据集将由较旧数据的3m
和较新数据的2m
组成。本质上,它们是重叠的,这是不好的,因为这里的用例只是分析最新的5m
点数据,并在需要时发出警报,而不是回顾旧数据。换句话说,你不想被错误的警报所骚扰
要更正它,您需要为窗口
节点指定.period=5m
和.every=5m
。这样做,你会发现滴答声会在10分钟内运行两次,每次运行包含最近5分钟的数据
让我知道这是否有帮助 你最初的问题不清楚。那么,我想说的是,您只想考虑每个窗口的<代码>峰值< /代码>数据吗?比如,我的报警阈值=5;在前5分钟的窗口中,我在最后1分钟有2个峰值。在下一个窗口中,我在前2分钟有4个峰值。如果我设置every=5,我将丢弃最后一分钟的2个峰值,以及相对5分钟的报警阈值(最后1分钟2+当前2分钟4,总共6)。这就是为什么我每2分钟给出一次。好的,我看到你的问题了。看起来您的数据是以30秒的间隔采样的。也许你的频率或每个都应该设置为30,这样你就不会错过任何东西。不利的一面是,你可能会收到垃圾邮件的警报,它不断点击peak
。你认为这有用吗?我的目标是,我不会对一个扣球发出警报,但对于计数,在窗口中说5。是的。如果你有every=30s
和period=5m
你的5分钟窗口将以30s
的间隔移动,这样你就不会错过任何东西。问题是,如果你发出警报,接下来的30秒也是峰值。您基本上会收到两个警报,并且会一直发出警报,直到下一个示例为非峰值
。这就是我说你会被垃圾邮件的原因
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')