Skip to main content
RunBook Academy

CephC · Upgrade Failure RecoveryUpgrade Failure Recovery

A manager module fails after upgrading

Advanced⏱ ~17 minceph

What you'll learn

  • Identify a failed module
  • Read the module error
  • Disable a module safely
  • Assess what its absence affects

Prerequisites

None — start here.

Verified against Ceph Tentacle 20.2.x · Ceph Squid 19.2.x (supported previous) · cephadm matches the verified Ceph release · podman 4.x · csi-rbd and csi-cephfs current · RBD / CephFS / RGW current (matches Ceph release) · Linux kernel 5.15+ (5.10 minimum) · Ubuntu 24.04 LTS (Ceph host baseline) · Debian 12 (Bookworm) (Ceph host baseline) · Rocky Linux / RHEL / AlmaLinux 9.x (Ceph host baseline) · Proxmox VE 9.x (cross-course integration) · Kubernetes 1.31+ (cross-course integration) · 2026-08-18

Not yet marked complete on this device.

Why this matters in production

Manager modules provide the dashboard, metrics, and orchestration, and a module failure can look like a cluster failure while the data path is entirely fine.

Identifying a failed module

ceph -s
ceph health detail
HEALTH_ERR Module 'dashboard' has failed: ...
[ERR] MGR_MODULE_ERROR: Module 'dashboard' has failed
ceph mgr module ls --format json | python3 -c '
import sys,json
d = json.load(sys.stdin)
print("enabled: ", d.get("enabled_modules"))
print("always:  ", [m["name"] for m in d.get("always_on_modules", [])] if isinstance(d.get("always_on_modules"), list) else d.get("always_on_modules"))'
ceph crash ls | tail
ceph log last 200 cephadm | grep -i module

Reading the error

FSID=$(ceph fsid)
journalctl -u "ceph-$FSID@mgr.$(hostname -s)" --since '30 min ago' \
  --no-pager | grep -A20 -i 'traceback\|module.*fail' | tail -60
The traceback names the module and usually the import or attribute that
failed, which is enough to establish whether it is a missing dependency,
a removed internal API, or a configuration incompatibility.
ErrorMeaning
ImportError / ModuleNotFoundErrora Python dependency is missing in the image
AttributeError on a Ceph internalthe module used an API this release changed
Configuration validation errorsa module option changed shape
Timeout on loadthe module is blocking on an external system

Disabling safely

ceph mgr module disable dashboard
ceph -s
# and confirm the manager is healthy again
ceph mgr stat
ceph orch ps --daemon-type mgr
A failed module can destabilise the manager, so disabling it is the
correct immediate action even if the module is wanted — a stable manager
without the dashboard is better than an unstable one with it.
# some modules cannot be disabled
ceph mgr module ls --format json | python3 -c '
import sys,json
d=json.load(sys.stdin)
aon = d.get("always_on_modules", [])
print("always-on:", aon)'

What each absence affects

ModuleAbsence affects
dashboardthe web UI only; no cluster function
prometheusmetrics collection; alerting goes blind
balancerPG distribution stops being optimised
orchestrator / cephadmdaemon management; the upgrade itself
pg_autoscalerPG counts stop adjusting
crashcrash report collection
rbd_supportRBD trash purge, mirror scheduling
Only the orchestrator's absence blocks an upgrade. The rest are
operational conveniences whose loss should be noticed and scheduled for
repair, not treated as an emergency.
# after fixing, re-enable and verify
ceph mgr module enable dashboard
ceph mgr module ls --format json | python3 -c '
import sys,json; print("dashboard" in json.load(sys.stdin)["enabled_modules"])'

Quiz

Knowledge check · 4 questions

  1. Q1. Which manager module failure has the most operational consequence?

  2. Q2. Disabling a module you actively depend on is the correct first response when it fails on load.

  3. Q3. Handle a module failure after an upgrade.

    After an upgrade, `ceph -s` reports HEALTH_ERR with "Module 'dashboard' has failed". The data path is unaffected.

  4. Q4. Which module's absence actually blocks an upgrade, and why?

Passing score: 75%. Answers are checked in this browser.

Production discipline

Disable a failed manager module immediately, even one you need — a module failing on load can destabilise the manager itself, and everything except the orchestrator has a command-line equivalent. Treat a failed prometheus module as urgent: the cluster then runs unmonitored while appearing quiet.

Cross-course references

  • Kubernetes: a failed controller in the control plane is disabled before being debugged
  • Linux: absence of monitoring data is not itself an alert without a dead man’s switch