// blog
Alert fatigue is not a discipline problem. It is a design problem, and it starts with tools that fire on a single reading.
· 5 min read
Every engineer has a muted alert channel. Not because they stopped caring about production, but because at some point the tool cost them more than it saved.
The failure is nearly always the same shape.
Most alerting fires the moment a threshold is crossed. CPU touches 95% during a deploy. A Lambda cold-starts and times out once. A health check misses because a load balancer was mid-rotation. Each of those crosses a line, and each is completely normal.
Fire on all of them and you have taught the person receiving them that your messages are usually wrong. That lesson is learned quickly and unlearned slowly.
The real failure mode of a monitoring tool is not missing an incident. It is being ignored when it finds one. Every false positive spends credibility you need later.
The fix is unglamorous: require repeated evidence. A signal should fail several times in a window before anything calls it broken, and recover the same way in reverse. This makes you slightly slower — a minute or two — and dramatically more trustworthy. For someone who cannot triage a false alarm during a customer call, that trade is obviously correct.
The second problem is structural. Say replica lag causes function errors which cause webhook failures. Your database tool alerts on lag. Your error tracker alerts on errors. Your payment provider emails about webhooks.
Three alerts. One event. No shared context, and nothing telling you which came first.
So you are woken up, and then you do the correlation yourself, at 3am, by opening three dashboards and comparing timestamps. That work is exactly what a computer is good at and humans are bad at while half asleep.
Anything watching more than one service should be evaluating them together and saying “these three degraded at once, and here is the one that failed first” — one message with the correlation already done.
The third problem is the sneakiest, and most tools do not solve it at all.
If your monitoring stops working, what happens? Usually nothing happens. That is the point. A dashboard full of green, an inbox with no alerts, and a stack that has been broken for six hours.
A monitor that is quiet because it is broken is worse than no monitor, because it manufactures confidence. Two things fix it: a regular heartbeat so quiet is affirmed rather than merely assumed, and an independent watcher on genuinely separate infrastructure — because a watchdog sharing a database with the thing it watches fails at exactly the moment it is needed.
None of that is novel. It is just unfashionable, because it makes for a worse demo than a wall of graphs. It happens to be what actually keeps a channel unmuted.
That is the argument Beaam is built on: how alerting decides is the whole product, and the dashboards are incidental.