Monitoring System 0.1.0
System resource monitoring with pluggable collectors and alerting
Loading...
Searching...
No Matches
aggregating_monitor Class Reference

Example 6: Aggregating monitor pattern. More...

Inheritance diagram for aggregating_monitor:
Inheritance graph
Collaboration diagram for aggregating_monitor:
Collaboration graph

Public Member Functions

void add_monitor (std::shared_ptr< IMonitor > monitor)
 
common::VoidResult record_metric (const std::string &name, double value) override
 
common::VoidResult record_metric (const std::string &name, double value, const std::unordered_map< std::string, std::string > &tags) override
 
common::Result< metrics_snapshotget_metrics () override
 
common::Result< health_check_resultcheck_health () override
 
common::VoidResult reset () override
 
size_t monitor_count () const
 

Private Attributes

std::vector< std::shared_ptr< IMonitor > > monitors_
 
std::mutex mutex_
 

Detailed Description

Example 6: Aggregating monitor pattern.

Examples
monitor_factory_pattern_example.cpp.

Definition at line 301 of file monitor_factory_pattern_example.cpp.

Member Function Documentation

◆ add_monitor()

void aggregating_monitor::add_monitor ( std::shared_ptr< IMonitor > monitor)
inline
Examples
monitor_factory_pattern_example.cpp.

Definition at line 307 of file monitor_factory_pattern_example.cpp.

307 {
308 std::lock_guard<std::mutex> lock(mutex_);
309 monitors_.push_back(monitor);
310 }
std::vector< std::shared_ptr< IMonitor > > monitors_

References monitors_, and mutex_.

◆ check_health()

common::Result< health_check_result > aggregating_monitor::check_health ( )
inlineoverride
Examples
monitor_factory_pattern_example.cpp.

Definition at line 351 of file monitor_factory_pattern_example.cpp.

351 {
352 health_check_result result;
353 result.timestamp = std::chrono::system_clock::now();
354 result.status = health_status::healthy;
355 result.message = "Aggregating monitor";
356
357 return common::ok(std::move(result));
358 }
Result of a health check operation.
std::chrono::system_clock::time_point timestamp

References kcenon::monitoring::health_check_result::message, kcenon::monitoring::health_check_result::status, and kcenon::monitoring::health_check_result::timestamp.

◆ get_metrics()

common::Result< metrics_snapshot > aggregating_monitor::get_metrics ( )
inlineoverride
Examples
monitor_factory_pattern_example.cpp.

Definition at line 332 of file monitor_factory_pattern_example.cpp.

332 {
333 std::lock_guard<std::mutex> lock(mutex_);
334
335 metrics_snapshot combined;
336 combined.source_id = "aggregating_monitor";
337 combined.capture_time = std::chrono::system_clock::now();
338
339 for (auto& monitor : monitors_) {
340 auto result = monitor->get_metrics();
341 if (result) {
342 for (const auto& metric : result.value().metrics) {
343 combined.metrics.push_back(metric);
344 }
345 }
346 }
347
348 return common::ok(std::move(combined));
349 }
Basic metric structure for interface compatibility.
std::variant< double, int64_t, std::string > value
Complete snapshot of metrics at a point in time.
std::chrono::system_clock::time_point capture_time
std::vector< metric_value > metrics

References kcenon::monitoring::metrics_snapshot::capture_time, kcenon::monitoring::metrics_snapshot::metrics, monitors_, mutex_, kcenon::monitoring::metrics_snapshot::source_id, and kcenon::monitoring::metric::value.

◆ monitor_count()

size_t aggregating_monitor::monitor_count ( ) const
inline
Examples
monitor_factory_pattern_example.cpp.

Definition at line 368 of file monitor_factory_pattern_example.cpp.

368 {
369 std::lock_guard<std::mutex> lock(mutex_);
370 return monitors_.size();
371 }

References monitors_, and mutex_.

◆ record_metric() [1/2]

common::VoidResult aggregating_monitor::record_metric ( const std::string & name,
double value )
inlineoverride
Examples
monitor_factory_pattern_example.cpp.

Definition at line 312 of file monitor_factory_pattern_example.cpp.

312 {
313 std::lock_guard<std::mutex> lock(mutex_);
314 for (auto& monitor : monitors_) {
315 monitor->record_metric(name, value);
316 }
317 return common::ok();
318 }

References monitors_, and mutex_.

◆ record_metric() [2/2]

common::VoidResult aggregating_monitor::record_metric ( const std::string & name,
double value,
const std::unordered_map< std::string, std::string > & tags )
inlineoverride

Definition at line 320 of file monitor_factory_pattern_example.cpp.

324 {
325 std::lock_guard<std::mutex> lock(mutex_);
326 for (auto& monitor : monitors_) {
327 monitor->record_metric(name, value, tags);
328 }
329 return common::ok();
330 }

References monitors_, and mutex_.

◆ reset()

common::VoidResult aggregating_monitor::reset ( )
inlineoverride
Examples
monitor_factory_pattern_example.cpp.

Definition at line 360 of file monitor_factory_pattern_example.cpp.

360 {
361 std::lock_guard<std::mutex> lock(mutex_);
362 for (auto& monitor : monitors_) {
363 monitor->reset();
364 }
365 return common::ok();
366 }

References monitors_, and mutex_.

Member Data Documentation

◆ monitors_

std::vector<std::shared_ptr<IMonitor> > aggregating_monitor::monitors_
private

◆ mutex_

std::mutex aggregating_monitor::mutex_
private

The documentation for this class was generated from the following file: