简体   繁体   English

黎曼夸大了最近10分钟的事件和警报错误。 哪个使用移动时间窗口

[英]Riemann aggerate some last 10 minutes event and alert error. Which use moving-time-window

For example, If we want to send the mean data of last 10 minutes alert freezhan if the mean of metric is more than 1000, I express the idea in riemann like this: 例如,如果度量标准的平均值大于1000,如果我们想发送最近10分钟警报freezhan的平均值数据,则我用riemann表示这样的想法:

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

But get some error like this: 但是会出现如下错误:

INFO [2016-06-01 18:26:49,002] SIGHUP handler - riemann.pubsub - Sweeping transient subscriptions. INFO [2016-06-01 18:26:49,002] SIGHUP处理程序-riemann.pubsub-清除临时订阅。 ERROR [2016-06-01 18:26:49,069] SIGHUP handler - riemann.bin - Couldn't reload: java.lang.IllegalArgumentException: Don't know how to create ISeq from: riemann.config$eval2171$stream__2172, compiling:(/etc/riemann/riemann.config:51:38) at clojure.lang.Compiler.load(Compiler.java:7142) at clojure.lang.Compiler.loadFile(Compiler.java:7086) at clojure.lang.RT$3.invoke(RT.java:318) at riemann.config$include.invoke(config.clj:408) at riemann.bin$reload_BANG_.invoke(bin.clj:27) at riemann.bin$handle_signals$fn__11886.invoke(bin.clj:43) at riemann.bin.proxy$java.lang.Object$SignalHandler$d8c00ec7.handle(Unknown Source) at sun.misc.Signal$1.run(Signal.java:212) at java.lang.Thread.run(Thread.java:745) Caused by: java.lang.IllegalArgumentException: Don't know how to create ISeq from: riemann.config$eval2171$stream__2172 at clojure.lang.RT.seqFrom(RT.java:505) at clojure.lang.RT.seq(RT.java:486) at clojure.core$seq.invoke(core.clj:133) at clojure.core$filter$fn__4264.invoke(core.clj:2595) at clo 错误[2016-06-01 18:26:49,069] SIGHUP处理程序-riemann.bin-无法重新加载:java.lang.IllegalArgumentException:不知道如何从以下位置创建ISeq:riemann.config $ eval2171 $ stream__2172,正在编译:(/etc/riemann/riemann.config:51:38)在clojure.lang.Compiler.load(Compiler.java:7142)在clojure.lang.Compiler.loadFile(Compiler.java:7086)在clojure.lang。 riemann.config $ include.invoke(config.clj:408)处riemann.bin $ reload_BANG_.invoke(bin.clj:27)处riemann.bin $ handle_signals $ fn__11886处的RT $ 3.invoke(RT.java:318)。 riemann.bin.proxy $ java.lang.Object $ SignalHandler $ d8c00ec7.handle处的invoke(bin.clj:43)sun.misc.Signal $ 1.run(Signal.java:212)处的invoke(bin.clj:43) .Thread.run(Thread.java:745)原因:java.lang.IllegalArgumentException:不知道如何从clojure.lang.RT.seqFrom(RT.java:上的riemann.config $ eval2171 $ stream__2172创建ISeq。 505)在clojure.lang.RT.seq(RT.java:486)在clojure.core $ seq.invoke(core.clj:133)在clojure.core $ filter $ fn__4264.invoke(core.clj:2595)在克洛 jure.lang.LazySeq.sval(LazySeq.java:40) at clojure.lang.LazySeq.seq(LazySeq.java:49) at clojure.lang.RT.seq(RT.java:484) at clojure.core$seq.invoke(core.clj:133) at clojure.core$sort.invoke(core.clj:2827) at clojure.core$sort_by.invoke(core.clj:2844) at clojure.core$sort_by.invoke(core.clj:2842) at riemann.folds$sorted_sample_extract.invoke(folds.clj:22) at riemann.folds$median.invoke(folds.clj:169) at riemann.config$eval2171.invoke(riemann.config:58) at clojure.lang.Compiler.eval(Compiler.java:6703) at clojure.lang.Compiler.load(Compiler.java:7130) ... 8 more 位于clojure.lang.LazySeq.seq(LazySeq.java:49)的jure.lang.LazySeq.sval(LazySeq.java:40)位于clojure.core $ seq的clojure.lang.RT.seq(RT.java:484) clojure.core $ sort.invoke(core.clj:2827)位于clojure.core $ sort_by.invoke(core.clj:2844)位于clojure.core $ sort_by.invoke(core。 clj:2842)at riemann.folds $ sorted_sample_extract.invoke(folds.clj:22)at riemann.folds $ median.invoke(folds.clj:169)at riemann.config $ eval2171.invoke(riemann.config:58)at clojure.lang.Compiler.load(Compiler.java:7130)的clojure.lang.Compiler.eval(Compiler.java:6703)...还有8个

Don't know how to create ISeq from: riemann.config$eval2171$stream__2172 不知道如何从以下位置创建ISeq:riemann.config $ eval2171 $ stream__2172

This indicates some sort of type error, some code expects stuff that implements the ISeq protocol, but something else is passed. 这表示某种类型的错误,某些代码期望实现ISeq协议的东西,但传递了其他东西。 So lets dig down: 因此,让我们深入了解一下:

moving-time-window : 移动时间窗口

Every time a new event arrives within the window, emits a vector of events in the window to children. 每当新事件到达窗口时,就会向孩子发出窗口中事件的向量

Vectors don't implement ISeq , so this is most likely the problem. 向量没有实现ISeq ,因此这很可能是问题所在。 Try wrapping the fold/mean function with smap : 尝试使用smap包装fold/mean函数:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM