How to design on-call rotations, escalation policies, and incident response workflows that are sustainable, fair, and effective at keeping services reliable.
This page describes how to build and maintain incident response programs that prevent burnout and ensure consistent engineering response to system failures. It applies when establishing new alerting systems, scaling existing on-call rotations, or rebuilding broken incident response workflows.
The incident response process consists of four phases: detection, triage, resolution, and postmortem. Each phase must be defined with specific actions and handoffs. The detection phase requires alerting systems to identify failures quickly. Triage involves assigning severity levels and determining who should respond first. Resolution means fixing the root cause or mitigating the impact. Postmortem documents lessons learned for future improvements.
Alerts must distinguish between system health signals and operational events. Use kubectl get pods --all-namespaces -o jsonpath='{range .items[?(@.status.phase!="Running")]}{.metadata.name}{"\n"}{end}' to detect pod failures in Kubernetes clusters. For database systems, check for connection pool exhaustion using psql -c "SELECT count(*) FROM pg_stat_activity WHERE state = 'active';".
Alerts should include actionable information such as:
Example alert rule configuration:
alert: HighCPUUsage
expr: rate(container_cpu_usage_seconds_total{container!="POD",container!=""}[5m]) > 0.8
for: 5m
labels:
severity: page
annotations:
summary: "High CPU usage on {{ $labels.instance }}"
description: "CPU usage has been above 80% for 5 minutes on {{ $labels.instance }}."
Severity levels must map to specific response time requirements. Define three levels:
Assigning severity requires consistent criteria and clear escalation paths. P0 alerts must trigger immediate on-call response within 5 minutes. P1 alerts should be acknowledged within 30 minutes. P2 alerts may be addressed during regular working hours.
Playbooks contain step-by-step instructions for handling specific failure modes. They should include:
Example playbook entry:
## Database Connection Failure
1. Verify database status:
`psql -c "SELECT pg_is_in_recovery();"`
2. Check connection pool:
`psql -c "SELECT count(*) FROM pg_stat_activity WHERE state = 'active';"`
3. Restart service if necessary:
`systemctl restart postgresql`
4. Monitor for recovery:
`kubectl logs deployment/database`
Rotations must distribute workload fairly and provide clear handoff procedures. A rotation schedule should specify:
Use a shared calendar system to track on-call assignments. Each rotation period should last 1-2 weeks. Assignments must include:
Example calendar entry format:
Title: On-Call - Database Team
Start: 2023-10-01T00:00:00Z
End: 2023-10-15T00:00:00Z
Location: Emergency Contact: +1-555-0123
Description: Primary on-call for database infrastructure
Handoffs must include a brief summary of current incidents and recent changes. When taking over, the new on-call engineer should:
Escalation rules must be clear and automated where possible. Define escalation paths based on:
Configure monitoring tools to automatically escalate alerts after specific time intervals. For example, an alert might escalate from P1 to P0 after 30 minutes without acknowledgment.
Escalation configurations should include:
Example escalation configuration:
name: DatabaseEscalation
conditions:
- time_since_alert: 30m
severity: P1
action: escalate_to_secondary
For complex incidents, implement multi-level escalation where each level has different responsibilities. First responders handle initial triage and basic fixes. Senior engineers may be needed for architectural issues or deep dives.
Communication systems must support real-time coordination during incidents. Critical channels include:
All incident communications should follow specific patterns:
Use standard messaging formats for consistency. For example, include timestamps and clear status indicators in all messages.
All incidents must be documented with sufficient detail for future analysis. Documentation should capture:
Postmortems must follow a consistent structure to enable effective learning. Include these sections:
Example postmortem format:
# Incident Report: Database Outage
## Summary
Brief description of the incident.
## Timeline
09:00 - Alert triggered
10:00 - Initial investigation begun
...
## Root Cause
Analysis of underlying problem.
## Resolution Steps
What was done to fix the issue.
## Improvements
Actions to prevent recurrence.
Failures in escalation systems often occur silently or after delay. Monitor for these patterns:
Common escalation failures include:
Monitor for these specific failure conditions:
Measure and improve incident response times through systematic analysis. Focus on:
Track these metrics regularly:
Use simple queries to extract this data from monitoring systems. For example:
SELECT
AVG(first_response_time) as avg_first_response,
COUNT(*) as total_incidents
FROM incidents
WHERE timestamp > '2023-10-01'
Regularly review incident response performance and adjust procedures accordingly. This involves:
Sustainable on-call programs must include measures to prevent overwork and maintain team health. Key practices include:
Set maximum on-call hours per week. Typically, limit to 2-3 weeks of consecutive rotation. Include buffer time for unexpected incidents.
After each incident, require:
Incidents often span multiple teams and systems. Effective incident response requires:
Document system dependencies with clear ownership for each component. Include:
The incident response program itself must be reliable. This means:
Conduct regular drills to verify response capabilities:
These tests should document any process gaps or system failures that need correction.
High alert volumes can overwhelm response teams. Control incident velocity through:
Configure monitoring systems to suppress alerts during known maintenance windows or when system capacity is low.
Example suppression rule:
name: MaintenanceSuppression
conditions:
- time_of_day: "02:00-06:00"
severity: P2
action: suppress_alerts
Regularly review alert effectiveness and remove or modify ineffective alerts. Monitor:
Incident response programs must evolve with changing systems and team needs. Regular reviews should include:
Schedule reviews every quarter to evaluate:
These reviews should produce concrete action items with clear owners and deadlines.
This page was rewritten on 16 October 2026. It replaced a templated version that was not specific to its own title. How these pages are written and checked. If anything here is wrong, tell us at [email protected] and we will correct it.
We use cookies for analytics (Google Analytics) and advertising (Google AdSense) to improve your experience and support free content. Privacy Policy