← All Exercises

Decide When an Alert Should Fire

intermediatejavascript~25min

Background

Alerts without a sustain window page on a single sample. Requiring consecutive breaches removes most single-point noise while keeping real incidents visible.

Problem

Evaluate a threshold rule over a metric series, requiring the threshold to be breached for a sustained number of consecutive minutes before firing.

Input

JSON object: { rule: { threshold, comparison, forMinutes }, series: [{ minute, value }] }

Output

JSON object: { firing: boolean, firstBreachMinute: number | null }

Sample tests

Sample 1

Input: {"rule":{"threshold":0.05,"comparison":"above","forMinutes":3},"series":[{"minute":1,"value":0.01},{"minute":2,"value":0.06},{"minute":3,"value":0.07},{"minute":4,"value":0.08}]}
Expected: {"firing":true,"firstBreachMinute":2}

Sample 2

Input: {"rule":{"threshold":0.05,"comparison":"above","forMinutes":3},"series":[{"minute":1,"value":0.06},{"minute":2,"value":0.04},{"minute":3,"value":0.06}]}
Expected: {"firing":false,"firstBreachMinute":null}

Your solution

Learning objective

Configure sustained-threshold alerts that page on trends rather than single samples.