在给定的时间窗口内计算黎曼事件

时间:2015-07-24 23:19:35

标签: clojure riemann

在针对特定服务的riemann配置中,我试图将其所有事件指定为metric = 1,在5秒内将它们相加并将结果发送到Influxdb。

我尝试了以下内容:

data <- data[-(10000:20000),]

它确实不起作用,存储在涌入的事件与此规则不匹配。

2 个答案:

答案 0 :(得分:2)

内置的folds/count函数执行此操作:

(fixed-time-window 5
  (smap folds/count influx))            

对涌入的调用也需要是进行计数的流的子节点,因此它是被索引的计数。

如果您想使用folds/sum修复示例,可以将调用移至(with :metric 1)外部或上游调用sum,以便将指标设置为1,然后新指标为总结在folds/sum的电话中。然后将对index和/ flow的调用作为smap的子流进行调用,以便将求和的项目编入索引并转发。

答案 1 :(得分:1)

添加Arthur的答案,您可能希望使用rate(使用scale)代替fixed-time-windowsmapfolds/count)。 rate通常优于fixed-time-window,因为rate会在时间窗口结束后立即触发,而fixed-time-window必须等到时间窗口结束后新事件到达,这在将来永远不会发生或发生太远。关于这个问题,有一个issue in riemann

还有comment from aphyr解释为什么rate比窗口函数更有效。

您只需要将其与scale一起使用,因为rate会在您想要获得5秒的速率(在5秒间隔内测量)时测量速率。