]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: simplify fs 'services' view of 'ceph status' 39183/head
authorSage Weil <sage@newdream.net>
Fri, 29 Jan 2021 23:31:33 +0000 (18:31 -0500)
committerSage Weil <sage@newdream.net>
Wed, 17 Feb 2021 22:13:27 +0000 (17:13 -0500)
Show daemon counts for up/in, failed, standby, standby-replay.

Signed-off-by: Sage Weil <sage@newdream.net>
src/mds/FSMap.cc
src/mds/FSMap.h
src/mds/MDSMap.h
src/mon/Monitor.cc

index 59cbd93f113fd0040368c274d2a1b47400e00562..3d0bbd5173b58a137808573df8e9efb148f19f0d 100644 (file)
@@ -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;
index 7355b04ac5255855c29df84b4c6ad4767e7b814b..8a3a6b69cb4e2c316c3aabb76a81cb00df8db07f 100644 (file)
@@ -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;
index 56344dd96a944663418c39a92cb059861ce3d29d..64b2b12f334cf2c46ae6d3c51bde473c092b9989 100644 (file)
@@ -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) {
index 73afc284279a4ab3a2680e05e2590655c634d450..02e03f37de1e3c5038eeb0ed6ff6768258866293 100644 (file)
@@ -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;