summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSage Weil <sage@inktank.com>2013-09-09 16:36:22 -0700
committerSage Weil <sage@inktank.com>2013-09-09 16:36:22 -0700
commitdeea63f7a8fa3b37e247eec55acbef7fb99b446b (patch)
tree7de02b9b5c60462df0cae2c063a35cb7af072cfb
parentbe889fa956e0a3f0166db9a213796cc3691fb814 (diff)
downloadceph-deea63f7a8fa3b37e247eec55acbef7fb99b446b.tar.gz
osd: expose bytes used/avail via perf / asok
This values are already sent to the monitor. Expose them via the admin socket too so collectd/diamond/whatever can pick them up. Signed-off-by: Sage Weil <sage@inktank.com>
-rw-r--r--src/osd/OSD.cc18
-rw-r--r--src/osd/OSD.h4
2 files changed, 19 insertions, 3 deletions
diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc
index b7782471f59..faf82624825 100644
--- a/src/osd/OSD.cc
+++ b/src/osd/OSD.cc
@@ -1462,6 +1462,10 @@ void OSD::create_logger()
osd_plb.add_u64_counter(l_osd_waiting_for_map,
"messages_delayed_for_map"); // dup osdmap epochs
+ osd_plb.add_u64(l_osd_stat_bytes, "stat_bytes");
+ osd_plb.add_u64(l_osd_stat_bytes_used, "stat_bytes_used");
+ osd_plb.add_u64(l_osd_stat_bytes_avail, "stat_bytes_avail");
+
logger = osd_plb.create_perf_counters();
cct->get_perfcounters_collection()->add(logger);
}
@@ -2590,9 +2594,17 @@ void OSD::update_osd_stat()
struct statfs stbuf;
store->statfs(&stbuf);
- osd_stat.kb = stbuf.f_blocks * stbuf.f_bsize / 1024;
- osd_stat.kb_used = (stbuf.f_blocks - stbuf.f_bfree) * stbuf.f_bsize / 1024;
- osd_stat.kb_avail = stbuf.f_bavail * stbuf.f_bsize / 1024;
+ uint64_t bytes = stbuf.f_blocks * stbuf.f_bsize;
+ uint64_t used = (stbuf.f_blocks - stbuf.f_bfree) * stbuf.f_bsize;
+ uint64_t avail = stbuf.f_bavail * stbuf.f_bsize;
+
+ osd_stat.kb = bytes >> 10;
+ osd_stat.kb_used = used >> 10;
+ osd_stat.kb_avail = avail >> 10;
+
+ logger->set(l_osd_stat_bytes, bytes);
+ logger->set(l_osd_stat_bytes_used, used);
+ logger->set(l_osd_stat_bytes_avail, avail);
osd_stat.hb_in.clear();
for (map<int,HeartbeatInfo>::iterator p = heartbeat_peers.begin(); p != heartbeat_peers.end(); ++p)
diff --git a/src/osd/OSD.h b/src/osd/OSD.h
index e537249e8d6..239ce88dcb3 100644
--- a/src/osd/OSD.h
+++ b/src/osd/OSD.h
@@ -115,6 +115,10 @@ enum {
l_osd_waiting_for_map,
+ l_osd_stat_bytes,
+ l_osd_stat_bytes_used,
+ l_osd_stat_bytes_avail,
+
l_osd_last,
};