]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/MgrStandby: add LogClient
authorSage Weil <sage@redhat.com>
Wed, 22 Mar 2017 01:24:24 +0000 (20:24 -0500)
committerSage Weil <sage@redhat.com>
Wed, 29 Mar 2017 15:39:27 +0000 (11:39 -0400)
Signed-off-by: Sage Weil <sage@redhat.com>
src/mgr/DaemonServer.cc
src/mgr/DaemonServer.h
src/mgr/Mgr.cc
src/mgr/Mgr.h
src/mgr/MgrStandby.cc
src/mgr/MgrStandby.h

index 1a0bd404e16b7c7cb27022105c2b62ac3a5a042b..efd453d9051c1b8afbaa6856eb92e4f746844002 100644 (file)
 #define dout_prefix *_dout << "mgr.server " << __func__ << " "
 
 DaemonServer::DaemonServer(MonClient *monc_,
-  DaemonStateIndex &daemon_state_,
-  ClusterState &cluster_state_,
-  PyModules &py_modules_)
+                          DaemonStateIndex &daemon_state_,
+                          ClusterState &cluster_state_,
+                          PyModules &py_modules_,
+                          LogChannelRef clog_,
+                          LogChannelRef audit_clog_)
     : Dispatcher(g_ceph_context),
       client_byte_throttler(new Throttle(g_ceph_context, "mgr_client_bytes",
                                         g_conf->mgr_client_bytes)),
@@ -53,6 +55,8 @@ DaemonServer::DaemonServer(MonClient *monc_,
       daemon_state(daemon_state_),
       cluster_state(cluster_state_),
       py_modules(py_modules_),
+      clog(clog_),
+      audit_clog(audit_clog_),
       auth_registry(g_ceph_context,
                     g_conf->auth_supported.empty() ?
                       g_conf->auth_cluster_required :
index 160bd5939a83b82c6a103cd73fb5c4746bb3cc16..4337d727dd59b98d9941d0539ea2db3712da7c69 100644 (file)
@@ -20,6 +20,7 @@
 #include <string>
 
 #include "common/Mutex.h"
+#include "common/LogClient.h"
 
 #include <msg/Messenger.h>
 #include <mon/MonClient.h>
@@ -56,6 +57,7 @@ protected:
   DaemonStateIndex &daemon_state;
   ClusterState &cluster_state;
   PyModules &py_modules;
+  LogChannelRef clog, audit_clog;
 
   AuthAuthorizeHandlerRegistry auth_registry;
 
@@ -78,9 +80,11 @@ public:
   entity_addr_t get_myaddr() const;
 
   DaemonServer(MonClient *monc_,
-      DaemonStateIndex &daemon_state_,
-      ClusterState &cluster_state_,
-      PyModules &py_modules_);
+              DaemonStateIndex &daemon_state_,
+              ClusterState &cluster_state_,
+              PyModules &py_modules_,
+              LogChannelRef cl,
+              LogChannelRef auditcl);
   ~DaemonServer() override;
 
   bool ms_dispatch(Message *m) override;
index f9a513154462c6bb14f66133401ac8b34f2c5d06..cdbbb9d0953cd94fdc64a73cb34f609ca8c40b06 100644 (file)
@@ -37,7 +37,8 @@
 #define dout_prefix *_dout << "mgr " << __func__ << " "
 
 
-Mgr::Mgr(MonClient *monc_, Messenger *clientm_, Objecter *objecter_) :
+Mgr::Mgr(MonClient *monc_, Messenger *clientm_, Objecter *objecter_,
+        LogChannelRef clog_, LogChannelRef audit_clog_) :
   monc(monc_),
   objecter(objecter_),
   client_messenger(clientm_),
@@ -47,7 +48,7 @@ Mgr::Mgr(MonClient *monc_, Messenger *clientm_, Objecter *objecter_) :
   waiting_for_fs_map(NULL),
   py_modules(daemon_state, cluster_state, *monc, finisher),
   cluster_state(monc, nullptr),
-  server(monc, daemon_state, cluster_state, py_modules),
+  server(monc, daemon_state, cluster_state, py_modules, clog_, audit_clog_),
   initialized(false),
   initializing(false)
 {
index ffe1d1460c90d984a65b56a888b36c76d26a25f0..9c882ec35f978ca4949b5c982aa82ec6a7ab33c9 100644 (file)
@@ -69,7 +69,8 @@ protected:
   bool initializing;
 
 public:
-  Mgr(MonClient *monc_, Messenger *clientm_, Objecter *objecter_);
+  Mgr(MonClient *monc_, Messenger *clientm_, Objecter *objecter_,
+      LogChannelRef clog_, LogChannelRef audit_clog_);
   ~Mgr();
 
   bool is_initialized() const {return initialized;}
index 0d7034b5b7782cf51f79698cbda2e4e8ac4ac110..843ecd0a3a084c51666a07fcea90c65381f717cd 100644 (file)
 MgrStandby::MgrStandby() :
   Dispatcher(g_ceph_context),
   monc(new MonClient(g_ceph_context)),
+  client_messenger(Messenger::create_client_messenger(g_ceph_context, "mgr")),
+  objecter(new Objecter(g_ceph_context, client_messenger, monc, NULL, 0, 0)),
+  log_client(g_ceph_context, client_messenger, &monc->monmap, LogClient::NO_FLAGS),
+  clog(log_client.create_channel(CLOG_CHANNEL_CLUSTER)),
+  audit_clog(log_client.create_channel(CLOG_CHANNEL_AUDIT)),
   lock("MgrStandby::lock"),
   timer(g_ceph_context, lock),
   active_mgr(nullptr)
 {
-  client_messenger = Messenger::create_client_messenger(g_ceph_context, "mgr");
-  objecter = new Objecter(g_ceph_context, client_messenger, monc, NULL, 0, 0);
 }
 
 
@@ -52,6 +55,41 @@ MgrStandby::~MgrStandby()
   delete client_messenger;
 }
 
+const char** MgrStandby::get_tracked_conf_keys() const
+{
+  static const char* KEYS[] = {
+    // clog & admin clog
+    "clog_to_monitors",
+    "clog_to_syslog",
+    "clog_to_syslog_facility",
+    "clog_to_syslog_level",
+    "osd_objectstore_fuse",
+    "clog_to_graylog",
+    "clog_to_graylog_host",
+    "clog_to_graylog_port",
+    "host",
+    "fsid",
+    NULL
+  };
+  return KEYS;
+}
+
+void MgrStandby::handle_conf_change(
+  const struct md_config_t *conf,
+  const std::set <std::string> &changed)
+{
+  if (changed.count("clog_to_monitors") ||
+      changed.count("clog_to_syslog") ||
+      changed.count("clog_to_syslog_level") ||
+      changed.count("clog_to_syslog_facility") ||
+      changed.count("clog_to_graylog") ||
+      changed.count("clog_to_graylog_host") ||
+      changed.count("clog_to_graylog_port") ||
+      changed.count("host") ||
+      changed.count("fsid")) {
+    _update_log_config();
+  }
+}
 
 int MgrStandby::init()
 {
@@ -92,6 +130,9 @@ int MgrStandby::init()
   client_t whoami = monc->get_global_id();
   client_messenger->set_myname(entity_name_t::CLIENT(whoami.v));
 
+  monc->set_log_client(&log_client);
+  _update_log_config();
+
   objecter->set_client_incarnation(0);
   objecter->init();
   client_messenger->add_dispatcher_head(objecter);
@@ -151,6 +192,33 @@ void MgrStandby::shutdown()
   client_messenger->shutdown();
 }
 
+void MgrStandby::_update_log_config()
+{
+  map<string,string> log_to_monitors;
+  map<string,string> log_to_syslog;
+  map<string,string> log_channel;
+  map<string,string> log_prio;
+  map<string,string> log_to_graylog;
+  map<string,string> log_to_graylog_host;
+  map<string,string> log_to_graylog_port;
+  uuid_d fsid;
+  string host;
+
+  if (parse_log_client_options(cct, log_to_monitors, log_to_syslog,
+                              log_channel, log_prio, log_to_graylog,
+                              log_to_graylog_host, log_to_graylog_port,
+                              fsid, host) == 0) {
+    clog->update_config(log_to_monitors, log_to_syslog,
+                       log_channel, log_prio, log_to_graylog,
+                       log_to_graylog_host, log_to_graylog_port,
+                       fsid, host);
+    audit_clog->update_config(log_to_monitors, log_to_syslog,
+                             log_channel, log_prio, log_to_graylog,
+                             log_to_graylog_host, log_to_graylog_port,
+                             fsid, host);
+  }
+}
+
 void MgrStandby::handle_mgr_map(MMgrMap* mmap)
 {
   auto map = mmap->get_map();
@@ -161,7 +229,7 @@ void MgrStandby::handle_mgr_map(MMgrMap* mmap)
   if (active_in_map) {
     if (!active_mgr) {
       dout(1) << "Activating!" << dendl;
-      active_mgr.reset(new Mgr(monc, client_messenger, objecter));
+      active_mgr.reset(new Mgr(monc, client_messenger, objecter, clog, audit_clog));
       active_mgr->background_init();
       dout(1) << "I am now active" << dendl;
     } else {
index 6fa524b87d93785ffa9d8bef91dcf16e633d0cf1..89ede8cee2c4e48bd5cd8430536bc1d2ee9f52e6 100644 (file)
@@ -18,6 +18,7 @@
 #include "auth/Auth.h"
 #include "common/Finisher.h"
 #include "common/Timer.h"
+#include "common/LogClient.h"
 
 #include "DaemonServer.h"
 #include "PyModules.h"
 class MMgrMap;
 class Mgr;
 
-class MgrStandby : public Dispatcher {
+class MgrStandby : public Dispatcher,
+                  public md_config_obs_t {
+public:
+  // config observer bits
+  const char** get_tracked_conf_keys() const override;
+  void handle_conf_change(const struct md_config_t *conf,
+                         const std::set <std::string> &changed) override;
+
 protected:
   MonClient *monc;
-  Objecter *objecter;
   Messenger *client_messenger;
+  Objecter *objecter;
+
+  LogClient log_client;
+  LogChannelRef clog, audit_clog;
 
   Mutex lock;
   SafeTimer timer;
@@ -42,6 +53,7 @@ protected:
   std::string state_str();
 
   void handle_mgr_map(MMgrMap *m);
+  void _update_log_config();
 
 public:
   MgrStandby();