0

我也是 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”。但之后再也没有。告诉我我在哪里做错了。?

4

1 回答 1

1

问题似乎是您在 where 表达式中使用关键字。where 函数将重写条件以在内部使用关键字,尽管这种行为似乎在API 文档之外没有明确说明。如果您查看howto中的示例,其中表达式在字段名称上没有冒号的条件。

我已经测试了以下配置:

(where (and (service "foo")
    (state "ok"))
    prn)
于 2014-04-11T22:17:43.113 回答