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

#include <plugin_metric_collector.h>

Inheritance diagram for kcenon::monitoring::plugin_metric_collector:
Inheritance graph
Collaboration diagram for kcenon::monitoring::plugin_metric_collector:
Collaboration graph

Classes

struct  cached_metric
 

Public Member Functions

 plugin_metric_collector (const plugin_collector_config &config={})
 
 ~plugin_metric_collector () override
 
 plugin_metric_collector (const plugin_metric_collector &)=delete
 
plugin_metric_collectoroperator= (const plugin_metric_collector &)=delete
 
 plugin_metric_collector (plugin_metric_collector &&)=delete
 
plugin_metric_collectoroperator= (plugin_metric_collector &&)=delete
 
bool register_plugin (std::unique_ptr< metric_collector_plugin > plugin)
 
bool unregister_plugin (const std::string &plugin_name)
 
std::vector< std::string > get_registered_plugins () const
 
bool start ()
 
void stop ()
 
bool is_running () const
 
common::VoidResult start_collection (const collection_config &config) override
 Start automatic metric collection.
 
common::VoidResult stop_collection () override
 Stop automatic metric collection.
 
bool is_collecting () const override
 Check if collector is currently active.
 
collection_config get_config () const override
 Get current collection configuration.
 
metric_stats get_stats () const override
 Get collector statistics.
 
void reset_stats () override
 Reset collector statistics.
 
std::vector< metricget_cached_metrics (const std::optional< std::string > &plugin_name=std::nullopt) const
 
std::vector< metric_statsget_aggregated_metrics (size_t window_seconds=60) const
 
common::Result< std::vector< metric > > force_collect () override
 
common::Result< std::vector< metric > > collect_metrics () override
 Collect metrics based on current configuration.
 
common::VoidResult register_observer (std::shared_ptr< interface_monitoring_observer > observer) override
 Register an observer for events.
 
common::VoidResult unregister_observer (std::shared_ptr< interface_monitoring_observer > observer) override
 Unregister an observer.
 
std::vector< std::string > get_metric_types () const override
 Get the types of metrics this collector supports.
 
common::VoidResult update_config (const collection_config &config) override
 Update collection configuration.
 
- Public Member Functions inherited from kcenon::monitoring::interface_metric_collector
virtual ~interface_metric_collector ()=default
 
- Public Member Functions inherited from kcenon::monitoring::interface_observable
virtual ~interface_observable ()=default
 
virtual void notify_metric (const metric_event &event)=0
 Notify all observers of a metric event.
 
virtual void notify_event (const system_event &event)=0
 Notify all observers of a system event.
 
virtual void notify_state_change (const state_change_event &event)=0
 Notify all observers of a state change.
 

Private Member Functions

void collection_worker ()
 
void collect_from_plugin (const std::string &name, metric_collector_plugin *plugin)
 
void notify_observers (const metric &m)
 
void cleanup_cache ()
 
void aggregate_metrics ()
 

Private Attributes

std::mutex plugins_mutex_
 
std::unordered_map< std::string, std::unique_ptr< metric_collector_plugin > > plugins_
 
std::mutex observers_mutex_
 
std::vector< std::weak_ptr< interface_monitoring_observer > > observers_
 
std::mutex cache_mutex_
 
std::vector< cached_metricmetric_cache_
 
std::atomic< bool > running_ {false}
 
std::vector< std::thread > worker_threads_
 
std::condition_variable work_cv_
 
std::mutex work_mutex_
 
plugin_collector_config config_
 
std::atomic< size_t > total_metrics_collected_ {0}
 
std::atomic< size_t > collection_errors_ {0}
 
std::chrono::steady_clock::time_point start_time_
 

Detailed Description

Main plugin-based metric collector implementation Manages multiple collector plugins and provides unified metric collection

Definition at line 117 of file plugin_metric_collector.h.

Constructor & Destructor Documentation

◆ plugin_metric_collector() [1/3]

kcenon::monitoring::plugin_metric_collector::plugin_metric_collector ( const plugin_collector_config & config = {})
explicit

◆ ~plugin_metric_collector()

kcenon::monitoring::plugin_metric_collector::~plugin_metric_collector ( )
override

◆ plugin_metric_collector() [2/3]

kcenon::monitoring::plugin_metric_collector::plugin_metric_collector ( const plugin_metric_collector & )
delete

◆ plugin_metric_collector() [3/3]

kcenon::monitoring::plugin_metric_collector::plugin_metric_collector ( plugin_metric_collector && )
delete

Member Function Documentation

◆ aggregate_metrics()

void kcenon::monitoring::plugin_metric_collector::aggregate_metrics ( )
private

◆ cleanup_cache()

void kcenon::monitoring::plugin_metric_collector::cleanup_cache ( )
private

◆ collect_from_plugin()

void kcenon::monitoring::plugin_metric_collector::collect_from_plugin ( const std::string & name,
metric_collector_plugin * plugin )
private

◆ collect_metrics()

common::Result< std::vector< metric > > kcenon::monitoring::plugin_metric_collector::collect_metrics ( )
overridevirtual

Collect metrics based on current configuration.

Returns
Result containing collected metrics or error

Implements kcenon::monitoring::interface_metric_collector.

◆ collection_worker()

void kcenon::monitoring::plugin_metric_collector::collection_worker ( )
private

◆ force_collect()

common::Result< std::vector< metric > > kcenon::monitoring::plugin_metric_collector::force_collect ( )
overridevirtual

Force immediate collection from all plugins

Returns
Collected metrics

Implements kcenon::monitoring::interface_metric_collector.

◆ get_aggregated_metrics()

std::vector< metric_stats > kcenon::monitoring::plugin_metric_collector::get_aggregated_metrics ( size_t window_seconds = 60) const

Get aggregated metrics

Parameters
window_secondsAggregation window in seconds
Returns
Aggregated metrics

◆ get_cached_metrics()

std::vector< metric > kcenon::monitoring::plugin_metric_collector::get_cached_metrics ( const std::optional< std::string > & plugin_name = std::nullopt) const

Get current metrics from cache

Parameters
plugin_nameOptional plugin name filter
Returns
Vector of cached metrics

◆ get_config()

collection_config kcenon::monitoring::plugin_metric_collector::get_config ( ) const
overridevirtual

Get current collection configuration.

Returns
Current configuration

Implements kcenon::monitoring::interface_metric_collector.

◆ get_metric_types()

std::vector< std::string > kcenon::monitoring::plugin_metric_collector::get_metric_types ( ) const
overridevirtual

Get the types of metrics this collector supports.

Returns
Vector of supported metric type names

Implements kcenon::monitoring::interface_metric_collector.

◆ get_registered_plugins()

std::vector< std::string > kcenon::monitoring::plugin_metric_collector::get_registered_plugins ( ) const

Get list of registered plugin names

Returns
Vector of plugin names

◆ get_stats()

metric_stats kcenon::monitoring::plugin_metric_collector::get_stats ( ) const
overridevirtual

Get collector statistics.

Returns
Statistics about collection performance

Implements kcenon::monitoring::interface_metric_collector.

◆ is_collecting()

bool kcenon::monitoring::plugin_metric_collector::is_collecting ( ) const
overridevirtual

Check if collector is currently active.

Returns
True if collecting, false otherwise

Implements kcenon::monitoring::interface_metric_collector.

◆ is_running()

bool kcenon::monitoring::plugin_metric_collector::is_running ( ) const

Check if collector is running

Returns
true if collection is active

◆ notify_observers()

void kcenon::monitoring::plugin_metric_collector::notify_observers ( const metric & m)
private

◆ operator=() [1/2]

plugin_metric_collector & kcenon::monitoring::plugin_metric_collector::operator= ( const plugin_metric_collector & )
delete

◆ operator=() [2/2]

plugin_metric_collector & kcenon::monitoring::plugin_metric_collector::operator= ( plugin_metric_collector && )
delete

◆ register_observer()

common::VoidResult kcenon::monitoring::plugin_metric_collector::register_observer ( std::shared_ptr< interface_monitoring_observer > observer)
overridevirtual

Register an observer for events.

Parameters
observerThe observer to register
Returns
Result indicating success or failure

Implements kcenon::monitoring::interface_observable.

◆ register_plugin()

bool kcenon::monitoring::plugin_metric_collector::register_plugin ( std::unique_ptr< metric_collector_plugin > plugin)

Register a metric collector plugin

Parameters
pluginPlugin instance to register
Returns
true if registered successfully

◆ reset_stats()

void kcenon::monitoring::plugin_metric_collector::reset_stats ( )
overridevirtual

Reset collector statistics.

Implements kcenon::monitoring::interface_metric_collector.

◆ start()

bool kcenon::monitoring::plugin_metric_collector::start ( )

Start metric collection

Returns
true if started successfully

◆ start_collection()

common::VoidResult kcenon::monitoring::plugin_metric_collector::start_collection ( const collection_config & config)
overridevirtual

Start automatic metric collection.

Parameters
configCollection configuration
Returns
Result indicating success or failure

Implements kcenon::monitoring::interface_metric_collector.

◆ stop()

void kcenon::monitoring::plugin_metric_collector::stop ( )

Stop metric collection

◆ stop_collection()

common::VoidResult kcenon::monitoring::plugin_metric_collector::stop_collection ( )
overridevirtual

Stop automatic metric collection.

Returns
Result indicating success or failure

Implements kcenon::monitoring::interface_metric_collector.

◆ unregister_observer()

common::VoidResult kcenon::monitoring::plugin_metric_collector::unregister_observer ( std::shared_ptr< interface_monitoring_observer > observer)
overridevirtual

Unregister an observer.

Parameters
observerThe observer to unregister
Returns
Result indicating success or failure

Implements kcenon::monitoring::interface_observable.

◆ unregister_plugin()

bool kcenon::monitoring::plugin_metric_collector::unregister_plugin ( const std::string & plugin_name)

Unregister a plugin by name

Parameters
plugin_nameName of the plugin to unregister
Returns
true if unregistered successfully

◆ update_config()

common::VoidResult kcenon::monitoring::plugin_metric_collector::update_config ( const collection_config & config)
overridevirtual

Update collection configuration.

Parameters
configNew configuration
Returns
Result indicating success or failure

Implements kcenon::monitoring::interface_metric_collector.

Member Data Documentation

◆ cache_mutex_

std::mutex kcenon::monitoring::plugin_metric_collector::cache_mutex_
mutableprivate

Definition at line 217 of file plugin_metric_collector.h.

◆ collection_errors_

std::atomic<size_t> kcenon::monitoring::plugin_metric_collector::collection_errors_ {0}
private

Definition at line 231 of file plugin_metric_collector.h.

231{0};

◆ config_

plugin_collector_config kcenon::monitoring::plugin_metric_collector::config_
private

Definition at line 227 of file plugin_metric_collector.h.

◆ metric_cache_

std::vector<cached_metric> kcenon::monitoring::plugin_metric_collector::metric_cache_
private

Definition at line 218 of file plugin_metric_collector.h.

◆ observers_

std::vector<std::weak_ptr<interface_monitoring_observer> > kcenon::monitoring::plugin_metric_collector::observers_
private

Definition at line 209 of file plugin_metric_collector.h.

◆ observers_mutex_

std::mutex kcenon::monitoring::plugin_metric_collector::observers_mutex_
mutableprivate

Definition at line 208 of file plugin_metric_collector.h.

◆ plugins_

std::unordered_map<std::string, std::unique_ptr<metric_collector_plugin> > kcenon::monitoring::plugin_metric_collector::plugins_
private

Definition at line 205 of file plugin_metric_collector.h.

◆ plugins_mutex_

std::mutex kcenon::monitoring::plugin_metric_collector::plugins_mutex_
mutableprivate

Definition at line 204 of file plugin_metric_collector.h.

◆ running_

std::atomic<bool> kcenon::monitoring::plugin_metric_collector::running_ {false}
private

Definition at line 221 of file plugin_metric_collector.h.

221{false};

◆ start_time_

std::chrono::steady_clock::time_point kcenon::monitoring::plugin_metric_collector::start_time_
private

Definition at line 232 of file plugin_metric_collector.h.

◆ total_metrics_collected_

std::atomic<size_t> kcenon::monitoring::plugin_metric_collector::total_metrics_collected_ {0}
private

Definition at line 230 of file plugin_metric_collector.h.

230{0};

◆ work_cv_

std::condition_variable kcenon::monitoring::plugin_metric_collector::work_cv_
private

Definition at line 223 of file plugin_metric_collector.h.

◆ work_mutex_

std::mutex kcenon::monitoring::plugin_metric_collector::work_mutex_
mutableprivate

Definition at line 224 of file plugin_metric_collector.h.

◆ worker_threads_

std::vector<std::thread> kcenon::monitoring::plugin_metric_collector::worker_threads_
private

Definition at line 222 of file plugin_metric_collector.h.


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