Риман утрирует какое-то событие за последние 10 минут и предупредит об ошибке. Которые используют движущееся временное окно

Например, если мы хотим отправить средние данные за последние 10 минут, предупредите freezhan, если среднее значение метрики больше 1000, я выражаю идею в римане следующим образом:

(streams
  (moving-time-window 
    600 ; 600 sec = 10 min
    (folds/mean
    (where (> metric 1000)
      (email "[email protected]")))))

Но получить такую ​​​​ошибку:

INFO [2016-06-01 18:26:49,002] Обработчик SIGHUP — riemann.pubsub — очистка временных подписок. ОШИБКА [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. RT$3.invoke(RT.java:318) на riemann.config$include.invoke(config.clj:408) на riemann.bin$reload_BANG_.invoke(bin.clj:27) на riemann.bin$handle_signals$fn__11886. invoke(bin.clj:43) в riemann.bin.proxy$java.lang.Object$SignalHandler$d8c00ec7.handle(неизвестный источник) в sun.misc.Signal$1.run(Signal.java:212) в java.lang .Thread.run(Thread.java:745) Причина: java.lang.IllegalArgumentException: Не знаю, как создать ISeq из: riemann.config$eval2171$stream__2172 в clojure.lang.RT.seqFrom(RT.java: 505) на clojure.lang.RT.seq(RT.java:486) на clojure.core$seq.invok e(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.invoke(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.invoke(folds.clj:22) в riemann.folds$ median.invoke(folds.clj:169) на riemann.config$eval2171.invoke(riemann.config:58) на clojure.lang.Compiler.eval(Compiler.java:6703) на clojure.lang.Compiler.load(компилятор .java:7130) ... еще 8


person free斩    schedule 01.06.2016    source источник


Ответы (1)


Не знаю, как создать ISeq из: riemann.config$eval2171$stream__2172

Это указывает на какую-то ошибку типа, какой-то код ожидает что-то, что реализует протокол ISeq, но передается что-то еще. Итак, давайте копать:

движение-time-window:

Каждый раз, когда в окне появляется новое событие, отправляет вектор событий в окне дочерним элементам.

Векторы не реализуют ISeq, поэтому, скорее всего, проблема в этом. Попробуйте обернуть функцию fold/mean с помощью smap:

(streams
  (moving-time-window 
    600 ; 600 sec = 10 min
    (smap folds/mean
    (where (> metric 1000)
      (email "[email protected]")))))
person Erik Dannenberg    schedule 01.06.2016