]> git.proxmox.com Git - ceph.git/blame - ceph/src/mon/MgrStatMonitor.h
import quincy beta 17.1.0
[ceph.git] / ceph / src / mon / MgrStatMonitor.h
CommitLineData
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
11class 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 24public:
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};