2

我正在寻找是否可以total number of event count for the current one hr intervaltotal number of event count with the previous one hour intervalis lessRiemann

我不确定我们是否可以存储该值并将其与当前事件值进行比较,因为我了解到事件将由于TTLRiemann 中的选项而过期。

如果我错了,请纠正我,并建议我参考代码来实现它Riemann

提前致谢

4

1 回答 1

1

听起来您想要一个小时内计数的变化率,然后确定该速率是否为负?正如您所描述的那样,一种方法是:

(fold-interval-metric 3600 folds/count                        
   (fixed-event-window 2
    (smap folds/difference
          (where (neg? (:metric event))
                 email))))

这是有道理的。您可能会发现,如果您使用内置的时间导数函数ddt并将其绘制成图表,您可以在更短的时间范围内发现这些问题。如果您的成功率在一小时的第三分钟降至零,那么 57 分钟是计算机在呼叫人类寻求帮助之前等待的很长一段时间。如果 15 分钟内的变化率接近负无穷大,那么您的服务很可能刚刚停止。

我喜欢包裹ddt在指数加权移动平均线中ewma,因此尖峰不会引发警报,并且这种模式的误报率极低:

(ewma 30 (ddt ...your stuff here...))

我经常想比较对服务的请求率与这种模式的响应,该模式使用ewma ddtand project

 (pipe ↲ (splitp = service
               "service:input" (ewma 30 ↲)
               "service:output" (ewma 30 ↲)
               bit-bucket) ;; throw out other services here
     (project [(service "service:input")
               (service "service:output")]
              (smap folds/quotient-sloppy
                    (with :service "service-ratio-rate-of-change"
                          (ddt ...your streams here...)))))

如果请求不频繁,您将需要在所有这些示例中使用间隔,以确保警报不会在事件之间响起。如果您的事件不频繁,您可能还需要将事件的 :ttl 设置得足够高,以使它们在您聚合它们时不会过期。

ps:↲可以是你想要的任何符号,我只是选择了那个unicode字符。
pss:如果您仔细考虑这些事情,每季度一次警报的误报率应该是合理的。

于 2016-08-19T22:28:15.333 回答