}
-enum {
- l_mon_first = 456000,
- l_mon_last,
-};
-
-
class AdminHook : public AdminSocketHook {
Monitor *mon;
public:
assert(!logger);
{
PerfCountersBuilder pcb(g_ceph_context, "mon", l_mon_first, l_mon_last);
- // ...
+ pcb.add_u64(l_mon_num_sessions, "num_sessions");
+ pcb.add_u64_counter(l_mon_session_add, "session_add");
+ pcb.add_u64_counter(l_mon_session_rm, "session_rm");
+ pcb.add_u64_counter(l_mon_session_trim, "session_trim");
logger = pcb.create_perf_counters();
cct->get_perfcounters_collection()->add(logger);
}
}
s->con->set_priv(NULL);
session_map.remove_session(s);
+ logger->set(l_mon_num_sessions, session_map.get_size());
+ logger->inc(l_mon_session_rm);
}
void Monitor::remove_all_sessions()
while (!session_map.sessions.empty()) {
MonSession *s = session_map.sessions.front();
remove_session(s);
+ logger->inc(l_mon_session_rm);
}
+ logger->set(l_mon_num_sessions, session_map.get_size());
}
void Monitor::send_command(const entity_inst_t& inst,
m->get_connection()->set_priv(s->get());
dout(10) << "ms_dispatch new session " << s << " for " << s->inst << dendl;
+ logger->set(l_mon_num_sessions, session_map.get_size());
+ logger->inc(l_mon_session_add);
+
if (!src_is_mon) {
dout(10) << "setting timeout on session" << dendl;
// set an initial timeout here, so we will trim this session even if they don't
<< " (until " << s->until << " < now " << now << ")" << dendl;
messenger->mark_down(s->con);
remove_session(s);
+ logger->inc(l_mon_session_trim);
} else if (!exited_quorum.is_zero()) {
if (now > (exited_quorum + 2 * g_conf->mon_lease)) {
// boot the client Session because we've taken too long getting back in
dout(10) << " trimming session " << s->con << " " << s->inst
<< " because we've been out of quorum too long" << dendl;
messenger->mark_down(s->con);
+ logger->inc(l_mon_session_trim);
remove_session(s);
}
}