Last active
August 29, 2015 13:57
-
-
Save xeago/9881610 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/src/spotify/rules/cia.clj b/src/spotify/rules/cia.clj | |
index 896c1b2..529a5c1 100644 | |
--- a/src/spotify/rules/cia.clj | |
+++ b/src/spotify/rules/cia.clj | |
@@ -76,20 +76,14 @@ | |
((split | |
(trigger-predicate events) | |
(smap peek #(prn "crit: " %) (with :state "critical" s)) | |
(and (not @state-ok) (cancel-predicate events)) | |
(smap peek #(prn "trig: " %) (with :state "critical" s)) | |
(smap peek #(prn "reso: " %) (with :state "ok" s))) events))))) | |
-(defmacro fraction-predicate | |
- [fraction, state] | |
- (fn [events] | |
- (let [f (/ (count (filter #(= (:state %) state) events)) (count events))] | |
- (>= f fraction)))) | |
- | |
(defn ratio-calc | |
[events] | |
(let [ratio | |
(/ (count (filter #(= "critical" (:state %)) events)) | |
(count events))] | |
(assoc (last events) :metric ratio))) | |
@@ -130,10 +124,14 @@ | |
(where (service #"^git-clone-status/.*") | |
;; Raise an alarm if during the last 300s, | |
;; greater than 75/100 has state "critical" | |
;; Will not split by host, | |
;; still splits by pod (out of our control) | |
(by [:service] | |
(moving-trigger-fraction-trigger 300 | |
- (fraction-predicate 75/100 "critical") | |
- (fraction-predicate 75/100 "ok") | |
+ (fn [events] | |
+ (let [fraction (/ (count (filter #(= (:state %) "critical") events)) (count events))] | |
+ (>= fraction 75/100))) | |
+ (fn [events] | |
+ (let [fraction (/ (count (filter #(= (:state %) "ok") events)) (count events))] | |
+ (>= fraction 75/100))) | |
alert-stream))))) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Exception in thread "main" java.lang.ExceptionInInitializerError | |
at spotify.rules.cia$rules.invoke(cia.clj:122) | |
at clojure.lang.Var.invoke(Var.java:415) | |
at lyceum.core$rules_for_ns.invoke(core.clj:57) | |
at spotify.rules.cia_test$eval225$fn__226.invoke(cia_test.clj:6) | |
at clojure.test$compose_fixtures$fn__7139$fn__7140.invoke(test.clj:678) | |
at clojure.test$default_fixture.invoke(test.clj:671) | |
at clojure.test$compose_fixtures$fn__7139.invoke(test.clj:678) | |
at clojure.test$test_all_vars$fn__7149.invoke(test.clj:717) | |
at clojure.test$default_fixture.invoke(test.clj:671) | |
at clojure.test$test_all_vars.invoke(test.clj:713) | |
at clojure.test$test_ns.invoke(test.clj:736) | |
at clojure.core$map$fn__4207.invoke(core.clj:2487) | |
at clojure.lang.LazySeq.sval(LazySeq.java:42) | |
at clojure.lang.LazySeq.seq(LazySeq.java:60) | |
at clojure.lang.Cons.next(Cons.java:39) | |
at clojure.lang.RT.boundedLength(RT.java:1654) | |
at clojure.lang.RestFn.applyTo(RestFn.java:130) | |
at clojure.core$apply.invoke(core.clj:619) | |
at clojure.test$run_tests.doInvoke(test.clj:751) | |
at clojure.lang.RestFn.applyTo(RestFn.java:137) | |
at clojure.core$apply.invoke(core.clj:617) | |
at user$eval94$fn__149$fn__180.invoke(NO_SOURCE_FILE) | |
at user$eval94$fn__149$fn__150.invoke(NO_SOURCE_FILE:0) | |
at user$eval94$fn__149.invoke(NO_SOURCE_FILE:0) | |
at user$eval94.invoke(NO_SOURCE_FILE:0) | |
at clojure.lang.Compiler.eval(Compiler.java:6619) | |
at clojure.lang.Compiler.eval(Compiler.java:6609) | |
at clojure.lang.Compiler.eval(Compiler.java:6582) | |
at clojure.core$eval.invoke(core.clj:2852) | |
at leiningen.core.eval$fn__1437.invoke(eval.clj:284) | |
at clojure.lang.MultiFn.invoke(MultiFn.java:231) | |
at leiningen.core.eval$eval_in_project.invoke(eval.clj:306) | |
at leiningen.test$test.doInvoke(test.clj:196) | |
at clojure.lang.RestFn.invoke(RestFn.java:423) | |
at clojure.lang.Var.invoke(Var.java:419) | |
at clojure.lang.AFn.applyToHelper(AFn.java:163) | |
at clojure.lang.Var.applyTo(Var.java:532) | |
at clojure.core$apply.invoke(core.clj:619) | |
at leiningen.core.main$resolve_task$fn__1269.doInvoke(main.clj:151) | |
at clojure.lang.RestFn.applyTo(RestFn.java:139) | |
at clojure.lang.AFunction$1.doInvoke(AFunction.java:29) | |
at clojure.lang.RestFn.applyTo(RestFn.java:137) | |
at clojure.core$apply.invoke(core.clj:619) | |
at leiningen.core.main$apply_task.invoke(main.clj:192) | |
at leiningen.core.main$resolve_and_apply.invoke(main.clj:196) | |
at leiningen.core.main$_main$fn__1332.invoke(main.clj:265) | |
at leiningen.core.main$_main.doInvoke(main.clj:252) | |
at clojure.lang.RestFn.invoke(RestFn.java:421) | |
at clojure.lang.Var.invoke(Var.java:419) | |
at clojure.lang.AFn.applyToHelper(AFn.java:163) | |
at clojure.lang.Var.applyTo(Var.java:532) | |
at clojure.core$apply.invoke(core.clj:617) | |
at clojure.main$main_opt.invoke(main.clj:335) | |
at clojure.main$main.doInvoke(main.clj:440) | |
at clojure.lang.RestFn.invoke(RestFn.java:457) | |
at clojure.lang.Var.invoke(Var.java:427) | |
at clojure.lang.AFn.applyToHelper(AFn.java:172) | |
at clojure.lang.Var.applyTo(Var.java:532) | |
at clojure.main.main(main.java:37) | |
Caused by: java.lang.IllegalArgumentException: No matching ctor found for class spotify.rules.cia$fraction_predicate$fn__1750 | |
at clojure.lang.Reflector.invokeConstructor(Reflector.java:163) | |
at clojure.lang.LispReader$EvalReader.invoke(LispReader.java:1053) | |
at clojure.lang.LispReader$DispatchReader.invoke(LispReader.java:626) | |
at clojure.lang.LispReader.read(LispReader.java:185) | |
at clojure.lang.RT.readString(RT.java:1738) | |
at spotify.rules.cia$rules$new_fork__9885__auto____2006.<clinit>(cia.clj:135) | |
... 59 more |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment