Clojure 计算给定时间窗口中的riemann事件数

Clojure 计算给定时间窗口中的riemann事件数,clojure,riemann,Clojure,Riemann,在特定服务的riemann配置中,我试图分配给它的所有事件metric=1,在5秒内求和,并将结果发送给XDB 我尝试了以下方法: (streams (where (service "offers") (fixed-time-window 5 (smap folds/sum (with :metric 1 index)))) influx) 它实际上不起作用,inflow中存储的事件与此规则不匹配。内置的folds/count函数执行以下操作: (fixed-tim

在特定服务的riemann配置中,我试图分配给它的所有事件metric=1,在5秒内求和,并将结果发送给XDB

我尝试了以下方法:

(streams
  (where (service "offers")
    (fixed-time-window 5
      (smap folds/sum (with :metric 1 index))))
  influx)

它实际上不起作用,inflow中存储的事件与此规则不匹配。

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

(fixed-time-window 5
  (smap folds/count influx))            
此外,对inflow的调用需要是进行计数的流的子流,因此要对计数进行索引


如果要使用
folds/sum
修复示例,可以将调用移动到
(使用:metric 1)
调用的外部或上游,以便将度量设置为1,然后在调用
folds/sum
时对新度量进行求和。然后将对index和/或INFLOW的调用作为smap的子流,以便对汇总的项目进行索引和转发。

在Arthur的回答中,您可能希望使用(with)而不是
固定时间窗口(with
smap
折叠/计数
rate
通常比
fixed time window
好,因为
rate
在时间窗结束后立即触发,而
fixed time window
必须等到时间窗结束后新事件到来,这在将来永远不会发生或发生得太远。关于这件事,有一个很好的解释

这里还解释了为什么
rate
比窗口功能更有效


您只需将其与
刻度一起使用
,因为
速率
将以秒为单位测量速率,而您希望以5秒为单位获得速率(在5秒间隔内测量)。

谢谢您的建议。你的意思是
(速率5(刻度5流入))
?我很困惑。仍然无法使用比例以速率计算事件。我有可变的度量值,我试图以10的速率计算度量的平均值。