What's new in v2.4: alert deduplication and silencing, tail-based trace sampling, and stronger domestic storage and ARM support, plus upgrade steps and compatibility notes.
v2.4 rewrites alert deduplication. Previously the same alert would pester you on every recover-then-retrigger cycle. Now you get:
These three land as one feature because they solve the same problem from different angles: cutting the number of notifications a human has to read before finding the one that matters.
We previously only supported head-based sampling, where slow requests could be dropped at the entry. v2.4 adds tail-based sampling: the Collector buffers full traces and decides retention based on duration and error status after the trace completes. In testing at 30% sampling, slow-trace retention jumped from 18% to 92%. The tradeoff is Collector memory — budget 2–4GB per instance.
This matters most when you're trying to find the one slow request that caused a latency alert, only to discover your sampler discarded it at the front door. Tail-based sampling closes exactly that gap.
jjhub upgrade --from 2.3; you can't skip intermediate versions./api/alerts/silence need updating to the new signature.