]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/admin: Add Seastar metrics hook
authorAmnon Hanuhov <ahanukov@redhat.com>
Mon, 10 Aug 2020 12:31:08 +0000 (15:31 +0300)
committerAmnon Hanuhov <ahanukov@redhat.com>
Wed, 2 Sep 2020 07:25:27 +0000 (10:25 +0300)
Signed-off-by: Amnon Hanuhov <ahanukov@redhat.com>
src/crimson/admin/osd_admin.cc
src/crimson/admin/osd_admin.h

index 4848897f290e2bdf3a18442dfc4f9f330f43358c..cdb01f9ba43a807164416f64189839452ae42f78 100644 (file)
@@ -9,6 +9,7 @@
 #include <seastar/core/do_with.hh>
 #include <seastar/core/future.hh>
 #include <seastar/core/thread.hh>
+#include <seastar/core/scollectd_api.hh>
 
 #include "common/config.h"
 #include "crimson/admin/admin_socket.h"
@@ -157,4 +158,34 @@ public:
 };
 template std::unique_ptr<AdminSocketHook> make_asok_hook<AssertAlwaysHook>();
 
+/**
+* A Seastar admin hook: fetching the values of configured metrics
+*/
+class SeastarMetricsHook : public AdminSocketHook {
+public:
+ SeastarMetricsHook()  :
+   AdminSocketHook("perf dump_seastar",
+      "",
+      "dump current configured seastar metrics and their values")
+ {}
+ seastar::future<tell_result_t> call(const cmdmap_t& cmdmap,
+             std::string_view format,
+             ceph::bufferlist&& input) const final
+ {
+   std::unique_ptr<Formatter> f{Formatter::create(format, "json-pretty", "json-pretty")};
+   f->open_object_section("perf_dump_seastar");
+   for (const auto& mf : seastar::scollectd::get_value_map()) {
+     for (const auto& m : mf.second) {
+       if (m.second && m.second->is_enabled()) {
+         auto& metric_function = m.second->get_function();
+         f->dump_float(m.second->get_id().full_name(), metric_function().d());
+       }
+     }
+   }
+   f->close_section();
+   return seastar::make_ready_future<tell_result_t>(f.get());
+ }
+};
+template std::unique_ptr<AdminSocketHook> make_asok_hook<SeastarMetricsHook>();
+
 } // namespace crimson::admin
index cf3c393b11b575011bb0d6a8fdad2348efd92ed3..395042ea8cfa5f5d9189ca7645a8c2f34a18f325 100644 (file)
@@ -13,6 +13,8 @@ class FlushPgStatsHook;
 class OsdStatusHook;
 class SendBeaconHook;
 class DumpPGStateHistory;
+class SeastarMetricsHook;
+
 
 template<class Hook, class... Args>
 std::unique_ptr<AdminSocketHook> make_asok_hook(Args&&... args);