The wrong diagnosis

Every drowning SOC reaches the same conclusion: we need more analysts. Sometimes a tired manager asks for headcount; sometimes a vendor offers to sell the headcount as a service. Either way, the diagnosis is usually wrong.

If your team closes 400 alerts a day and 390 of them are false positives or duplicates, hiring two more analysts gets you to closing 600 alerts a day, of which 585 are false positives or duplicates. You have scaled the waste. The queue is not overloaded because the team is small. It is overloaded because the pipeline that produces the queue was never designed. It accreted.

Alert fatigue has real consequences beyond morale: analysts start pattern-matching on rule names instead of reading evidence, true positives get closed on autopilot, and your best people leave first. Several public breach post-mortems feature the same sentence: "the alert fired, and was dismissed."


How pipelines rot

Four failure modes account for most of the noise.


1. Alerts arrive naked

An alert that says Suspicious outbound connection to 198.51.100.47 forces the analyst to do the same fifteen minutes of lookups every single time: who owns the IP, what resolves to it, is it a known scanner, is it a CDN, have we seen it before. Multiply by every network alert, every shift. The single highest-leverage fix in most SOCs is moving that work from triage time to ingest time.


2. No deduplication or suppression

A misconfigured host tripping the same rule 300 times overnight produces 300 tickets, or one, depending entirely on whether anyone designed for it. The same goes for known-benign sources: the vulnerability scanner, the backup job, the pentest subnet everyone forgets to allowlist.


3. Severity inflation

When detection authors mark everything "high" to make sure it gets looked at, severity stops carrying information. Analysts learn that "high" means nothing, and then they treat the one real critical the same way. A severity scale only works if most alerts sit at the bottom of it.


4. Vanity detections and absent ownership

Rules imported wholesale from a community repo, rules written for a compliance checkbox, rules whose author left two years ago. Nobody owns them, so nobody tunes them, so nobody deletes them. They just fire.


A design framework for the pipeline

Treat the path from telemetry to analyst as a product with stages. Each stage has one job.

Stage Job Question it answers
Detection Fire on defined behavior Did X happen?
Enrichment Attach context automatically What is X, and what do we know about it?
Dedup / suppression Collapse repeats, drop known-benign Have we seen this before?
Scoring Assign honest severity from evidence How much does this matter?
Routing Deliver to an owner with an SLA Whose problem is this?
Feedback Return triage outcomes to detection Was the rule right?

Enrich at ingest, not at triage

Every indicator in an alert should arrive pre-enriched: IP reputation, ASN and geolocation, passive DNS, domain age, hash verdicts, internal asset context. This is mechanical work and machines should do it. With an enrichment API like the one behind mlab.sh, a SOAR playbook or even a small script can decorate every alert before a human sees it; the patterns are covered in our guide to automating IOC enrichment. An alert that arrives saying "destination is a 4-day-old domain on a hosting ASN with no passive DNS history" is 80% triaged on arrival. One that says "destination is a major CDN edge" can often close itself.


Deduplicate and suppress deliberately

Write explicit rules: same entity plus same detection within N hours collapses into one alert with a counter. Known-benign sources get suppression entries with an expiry date and a named owner, so suppressions are reviewed instead of becoming permanent blind spots. Track your suppression list in version control like the detection content it is.


Make severity mean something

Define severity by required response, not by how scary the rule name sounds: critical means page someone now, high means same shift, medium means same day, low means batch review. Then audit: if fewer than some threshold of your "critical" alerts led to real incident response actions last quarter, the scoring is dishonest and the pipeline is lying to your analysts.


Give every rule an owner

Every detection carries metadata: author, owner, date, linked runbook, expected volume. A rule without an owner is a rule nobody is allowed to trust. This is where detection-as-code practices pay off, since ownership and review live naturally in git.


Close the feedback loop

The most underused data in any SOC is triage outcomes. Analysts classify hundreds of alerts a week as false positive, benign true positive, or malicious. That signal should flow back to detection engineering on a fixed cadence, weekly works, with a simple standing agenda: top ten noisiest rules, their true positive rates, and a decision for each. Tune it, add a suppression, or kill it.


Delete bad rules

This is the step teams resist. A rule that fired 2,000 times last quarter with zero true positives is not providing coverage; it is providing liability, because it trains humans to ignore alerts. Deleting it is a security improvement. If the fear is "but what if it would have caught something," downgrade it to a hunting query instead of an alert. Coverage you cannot afford to triage is not coverage.


Measuring whether the design works

Skip raw alert counts. Watch ratios and outcomes:

  • Alert-to-incident ratio: how many alerts produce a real investigation? Trending toward signal or away from it?
  • True positive rate per rule: the tuning worklist, sorted for you.
  • Duplicate rate: what fraction of the queue was a repeat of an open item?
  • Time-to-context: how long does an analyst spend gathering information the pipeline could have attached?
  • Rules retired per quarter: a healthy detection program deletes things. Zero deletions is a smell.

None of this requires new headcount. It requires an engineering week here and there, and the organizational permission to say that an alert nobody can act on is worse than no alert at all.


You cannot hire your way out of a queue that manufactures noise. Design the pipeline: enrich early, suppress deliberately, score truthfully, and delete what does not earn its place. The analysts you already have are enough, once the queue tells them the truth.