我正在尝试根据指标的阈值在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))))
(我只显示了相关的代码位)
我看到如果违反了阈值,此代码不会创建新事件。
我不确定我是否犯了错误。任何帮助将不胜感激。
此致
沙迪亚
答案 0 :(得分:1)
听起来你有两个问题:
对于第一个,您的代码看起来正确,它应该索引事件。您可能希望在其中放置: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)))