SWC-DB  v0.5.12 C++ documentations
SWC-DB© (Super Wide Column Database) - High Performance Scalable Database (https://github.com/kashirin-alex/swc-db)
MetricsReporting.cc
Go to the documentation of this file.
1 /*
2  * SWC-DB© Copyright since 2019 Alex Kashirin <kashirin.alex@gmail.com>
3  * License details at <https://github.com/kashirin-alex/swc-db/#license>
4  */
5 
6 
8 
9 
10 namespace SWC { namespace FsBroker { namespace Metric {
11 
12 
13 
14 class Item_Fds : public Item_CountVolume {
15  public:
16  Item_Fds() : Item_CountVolume("fds") { }
17 
18  virtual ~Item_Fds() noexcept { }
19 
21  const DB::Cell::KeyVec& parent_key) override {
22  DB::Cell::KeyVec key;
23  key.reserve(parent_key.size() + 1);
24  key.copy(parent_key);
25  key.add(name);
26 
27  DB::Cells::Cell cell;
28  cell.flag = DB::Cells::INSERT;
29  cell.set_time_order_desc(true);
30  cell.key.add(key);
31 
34  wfields.add(Core::Vector<std::string>({"open", "opened"}));
35  wfields.add(Core::Vector<std::string>({"Open FDs", "Openings"}));
37 
38  cell.set_value(DB::Types::Encoder::ZSTD, wfields.base, wfields.fill());
39  colp->add(cell);
40  }
41 };
42 
43 
44 
46  : Common::Query::Update::Metric::Reporting(
47  Env::Clients::get(),
48  Env::IoCtx::io(),
49  Env::Config::settings()
50  ->get<Config::Property::Value_int32_g>(
51  "swc.FsBroker.metrics.report.interval"),
52  Env::Config::settings()->get_bool(
53  "swc.FsBroker.metrics.report.broker")
54  ? client::Clients::BROKER
55  : client::Clients::DEFAULT
56  ),
57  net(nullptr), fds(new Item_Fds()) {
58 }
59 
60 void Reporting::configure_fsbroker(const char*, const Comm::EndPoints& endpoints) {
61  char hostname[256];
62  if(gethostname(hostname, sizeof(hostname)) == -1)
63  SWC_THROW(errno, "gethostname");
64 
66  "swcdb", "fsbroker", hostname, endpoints
67  );
68 
69  level->metrics.emplace_back(
71  endpoints, Env::Config::settings()->get_bool("swc.comm.ssl")));
72 
73  const auto& fs = Env::FsInterface::fs();
74  if(fs->statistics.enabled)
75  level->metrics.emplace_back(new Item_FS(fs));
76  level->metrics.emplace_back(fds);
77 }
78 
79 
80 
81 }}} // namespace SWC::FsBroker::Metric
SWC::Common::Query::Update::Metric::Reporting::Reporting
Reporting(const SWC::client::Clients::Ptr &a_clients, const Comm::IoContextPtr &a_io, Config::Property::Value_int32_g::Ptr a_cfg_intval, client::Clients::Flag a_executor=client::Clients::DEFAULT)
Definition: MetricsReporting.h:856
SWC::DB::Cells::Cell::set_value
SWC_CAN_INLINE void set_value(uint8_t *v, uint32_t len, bool owner)
Definition: Cell.h:223
SWC::DB::Cell::KeyVec
Definition: CellKeyVec.h:21
SWC::Env::Config::settings
static SWC::Config::Settings::Ptr & settings()
Definition: Settings.h:128
SWC_THROW
#define SWC_THROW(_code_, _msg_)
Definition: Exception.h:134
SWC::Common::Query::Update::Metric::Item_FS
Definition: MetricsReporting.h:680
SWC::Common::Query::Update::Metric::Reporting::configure
virtual Level * configure(const char *group_name, const char *inst_name, const char *host, const Comm::EndPoints &endpoints)
Definition: MetricsReporting.h:865
SWC::FsBroker::Metric::Item_Fds::~Item_Fds
virtual ~Item_Fds() noexcept
Definition: MetricsReporting.cc:18
SWC::FS::BROKER
@ BROKER
Definition: FileSystem.h:24
SWC::DB::Cells::Cell
Definition: Cell.h:92
SWC::client::Query::Update::Handlers::Metric::MAX
@ MAX
Definition: Metrics.h:29
SWC::DB::Cells::Cell::key
DB::Cell::Key key
Definition: Cell.h:357
SWC::DB::Cell::Serial::Value::FieldsWriter::add
SWC_CAN_INLINE void add(Field *field)
Definition: CellValueSerialFields.h:42
SWC::DB::Cell::Key::add
SWC_CAN_INLINE void add(const std::string_view &fraction)
Definition: CellKey.h:86
SWC::Core::Buffer::base
value_type * base
Definition: Buffer.h:131
SWC
The SWC-DB C++ namespace 'SWC'.
Definition: main.cc:12
SWC::DB::Cell::KeyVec::size
constexpr SWC_CAN_INLINE size_type size() const noexcept
Definition: Vector.h:189
SWC::FsBroker::Metric::Item_Fds::definitions
void definitions(client::Query::Update::Handlers::Base::Column *colp, const DB::Cell::KeyVec &parent_key) override
Definition: MetricsReporting.cc:20
SWC::Env::FsInterface::fs
static SWC_CAN_INLINE FS::FileSystem::Ptr & fs() noexcept
Definition: Interface.h:155
SWC::client::Query::Update::Handlers::Base::Column
Definition: Base.h:30
SWC::DB::Cells::INSERT
@ INSERT
Definition: Cell.h:62
SWC::DB::Cells::Cell::set_time_order_desc
constexpr SWC_CAN_INLINE void set_time_order_desc(bool desc) noexcept
Definition: Cell.h:169
SWC::client::Query::Update::Handlers::Metric::FIELD_ID_VOLUME
static const uint24_t FIELD_ID_VOLUME
Definition: Metrics.h:40
SWC::client::Query::Update::Handlers::Metric::Item_CountVolume
Definition: Metrics.h:193
SWC::DB::Cell::Serial::Value::FieldsWriter
Definition: CellValueSerialFields.h:34
SWC::Core::Vector< int64_t >
SWC::FsBroker::Metric::Item_Fds
Definition: MetricsReporting.cc:14
SWC::Core::BufferDyn::fill
constexpr SWC_CAN_INLINE size_t fill() const noexcept
Definition: Buffer.h:192
SWC::client::Query::Update::Handlers::Metric::Item_CountVolume::name
const std::string name
Definition: Metrics.h:197
SWC::DB::Cell::KeyVec::copy
void copy(const KeyVec &other)
Definition: CellKeyVec.h:181
SWC::client::Query::Update::Handlers::Metric::FIELD_ID_COUNT
static const uint24_t FIELD_ID_COUNT
Definition: Metrics.h:38
SWC::Common::Query::Update::Metric::Reporting
Definition: MetricsReporting.h:851
SWC::FsBroker::Metric::Item_Fds::Item_Fds
Item_Fds()
Definition: MetricsReporting.cc:16
SWC::DB::Cell::KeyVec::add
SWC_CAN_INLINE void add(const Fraction &fraction)
Definition: CellKeyVec.h:62
SWC::client::Query::Update::Handlers::Base::Column::add
virtual size_t add(const DynamicBuffer &cells, const DB::Cell::Key &upto_key, const DB::Cell::Key &from_key, uint32_t skip, bool malformed)=0
SWC::Common::Query::Update::Metric::Item_Net
Definition: MetricsReporting.h:72
MetricsReporting.h
SWC::Core::Vector::reserve
SWC_CAN_INLINE void reserve(size_type cap)
Definition: Vector.h:288
SWC::DB::Cells::Cell::flag
uint8_t flag
Definition: Cell.h:359