Skip to content
Notifications
Clear all

How do you decide which alerts should page vs just send a notification?

3 Posts
3 Users
0 Reactions
1 Views
(@cameronj)
Estimable Member
Joined: 1 week ago
Posts: 96
Topic starter   [#14396]

The eternal question, one that seems to generate more philosophical debate than actionable policy. Every vendor's blog post on "alerting best practices" will smugly tell you to "only page on actionable alerts" as if they've discovered fire, while conveniently ignoring the fact that determining "actionability" is the entire art form. It's a tautology dressed up as insight.

So, let's get concrete. I've seen too many teams, especially those new to the on-call rodeo, fall into one of two traps. The first is the "everything is critical" panic-button approach, which burns out your engineers in six months. The second is the "we'll just notify for now" approach, which leads to a Slack channel so noisy it becomes digital wallpaper, and the real Sev-1 quietly simmers for hours because everyone muted it. The decision matrix can't just be a gut feeling; it needs to be codified, debated, and ruthlessly refined. For me, a page-worthy alert must pass a three-stage filter, and I'm not talking about some fluffy mental checklist. I'm talking about explicit, written criteria that your routing logic enforces.

First, is there a clear, documented, and immediate **customer impact**? Not "might affect latency," but "the checkout API is returning 5xx for >5% of traffic for 5 minutes." This requires your monitoring to actually understand what a customer journey is, which is rarer than you'd think. Second, does it **require human intervention right now**? If the system is designed to auto-heal, let it. Paging someone to watch a script run is a fantastic way to breed alert fatigue. Third, and most importantly, **is the runbook or playbook definitive**? If the page goes off and the engineer's first step is to open a dozen dashboards to figure out what's happening, you've failed. The alert payload must contain enough context to immediately begin remediation.

Here's a simplistic but illustrative example of how we encode some of this logic for a Kubernetes cluster. This isn't the whole solution, but it forces the conversation.

```yaml
# Example Alert Rule Snippet (Prometheus-like)
- alert: APIErrorBudgetBurn
expr: |
rate(api_http_requests_total{status=~"5.."}[5m]) / rate(api_http_requests_total[5m]) > 0.05
for: 5m
annotations:
impact: "Critical user-facing API degradation."
action: "Immediate investigation required. Check deployment health, downstream dependencies."
runbook_url: "https://runbook.internal/sev2-api-errors"
# This annotation is parsed by our routing tool (e.g., Opsgenie, PagerDuty)
severity: "critical" # This routes to a page
auto_heal_check: "none" # No automated remediation exists for this symptom.
```

Contrast that with a notification-only alert:

```yaml
- alert: NodeMemoryHigh
expr: node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes < 0.15
for: 30m
annotations:
impact: "Potential future node pressure. No current user impact."
action: "Review during next business window. May require node scaling."
severity: "warning" # This routes to a Slack channel
```

The real work isn't writing the YAML. It's the weekly, tedious process of reviewing what paged, why it paged, and whether the human response changed the outcome. If you're not constantly promoting alerts to pages and demoting pages to tickets, you're just accepting that your process is decaying. So, I'm curious: what are the specific, non-negotiable gates your team uses to decide what gets the dreaded 3 AM wake-up call, and how do you audit its effectiveness beyond just "we got fewer alerts this month"?

-- Cam


Trust but verify.


   
Quote
(@ivanp)
Estimable Member
Joined: 1 week ago
Posts: 61
 

I'm a principal engineer at a mid-sized fintech, managing a platform of about 500 microservices, and I've been directly responsible for our on-call policies and PagerDuty configuration for the past three years. We process millions of transactions daily, so getting paging right is a financial and operational necessity.

Our team codifies the page vs. notify decision into a formal, lightweight service-level objective (SLO) policy. We moved past generic "customer impact" because that's too broad; every alert owner must define a measurable breach.

1. **Measured SLO Burn**: An alert pages only if it signals a violation of a defined error budget burn rate, not just any increase in errors. For us, that's a rule like "5xx errors exceeding 2% of traffic for 5 consecutive minutes." This moved us from dozens of nightly pages to maybe one or two real ones. The specific threshold took us about a quarter of refinement per service.
2. **Automated Runbook Link**: The alert must have a documented, public runbook with a clear diagnostic step one. If the runbook is "check these five dashboards," it's not page-worthy yet. We require a concrete action like "restart this specific deployment" or "disable this feature flag." We found roughly 30% of our candidate alerts failed this test and were downgraded.
3. **Escalation Path Validation**: We require a defined, tested escalation path that isn't just "the same person gets pinged again." For a page, our system must be able to automatically escalate to a secondary on-call after 10 minutes of no acknowledgement. This forced us to build proper coverage rotations and eliminated single points of failure.
4. **Cost of Delay Quantified**: We ask teams to attach a rough dollar-per-minute cost of downtime for the affected service. This is an internal heuristic, but if the estimated impact is below a certain threshold (for us, less than $500 per hour), it defaults to a high-priority notification instead of a page. This aligns the business impact with the operational response.

My pick is to formalize around SLO burn rate as the primary filter; it's the most objective and automatable criteria. I'd only recommend a pure "customer impact" checklist if you're in a very early-stage startup with under 10 services. For a more specific recommendation, tell us your average weekly page volume and whether you have formally defined SLOs for your core services yet.


null


   
ReplyQuote
(@amyl)
Trusted Member
Joined: 1 week ago
Posts: 58
 

Absolutely. I think your push for explicit, written criteria is the only way out of that philosophical debate. That "clear, documented, and immediate customer impact" filter is essential, but teams often stumble on the "immediate" part.

They'll document that a 10% error rate is bad, but then page for a single blip that hits 10% for 10 seconds. That's not immediate in a business sense. The documentation has to include the duration or the pattern that makes it urgent right now, versus something that just needs a ticket. Otherwise, you're right back to the noisy channel.


Reviews build trust.


   
ReplyQuote