Cheat Sheets / Observability & Reliability

SRE & Production Incident Response cheat sheet

51 commands from every lesson of SRE & Production Incident Response, on one page.

01 · The shape of a strong RCA

The eight parts

SituationImpact, who/what/when, timeline
ClaimThe first hypothesis and the signal that suggested it
PivotThe evidence that changed direction
EliminationWhat was ruled out, and how
Root causeMechanism + contributing factors (not 'human error')
FixWhat stopped the bleeding
PreventionChanges that remove the class of failure
HonestyWhat went badly, what's still unknown

Action items

Specific · owned · dated · verifiableGood
'Be more careful', 'improve monitoring'Not action items

02 · Incident command & communication

Roles

Incident Commander (IC)Coordinates, decides, delegates; doesn't debug
Operations / technical leadLeads investigation and mitigation
Communications leadStakeholder and customer updates
ScribeTimeline of actions and findings

Rhythm

Declare early; downgrade laterCheap to cancel, expensive to be late
Status update every 30 min (SEV1) / 60 min (SEV2)Even when there's no news
Update = impact · what we know · what we're doing · next update timeFixed structure

03 · Architecture antipatterns

Antipattern → safer pattern

Liveness probe checks the databaseLiveness = process health only; readiness may check dependencies
imagePullPolicy: Always + single registryDigests + IfNotPresent, registry mirrors/pull-through cache
App calls the Kubernetes API per requestCache/watch; data path independent of the control plane
Config pushed to all clusters at onceStaged rollout with health gates
Deep synchronous chainsTimeouts, async where possible, degrade gracefully

04 · Partial rollouts

Detect

count by (cluster, image) (kube_pod_container_info{container="api"})Which image versions run where
kubectl rollout status deploy/api --timeout=10mDid this rollout finish?
GitOps per-cluster sync status + revisionWhich clusters are behind
kubectl get ds -A (DESIRED vs UP-TO-DATE vs AVAILABLE)DaemonSets stuck on some nodes

Design for mixed versions

Expand → migrate → contractSchema/API changes in compatible steps
N and N-1 must interoperateEvery change assumes mixed versions
Feature flags decoupled from deploysTurn on only when rollout is complete

05 · Automation blast radius

Guard rails

Never act on more than X% of the fleet per intervalPercentage/rate limit
Dry run + diff reviewed before applySee the blast radius first
Canary scope first (1 cluster / 1 node / 1 namespace)Small, then wider
Stop if more than N targets fail or health dropsAutomatic halt
Kill switch (feature flag / pause annotation)Stop everything quickly

Built into Kubernetes

PodDisruptionBudgetLimits voluntary evictions (drains, autoscalers)
kube-controller-manager --node-eviction-rate / --unhealthy-zone-thresholdSlows evictions when many nodes look unhealthy
Deployment maxUnavailable / maxSurgeRollout speed
Karpenter NodePool disruption budgetsLimits node consolidation/replacement

06 · Cold-start dependency loops

Common loops

Registry runs in the cluster that needs it to pull imagesImages can't be pulled to start the registry
Identity provider hosted on the platform you log intoNobody can log in to fix it
GitOps pulls from a Git server hosted in the same clusterNothing to sync from
Secrets manager needs unsealing by a service that needs secretsDeadlock

Recovery tools

rabbitmqctl force_boot (on a stopped node)Let a RabbitMQ node start without waiting for peers (after checking which node is most recent)
podManagementPolicy: Parallel (StatefulSet)Start all members together when they must find each other
Break-glass accounts + local credentialsAccess that doesn't depend on SSO

07 · Symptom-based monitoring

Page on symptoms

SLO burn rate (errors, latency) at the user edgeUsers are being hurt at a rate that matters
Synthetic journey failuresUsers can't complete a key flow
Absence: no data / no traffic when there should beSilent failures

Ticket or dashboard for causes

High CPU, memory, disk growth, pod restartsInvestigate during work hours unless they threaten an SLO soon
Capacity forecasts (disk full in < 3 days)Predictive ticket, not a page
Alert quality: % actionable, pages/week, time to acknowledgeMeasure the alerts themselves