黎曼列举了一些最后10分钟的事件并提醒错误.使用移动时间窗口



例如,如果我们想发送最近10分钟的平均数据,如果度量的平均值超过1000,则提醒freezhan,我在riemann中这样表达这个想法:

(streams
(moving-time-window 
600 ; 600 sec = 10 min
(folds/mean
(where (> metric 1000)
(email "freezhan@mycompany.com")))))

但是会出现这样的错误:

INFO〔2016-06-01 18:26:49002〕SIGHUP处理程序-riemann.pub-清除临时订阅。错误〔2016-06-01 18:26:49069〕SIGHUP处理程序-riemann.bin-无法重新加载:java.lang.IllegalArgumentException:不知道如何从以下位置创建ISeq:riemann.config$eval2171$stream__2172,正在编译:(/etc/riemann/riemann.config:51:38)位于clojure.lang.Compiler.load(编译器.java:7142)位于clojure.lang.Compiler.loadFile(Compiler.java:7086)在clojure.lang.RT$3.ioke(RT.java:318)在riemann.config$include.uinvoke(config.clj:408)在riemann.bin$reload_BANG_.ioke(bin.clj:27)在riemann.bin$handle_signals$fn__11886.invoke(bin.clj:43)位于riemann.bin.proxy$java.lang.Object$SignalHandler$d8c00ec7.handle(未知源)在sun.mic.Signal$1.run(Signal.java:212)在java.lang.Thread.run(线程.java:745)引起原因:java.lang.IllegalArgumentException:不知道如何从:riemann.config$eval2171$stream__2172创建ISeq在clojure.lang.RT.seqFrom(RT.java:505)在clojure.lang.RT.seq(RT.java:486)位于clojure.core$seq.ioke(core.clj:133)位于clojure.core$filter$fn__4264.invoke(core.clj:2595)位于clojure.lang.LazySeq.sval(LazySeq.java:40)位于clojure.lang.LazySeq.seq(LazySeq.java:49)在clojure.lang.RT.seq(RT.java:484)位于clojure.core$seq.ioke(core.clj:133)位于clojure.core$sort.invoke(core.clj:2827)位于clojure.core$sort_by.invoke(core.clj:2844)位于clojure.core$sort_by.invoke(core.clj:2842)在riemann.folds$sorted_sample_extract.ioke(folds.clj:22)在riemann。folds$median.invoke(folds.clj:169)在riemann.config$eval22171.invoke(riemann.config:58)位于clojure.lang.Compiler.eval(Compiler.java:6703)位于clojure.lang.Compiler.load(Compiler.java:7130)…还有8个

不知道如何从:riemann.config$eval2171$stream__2172 创建ISeq

这表示某种类型的错误,某些代码需要实现ISeq协议的东西,但传递了其他东西。因此,让我们深入了解:

移动时间窗口:

每次新事件到达窗口内时,都会向子级发出窗口中事件的向量

Vectors不实现ISeq,所以这很可能是问题所在。尝试使用smap:包装fold/mean函数

(streams
(moving-time-window 
600 ; 600 sec = 10 min
(smap folds/mean
(where (> metric 1000)
(email "freezhan@mycompany.com")))))

最新更新