]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: maintain the "cluster" PerfCounters when using ceph-mgr instead of PGMonitor 16249/head
authorGreg Farnum <gfarnum@redhat.com>
Mon, 10 Jul 2017 20:13:56 +0000 (13:13 -0700)
committerGreg Farnum <gfarnum@redhat.com>
Mon, 10 Jul 2017 20:46:39 +0000 (13:46 -0700)
Fixes: http://tracker.ceph.com/issues/20562
Signed-off-by: Greg Farnum <gfarnum@redhat.com>
src/mon/MgrStatMonitor.cc
src/mon/MgrStatMonitor.h

index ab0d4623b877f49aa8d387caec47044df9d849fc..5a81b931276c8be221f1db55cc67dba708230ffc 100644 (file)
@@ -94,6 +94,52 @@ void MgrStatMonitor::update_from_paxos(bool *need_bootstrap)
             << " service_map e" << service_map.epoch << dendl;
   }
   check_subs();
+  update_logger();
+}
+
+void MgrStatMonitor::update_logger()
+{
+  dout(20) << __func__ << dendl;
+  if (mon->osdmon()->osdmap.require_osd_release < CEPH_RELEASE_LUMINOUS) {
+    dout(20) << "yielding cluster perfcounter updates to pgmon" << dendl;
+    return;
+  }
+
+  mon->cluster_logger->set(l_cluster_osd_bytes, digest.osd_sum.kb * 1024ull);
+  mon->cluster_logger->set(l_cluster_osd_bytes_used,
+                           digest.osd_sum.kb_used * 1024ull);
+  mon->cluster_logger->set(l_cluster_osd_bytes_avail,
+                           digest.osd_sum.kb_avail * 1024ull);
+
+  mon->cluster_logger->set(l_cluster_num_pool, digest.pg_pool_sum.size());
+  uint64_t num_pg = 0;
+  for (auto i : digest.num_pg_by_pool) {
+    num_pg += i.second;
+  }
+  mon->cluster_logger->set(l_cluster_num_pg, num_pg);
+
+  unsigned active = 0, active_clean = 0, peering = 0;
+  for (auto p = digest.num_pg_by_state.begin();
+       p != digest.num_pg_by_state.end();
+       ++p) {
+    if (p->first & PG_STATE_ACTIVE) {
+      active += p->second;
+      if (p->first & PG_STATE_CLEAN)
+       active_clean += p->second;
+    }
+    if (p->first & PG_STATE_PEERING)
+      peering += p->second;
+  }
+  mon->cluster_logger->set(l_cluster_num_pg_active_clean, active_clean);
+  mon->cluster_logger->set(l_cluster_num_pg_active, active);
+  mon->cluster_logger->set(l_cluster_num_pg_peering, peering);
+
+  mon->cluster_logger->set(l_cluster_num_object, digest.pg_sum.stats.sum.num_objects);
+  mon->cluster_logger->set(l_cluster_num_object_degraded, digest.pg_sum.stats.sum.num_objects_degraded);
+  mon->cluster_logger->set(l_cluster_num_object_misplaced, digest.pg_sum.stats.sum.num_objects_misplaced);
+  mon->cluster_logger->set(l_cluster_num_object_unfound, digest.pg_sum.stats.sum.num_objects_unfound);
+  mon->cluster_logger->set(l_cluster_num_bytes, digest.pg_sum.stats.sum.num_bytes);
+
 }
 
 void MgrStatMonitor::create_pending()
@@ -136,6 +182,7 @@ version_t MgrStatMonitor::get_trim_to()
 
 void MgrStatMonitor::on_active()
 {
+  update_logger();
 }
 
 void MgrStatMonitor::get_health(list<pair<health_status_t,string> >& summary,
index bd96ec8376e6ae8979936d672eddd09b42f23b75..ee58e293012f5b0e2e5430f44c969d4237004340 100644 (file)
@@ -65,6 +65,7 @@ public:
     return digest.get_last_osd_stat_seq(osd);
   }
 
+  void update_logger();
 
   void print_summary(Formatter *f, std::ostream *ss) const;