From db10d80b66f13dc1fb27bebceb1f7d38dfa3d5d0 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Fri, 29 Jan 2021 18:31:33 -0500 Subject: [PATCH] mon: simplify fs 'services' view of 'ceph status' Show daemon counts for up/in, failed, standby, standby-replay. Signed-off-by: Sage Weil --- src/mds/FSMap.cc | 25 +++++++++++++++++++++++++ src/mds/FSMap.h | 1 + src/mds/MDSMap.h | 9 +++++++++ src/mon/Monitor.cc | 4 +++- 4 files changed, 38 insertions(+), 1 deletion(-) diff --git a/src/mds/FSMap.cc b/src/mds/FSMap.cc index 59cbd93f113..3d0bbd5173b 100644 --- a/src/mds/FSMap.cc +++ b/src/mds/FSMap.cc @@ -224,8 +224,33 @@ void FSMap::print(ostream& out) const } } +void FSMap::print_daemon_summary(ostream& out) const +{ + // this appears in the "services:" section of "ceph status" + int num_up = 0, num_in = 0, num_failed = 0; + int num_standby_replay = 0; + for (auto& [fscid, fs] : filesystems) { + num_up += fs->mds_map.get_num_up_mds(); + num_in += fs->mds_map.get_num_in_mds(); + num_failed += fs->mds_map.get_num_failed_mds(); + num_standby_replay += fs->mds_map.get_num_standby_replay_mds(); + } + int num_standby = standby_daemons.size(); + out << num_up << "/" << num_in << " daemons up"; + if (num_failed) { + out << " (" << num_failed << " failed)"; + } + if (num_standby) { + out << ", " << num_standby << " standby"; + } + if (num_standby_replay) { + out << ", " << num_standby_replay << " hot standby"; + } +} + void FSMap::print_fs_summary(ostream& out) const { + // this appears in the "data:" section of "ceph status" if (!filesystems.empty()) { int num_failed = 0, num_recovering = 0, num_stopped = 0, num_healthy = 0; int num_damaged = 0; diff --git a/src/mds/FSMap.h b/src/mds/FSMap.h index 7355b04ac52..8a3a6b69cb4 100644 --- a/src/mds/FSMap.h +++ b/src/mds/FSMap.h @@ -567,6 +567,7 @@ public: void print(std::ostream& out) const; void print_summary(ceph::Formatter *f, std::ostream *out) const; + void print_daemon_summary(std::ostream& out) const; void print_fs_summary(std::ostream& out) const; void dump(ceph::Formatter *f) const; diff --git a/src/mds/MDSMap.h b/src/mds/MDSMap.h index 56344dd96a9..64b2b12f334 100644 --- a/src/mds/MDSMap.h +++ b/src/mds/MDSMap.h @@ -305,6 +305,15 @@ public: int get_num_failed_mds() const { return failed.size(); } + unsigned get_num_standby_replay_mds() const { + unsigned num = 0; + for (auto& i : mds_info) { + if (i.second.state == MDSMap::STATE_STANDBY_REPLAY) { + ++num; + } + } + return num; + } unsigned get_num_mds(int state) const; // data pools void add_data_pool(int64_t poolid) { diff --git a/src/mon/Monitor.cc b/src/mon/Monitor.cc index 73afc284279..02e03f37de1 100644 --- a/src/mon/Monitor.cc +++ b/src/mon/Monitor.cc @@ -3053,7 +3053,9 @@ void Monitor::get_cluster_status(stringstream &ss, Formatter *f, const FSMap *fsmapp = &fsmap_copy; if (fsmapp->filesystem_count() > 0 and mdsmon()->should_print_status()){ - ss << " mds: " << spacing << *fsmapp << "\n"; + ss << " mds: " << spacing; + fsmapp->print_daemon_summary(ss); + ss << "\n"; } ss << " osd: " << spacing; -- 2.39.5