黎曼 - 基于度量阈值的触发解析
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)))
我正在尝试根据指标的阈值在 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)))