riemann的自定义配置

时间:2014-04-07 12:48:15

标签: clojure riemann

我也是riemann和clojure的新手。想要的是,当新事件进入时,它会检查其状态和服务,如果两者都匹配,它会在控制台中打印一些东西。这是我的配置文件。

(let [index (default :ttl 300 (update-index (index)))]

  ; Inbound events will be passed to these streams:
  (streams

    ; Index all events immediately.
    index

    ; Calculate an overall rate of events.
    (with {:metric 1 :host nil :state "ok" :service "events/sec"}
      (rate 5 index))
      ; my code starts from here 
      ; _______________________
    (where (and (= :service "foo")
        (= :state "ok"))
    (println "It works"))
;________ENDS HERE ______________
    ; Log expired events.
    (expired
      (fn [event] (info "expired" event)))
))

当我启动riemann时,我可以在控制台中看到“It Works”。但从来没有。 告诉我我在哪里做错了。?

1 个答案:

答案 0 :(得分:1)

问题在于您在where表达式中使用关键字。 where函数将重写内部使用关键字的条件,但这种行为似乎没有在API documentation之外明确说明。如果你看一下the howto中的例子,表达式在字段名称上没有冒号的条件。

我测试了以下配置:

(where (and (service "foo")
    (state "ok"))
    prn)