]>
Commit | Line | Data |
---|---|---|
31f18b77 FG |
1 | // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- |
2 | // vim: ts=8 sw=2 smarttab | |
3 | ||
4 | #pragma once | |
5 | ||
6 | #include "include/Context.h" | |
7 | #include "PaxosService.h" | |
8 | #include "mon/PGMap.h" | |
224ce89b | 9 | #include "mgr/ServiceMap.h" |
31f18b77 | 10 | |
31f18b77 FG |
11 | class MgrStatMonitor : public PaxosService { |
12 | // live version | |
13 | version_t version = 0; | |
14 | PGMapDigest digest; | |
224ce89b | 15 | ServiceMap service_map; |
11fdf7f2 | 16 | std::map<std::string,ProgressEvent> progress_events; |
31f18b77 FG |
17 | |
18 | // pending commit | |
19 | PGMapDigest pending_digest; | |
224ce89b | 20 | health_check_map_t pending_health_checks; |
11fdf7f2 | 21 | std::map<std::string,ProgressEvent> pending_progress_events; |
f67539c2 | 22 | ceph::buffer::list pending_service_map_bl; |
31f18b77 | 23 | |
31f18b77 | 24 | public: |
f67539c2 | 25 | MgrStatMonitor(Monitor &mn, Paxos &p, const std::string& service_name); |
31f18b77 FG |
26 | ~MgrStatMonitor() override; |
27 | ||
28 | void init() override {} | |
29 | void on_shutdown() override {} | |
30 | ||
31 | void create_initial() override; | |
32 | void update_from_paxos(bool *need_bootstrap) override; | |
33 | void create_pending() override; | |
34 | void encode_pending(MonitorDBStore::TransactionRef t) override; | |
11fdf7f2 | 35 | version_t get_trim_to() const override; |
31f18b77 | 36 | |
181888fb FG |
37 | bool definitely_converted_snapsets() const { |
38 | return digest.definitely_converted_snapsets(); | |
39 | } | |
40 | ||
31f18b77 FG |
41 | bool preprocess_query(MonOpRequestRef op) override; |
42 | bool prepare_update(MonOpRequestRef op) override; | |
43 | ||
44 | void encode_full(MonitorDBStore::TransactionRef t) override { } | |
45 | ||
46 | bool preprocess_report(MonOpRequestRef op); | |
47 | bool prepare_report(MonOpRequestRef op); | |
48 | ||
49 | bool preprocess_getpoolstats(MonOpRequestRef op); | |
50 | bool preprocess_statfs(MonOpRequestRef op); | |
51 | ||
52 | void check_sub(Subscription *sub); | |
53 | void check_subs(); | |
54 | void send_digests(); | |
55 | ||
56 | void on_active() override; | |
31f18b77 FG |
57 | void tick() override; |
58 | ||
59 | uint64_t get_last_osd_stat_seq(int osd) { | |
60 | return digest.get_last_osd_stat_seq(osd); | |
61 | } | |
62 | ||
224ce89b | 63 | void update_logger(); |
31f18b77 | 64 | |
11fdf7f2 | 65 | const ServiceMap& get_service_map() const { |
224ce89b WB |
66 | return service_map; |
67 | } | |
31f18b77 | 68 | |
11fdf7f2 TL |
69 | const std::map<std::string,ProgressEvent>& get_progress_events() { |
70 | return progress_events; | |
71 | } | |
72 | ||
73 | // pg stat access | |
74 | const pool_stat_t* get_pool_stat(int64_t poolid) const { | |
75 | auto i = digest.pg_pool_sum.find(poolid); | |
76 | if (i != digest.pg_pool_sum.end()) { | |
77 | return &i->second; | |
78 | } | |
79 | return nullptr; | |
80 | } | |
81 | ||
82 | const PGMapDigest& get_digest() { | |
83 | return digest; | |
84 | } | |
85 | ||
86 | ceph_statfs get_statfs(OSDMap& osdmap, | |
20effc67 | 87 | std::optional<int64_t> data_pool) const { |
11fdf7f2 TL |
88 | return digest.get_statfs(osdmap, data_pool); |
89 | } | |
90 | ||
f67539c2 | 91 | void print_summary(ceph::Formatter *f, std::ostream *out) const { |
11fdf7f2 TL |
92 | digest.print_summary(f, out); |
93 | } | |
f67539c2 | 94 | void dump_info(ceph::Formatter *f) const { |
11fdf7f2 TL |
95 | digest.dump(f); |
96 | f->dump_object("servicemap", get_service_map()); | |
97 | } | |
f67539c2 TL |
98 | void dump_cluster_stats(std::stringstream *ss, |
99 | ceph::Formatter *f, | |
100 | bool verbose) const { | |
11fdf7f2 TL |
101 | digest.dump_cluster_stats(ss, f, verbose); |
102 | } | |
f67539c2 | 103 | void dump_pool_stats(const OSDMap& osdm, std::stringstream *ss, ceph::Formatter *f, |
11fdf7f2 TL |
104 | bool verbose) const { |
105 | digest.dump_pool_stats_full(osdm, ss, f, verbose); | |
106 | } | |
31f18b77 | 107 | }; |