早上好。
最近几天我一直在使用 bosun 监控应用程序,我非常喜欢它。但我需要一件我无法解决的事情。
我希望有 1 个警报响应不同,具体取决于它的时间。因此,白天每小时登录我的网站的次数需要为 100 次,夜间需要为 10 次。当它低于该值时,我想创建一个警报。
如果我使用 2 个警报来执行此操作,则白天警报将在晚上关闭。因此,我需要进行查找以检查现在是什么时间,然后给出正确的阈值。
任何人都知道该怎么做。
马塞尔·科尔特
早上好。
最近几天我一直在使用 bosun 监控应用程序,我非常喜欢它。但我需要一件我无法解决的事情。
我希望有 1 个警报响应不同,具体取决于它的时间。因此,白天每小时登录我的网站的次数需要为 100 次,夜间需要为 10 次。当它低于该值时,我想创建一个警报。
如果我使用 2 个警报来执行此操作,则白天警报将在晚上关闭。因此,我需要进行查找以检查现在是什么时间,然后给出正确的阈值。
任何人都知道该怎么做。
马塞尔·科尔特
Bosun没有这个功能。我已经考虑过了,但从来没有向我展示过必要的用例。为什么?
我考虑过两种一般情况:
为了处理这种情况,我们使用异常警报。这实际上是在说“这不是过去几周每周同一时间的情况,请发送警报”。其关键功能是波段功能。这是示例页面中执行此操作的示例:
alert slower.route.performance {
template = route.performance
$notes = Response time is based on HAProxy's Tr Value. This is the web server response time (time elapsed between the moment the TCP connection was established to the web server and the moment it send its complete response header
$duration = "1d"
$route=*
$metric = "sum:10m-avg:haproxy.logs.route_tr_median{route=$route}"
$route_hit_metric = "sum:10m-avg:rate{counter,,1}:haproxy.logs.hits_by_route{route=$route}"
$total_hit_metric = "sum:10m-avg:rate{counter,,1}:haproxy.logs.hits_by_route"
$route_hits = change($route_hit_metric, $duration, "")
$total_hits = change($total_hit_metric, $duration, "")
$hit_percent = $route_hits / $total_hits * 100
$current_hitcount = len(q($metric, $duration, ""))
$period = "7d"
$lookback = 4
$history = band($metric, $duration, $period, $lookback)
$past_dev = dev($history)
$past_median = percentile($history, .5)
$current_median = percentile(q($metric, $duration, ""), .5)
$diff = $current_median - $past_median
warn = $current_median > ($past_median + $past_dev*2) && abs($diff) > 10 && $hit_percent > 1
warnNotification = default
ignoreUnknown = true
}
希望这条路径能解决您的警报需求吗?
使用该epoch()
功能,您可以确定它是一天中的什么时间。每天只需修改epoch()
86400 秒,相对于当天的秒数。将其与您希望窗口开始和结束的 UTC 时间的开始和结束秒数进行比较。
如果评估警报的时间在 UTC 08:00 到 03:00 之间,则此宏将 $during_business_hours 设置为 true。
macro business_hours {
$time = epoch() % 86400
$start = 8 * 3600
$end = 3 * 3600
$during_business_hours = $time >= $start || $time <= $end
}