Inside The AI Stack

Lesson 19 · OpenStack Production Engineer

Incident Response — A Method for Working an OpenStack Failure

An ordered method for OpenStack incidents that eliminates whole categories of cause quickly, and the habits that keep a bad incident from getting worse.

advancedOpenStack
ByJames JoynerPublished 4 min read
~50 minPro

Objectives

  • Apply an ordered method that eliminates categories of cause rather than guessing
  • Separate what is broken from what is merely reporting an error
  • Decide when to mitigate before diagnosing, and when that is the wrong call
  • Avoid the interventions that reliably make an OpenStack incident worse

The first question is not what broke

It is: what is the blast radius? Everything about how you proceed depends on the answer, and it takes under a minute to establish.

  Are running workloads affected?
    │
    ├── No  ──► control plane only. Users can use what exists;
    │           they cannot change anything. Urgent, not critical.
    │           You have time to diagnose properly.
    │
    └── Yes ──► data plane. Something users depend on right now is
                down. Mitigate first, diagnose second.

This distinction governs the whole incident. A control plane failure — every API down, every service reporting down — is alarming and usually not an outage for anyone running a workload. Treating it as a five-alarm emergency produces rushed interventions that cause the real outage.

Then: is it one thing or everything?

The scope of a failure narrows the cause enormously, and OpenStack’s dependency structure makes the mapping fairly reliable.

Scope Look at
Everything, at once Shared dependencies: message bus, database, identity, load balancer
One service, everywhere That service — its own processes and its own backend
All services, one host That host — network, clock, disk, its agents
One tenant Quota, roles, that tenant’s networks and security groups
Intermittent Load balancer with one bad backend, a partitioned cluster, or multi-writer database

The first and last rows are the ones people get wrong. Everything failing simultaneously is almost never a coincidence of separate failures — it is one shared thing. And intermittent failure has a short, specific list of causes that is worth checking directly rather than searching for.

The elimination sequence

Run in order. Each step is cheap and removes a category.

1. Is identity working?

openstack token issue

If not, nothing downstream tells you anything. Everything will fail and none of it is informative.

2. Is the message bus healthy?

Cluster status, alarms, and queue depths sorted descending. The deepest queue with no consumer usually names the failed component outright.

3. Is the database healthy and writable?

Cluster size on every node, and whether reads work while writes fail — that pattern is quorum.

4. What do the service listings say?

openstack compute service list --long
openstack network agent list
openstack volume service list

Read the pattern, not the individual rows. All down means a shared dependency and you have already checked those. One host down across several services means that host.

5. Now look at the failing operation.

Only now. With identity, bus, database, and service state established, the error you started with is finally interpretable — and quite often already explained.

Mitigate before diagnosing, when workloads are affected

When something users depend on is down, restoring service comes first and the cause can wait. That is a real trade — mitigating often destroys evidence — so it should be a deliberate choice rather than a reflex.

Mitigations that are usually safe:

  • Disabling a bad compute service so nothing new is scheduled to it. Reversible, and stops the problem spreading.
  • Removing an unhealthy backend from the load balancer. Reversible, and immediately stops the fraction of requests that were failing.
  • Migrating workloads off a failing host, when it is healthy enough to migrate.

Before destroying evidence, capture it: the service listings, the relevant logs, the queue depths. Ten seconds of docker logs > /tmp/incident-*.log preserves what the postmortem will otherwise lack.

The interventions that make it worse

Three more worth naming explicitly, each covered in an earlier lesson:

  • virsh destroy to resolve a Nova/libvirt disagreement. If the instance is genuinely running, that is an unannounced outage for a real workload.
  • Resetting a volume’s state while the backend still has it exported. Two hosts writing to one device corrupts the filesystem quickly.
  • Removing a placement allocation without confirming the instance is gone. Causes under-counting, over-scheduling, and memory exhaustion later.

Each is a bookkeeping fix that looks harmless and is not.

Communicating during the incident

Two things are worth saying early, and both are frequently omitted:

Whether workloads are affected. This is the only fact most people actually need, and it is usually determined in the first minute. Saying it early stops a great deal of parallel panic.

What you are about to do, before doing it. Particularly anything that restarts a service. The cost is one line; the benefit is that nobody attributes the resulting blip to a second, imaginary fault.

After: the questions that produce useful findings

The valuable postmortem questions are not “what broke” but:

  • What did we check that told us nothing? Those checks are candidates for deletion or replacement.
  • What would have caught this earlier? Usually a functional check that does not exist yet.
  • Which step in the elimination sequence would have found it, and when did we actually take it? The gap between those is the time the method would have saved.
  • Did any intervention make it worse? Recording this honestly is what stops it recurring.

Exercise

Take a real incident you have worked and re-run it on paper using the elimination sequence. Write down what each of the five steps would have returned, in order.

Identify the step that would have located the cause. Then compare against what actually happened: how far into the incident was that step taken, and what was done before it. The difference is the value of the method, measured in your own environment rather than in the abstract.

Next lessonProduction Operations

Verification status

This resource has not been executed end to end in a lab environment. Commands and configuration are reviewed by an engineer, but treat them as reference rather than as a tested procedure.

Author

James Joyner

Builds and operates the infrastructure layers underneath production AI systems.

James founded Inside The AI Stack to publish the kind of infrastructure and operations material he wanted while running production systems: specific, tested where it claims to be tested, and written by someone who has had to fix the thing at 3am. He works across AI infrastructure, private cloud, and platform engineering, and reviews every technical resource published here before it is marked as verified.

  • AI infrastructure
  • OpenStack operations
  • Kubernetes
  • Terraform
  • Linux systems engineering
  • Observability

Primary sources

Related resources chosen because they are the next thing you would actually need — not because they share a keyword.

Guide

Incident Diagnosis Method

A repeatable method for diagnosing production failures: form hypotheses the evidence supports, order checks by what they eliminate, and know when to stop and mitigate.

intermediate· 5 minIncident ResponseObservability
Lab

Lab: Nova NoValidHost

Instances stopped building on a cloud with visible free capacity. Work the evidence, form hypotheses, and find why the scheduler has no candidates.

expert· 35 minOpenStackNova
Lesson

Service State and Liveness

Status versus state, how liveness is actually determined, and why a service that is enabled and down is the most dangerous row in any OpenStack listing.

foundational· 35 minOpenStackNova
Learning path

OpenStack Production Engineer

A sequenced learning path for engineers who operate OpenStack in production — architecture, service-by-service depth, deployment, and troubleshooting under pressure.

intermediate· 5 minOpenStackNova

Newsletter

Inside The AI Stack Brief

A practical weekly briefing on AI engineering, infrastructure, production operations, and the technologies powering the AI stack.

One email a week. We send a confirmation link first and never mail an address that has not confirmed. No sponsorship placements inside the technical sections, and an unsubscribe link in every issue.