2016-06-01 22 views
0

Zum Beispiel, wenn wir die mittleren Daten von letzten 10 Minuten Alarm freezhan, wenn der Mittelwert der metrischen senden möchten mehr als 1000 ist, drücke ich die Idee in riemann wie folgt aus:Riemann aggregieren einige letzte 10 Minuten Event und Alarm Fehler. Welche verwenden moving-Zeitfenster

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

Aber einige Fehler wie diese:

INFO [2016.06.01 18: 26: 49.002] SIGHUP Handler - riemann.pubsub - Kehr vorübergehende Abonnements. FEHLER [2016-06-01 18: 26: 49,069] SIGHUP-Handler - riemann.bin - Konnte nicht neu laden: java.lang.IllegalArgumentException: Ich weiß nicht, wie man ISeq erstellt von: riemann.config $ eval2171 $ stream__2172 , kompilierend: (/ etc/riemann/riemann.config: 51: 38) bei clojure.lang.Compiler.load (Compiler.java:7142) bei clojure.lang.Compiler.loadFile (Compiler.java:7086) bei clojure.lang.RT $ 3.invoke (RT.java:318) bei riemann.config $ include.invoke (config.clj: 408) bei riemann.bin $ reload_BANG_.invoke (bin.clj: 27) bei riemann.bin $ handle_signals $ fn__11886.invoke (bin.clj: 43) bei riemann.bin.proxy $ java.lang.Object $ SignalHandler $ d8c00ec7.handle (Unbekannte Quelle) bei sun.misc.Signal $ 1.run (Signal.java:212) bei java.lang.Thread.run (Thread.java:745) Verursacht von: java.lang.IllegalArgumentException: Ich weiß nicht, wie man ISeq erstellt von: riemann.config $ eval2171 $ stream__2172 bei clojure.lang.RT .seqFrom (RT.java:505) bei clojure.lang.RT.seq (RT.java:486) bei clojure.core $ seq.invoke (core.clj: 133) bei clojure.core $ filter $ fn__4264 .invoke (core.clj: 2595) bei clojure.lang.LazySeq.sval (LazySeq.java:40) bei clojure.lang.LazySeq.seq (LazySeq.java:49) bei clojure.lang.RT.seq (RT.java:484) bei clojure.core $ seq.invoke (core.clj: 133) bei clojure.core $ sort.invoke (core.clj: 2827) bei clojure.core $ sort_by.invoke (core .clj: 2844) bei clojure.core $ sort_by.invoke (core.clj: 2842) bei riemann.folds $ sorted_sample_extract.invoke (folds.clj: 22) bei riemann.folds $ median.invoke (folds.clj: 169) at riemann.config $ eval2171.invoke (riemann.config: 58) bei clojure.lang.Compiler.eval (Compiler.java:6703) bei clojure.lang.Compiler.load (Compiler.java:7130) ... 8 weitere

Antwort

1

Sie wissen nicht, wie iseq aus zu erstellen: riemann.config eval2171 stream__2172

$ $

Dies weist auf eine Art von Typfehler hin, einige Code erwartet Dinge, die das ISeq Protokoll implementiert, aber etwas anderes wird übergeben. So läßt graben:

moving-time-window:

Jedes Mal, wenn ein neues Ereignis innerhalb des Fensters ankommt, sendet einen Vektor der Ereignisse im Fenster für Kinder.

Vektoren implementieren nicht ISeq, so ist dies wahrscheinlich das Problem.Versuchen Sie, die fold/mean-Funktion mit smap:

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