пользовательский конфиг для римана

Я новичок в 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". но никогда потом. подскажите где я не так делаю.?


person Muneeb Nasir    schedule 07.04.2014    source источник


Ответы (1)


Проблема заключается в том, что вы используете ключевые слова в выражении where. Функция where переписывает условия для использования ключевых слов внутри, хотя это поведение явно не указано за пределами документация по API. Если вы посмотрите на пример в инструкции, условия, в которых выражения не имеют двоеточий по именам полей.

Я протестировал следующую конфигурацию:

(where (and (service "foo")
    (state "ok"))
    prn)
person user1013341    schedule 11.04.2014