黎曼 - 基于度量阈值的触发器解析

时间:2015-02-04 10:10:47

标签: clojure riemann

我正在尝试根据指标的阈值在riemann(通过pagerduty)设置警报。如果违反阈值,则应触发警报,如果度量标准回到阈值内,则应解决警报。

我的步骤是: 1)如果违反了阈值,则创建一个状态为“警告”的事件 2)如果没有违反阈值,则创建状态为“ok”的事件

我的代码看起来像 -

(let [index (default :ttl 120 (index))]
   (streams
      index
      (where (service #"test")
         (where (>= metric 100)
            (smap (fn [e]
                    (event {:service (:service e) :metric (:metric e) 
                            :state "warning" }) 
               index))))

(我只显示了相关的代码位)

我看到如果违反了阈值,此代码不会创建新事件。

我不确定我是否犯了错误。任何帮助将不胜感激。

此致

沙迪亚

1 个答案:

答案 0 :(得分:1)

听起来你有两个问题:

  • 当度量标准大于100
  • 时,如果事件未进入索引的原因
  • 我应该在哪里拨打电话来创建和解决PD警报。

对于第一个,您的代码看起来正确,它应该索引事件。您可能希望在其中放置:ttl,以便事件在核心时间到期。和:主机密钥以及良好的衡量标准。一般来说,with函数看起来更容易完成同样的事情

对于第二个问题,粗略的轮廓看起来像这样:

(let [index (default :ttl 120 (index))]
   (streams
      index
      (where (service #"test")
         (where (>= metric 100)
           (with :state "warning"
             (rollup 2 3600 (create-pd-alert-here))))
         (where (< metric 50)
           (with :start "warning"
             (resolve-pd-alert-here)))