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

Riemann - trigger resolve based on metric threshold

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

我的步骤是: 1) 如果超过阈值,则创建状态为 "warning" 的事件 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))))

(我只展示了相关的代码)

我看到如果超过阈值,此代码不会创建新事件。

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

此致,

沙迪亚

听起来你有两个问题:

  • 为什么当指标大于 100 时事件没有进入索引
  • 我应该在哪里调用来创建和解决 PD 警报。

关于第一个,你的代码看起来是正确的,它应该是索引事件。您可能想在其中放置一个 :ttl,以便事件在正确的时间过期。和 :host 密钥也是很好的衡量标准。一般来说,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)))