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

Unified process-level metrics collector. More...

#include <process_metrics_collector.h>

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

Public Member Functions

 process_metrics_collector ()
 
 process_metrics_collector (process_metrics_config config)
 
 ~process_metrics_collector () override=default
 
 process_metrics_collector (const process_metrics_collector &)=delete
 
process_metrics_collectoroperator= (const process_metrics_collector &)=delete
 
 process_metrics_collector (process_metrics_collector &&)=delete
 
process_metrics_collectoroperator= (process_metrics_collector &&)=delete
 
auto name () const -> std::string_view override
 Get the unique name of this plugin.
 
auto collect () -> std::vector< metric > override
 Collect current metrics from this plugin.
 
auto interval () const -> std::chrono::milliseconds override
 Get the collection interval for this plugin.
 
auto is_available () const -> bool override
 Check if this plugin is available on the current system.
 
bool is_healthy () const
 
auto get_metric_types () const -> std::vector< std::string > override
 Get supported metric types.
 
bool initialize (const config_map &config) override
 Initialize plugin with configuration.
 
auto get_statistics () const -> stats_map override
 
process_metrics get_last_metrics () const
 
fd_metrics get_last_fd_metrics () const
 
inode_metrics get_last_inode_metrics () const
 
context_switch_metrics get_last_context_switch_metrics () const
 
bool is_fd_monitoring_available () const
 
bool is_inode_monitoring_available () const
 
bool is_context_switch_monitoring_available () const
 
- Public Member Functions inherited from kcenon::monitoring::collector_plugin
virtual ~collector_plugin ()=default
 
virtual auto get_metadata () const -> plugin_metadata
 Get plugin metadata.
 
virtual void shutdown ()
 Shutdown plugin and release resources.
 

Private Member Functions

void collect_fd_metrics (std::vector< metric > &metrics)
 
void collect_inode_metrics (std::vector< metric > &metrics)
 
void collect_context_switch_metrics (std::vector< metric > &metrics)
 
void add_fd_metrics (std::vector< metric > &metrics, const fd_metrics &fd_data)
 
void add_inode_metrics (std::vector< metric > &metrics, const inode_metrics &inode_data)
 
void add_context_switch_metrics (std::vector< metric > &metrics, const context_switch_metrics &cs_data)
 

Private Attributes

std::unique_ptr< fd_info_collectorfd_collector_
 
std::unique_ptr< inode_info_collectorinode_collector_
 
std::unique_ptr< context_switch_info_collectorcs_collector_
 
process_metrics_config config_
 
process_metrics last_metrics_
 
std::chrono::milliseconds collection_interval_ {std::chrono::seconds(5)}
 
std::mutex metrics_mutex_
 
std::atomic< uint64_t > collection_count_ {0}
 
std::atomic< uint64_t > collection_errors_ {0}
 

Detailed Description

Unified process-level metrics collector.

Consolidates file descriptor, inode, and context switch monitoring into a single collector for comprehensive process health monitoring.

Configuration options:

  • "collect_fd": "true"/"false" - Enable FD collection (default: true)
  • "collect_inodes": "true"/"false" - Enable inode collection (default: true)
  • "collect_context_switches": "true"/"false" - Enable context switch collection (default: true)
  • "include_pseudo_fs": "true"/"false" - Include pseudo filesystems (default: false)
  • "fd_warning_threshold": percentage (default: 80.0)
  • "fd_critical_threshold": percentage (default: 95.0)
  • "inode_warning_threshold": percentage (default: 80.0)
  • "inode_critical_threshold": percentage (default: 95.0)
  • "context_switch_rate_warning": rate (default: 100000.0)
Examples
system_collectors_example.cpp.

Definition at line 240 of file process_metrics_collector.h.

Constructor & Destructor Documentation

◆ process_metrics_collector() [1/4]

kcenon::monitoring::process_metrics_collector::process_metrics_collector ( )

◆ process_metrics_collector() [2/4]

kcenon::monitoring::process_metrics_collector::process_metrics_collector ( process_metrics_config config)
explicit

◆ ~process_metrics_collector()

kcenon::monitoring::process_metrics_collector::~process_metrics_collector ( )
overridedefault

◆ process_metrics_collector() [3/4]

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

◆ process_metrics_collector() [4/4]

kcenon::monitoring::process_metrics_collector::process_metrics_collector ( process_metrics_collector && )
delete

Member Function Documentation

◆ add_context_switch_metrics()

void kcenon::monitoring::process_metrics_collector::add_context_switch_metrics ( std::vector< metric > & metrics,
const context_switch_metrics & cs_data )
private

◆ add_fd_metrics()

void kcenon::monitoring::process_metrics_collector::add_fd_metrics ( std::vector< metric > & metrics,
const fd_metrics & fd_data )
private

◆ add_inode_metrics()

void kcenon::monitoring::process_metrics_collector::add_inode_metrics ( std::vector< metric > & metrics,
const inode_metrics & inode_data )
private

◆ collect()

auto kcenon::monitoring::process_metrics_collector::collect ( ) -> std::vector< metric >
overridevirtual

Collect current metrics from this plugin.

Returns
Vector of collected metrics

This method is called periodically based on interval(). Implementations should:

  • Return quickly (< 100ms recommended)
  • Handle errors gracefully (return empty vector on failure)
  • Be thread-safe if concurrent collection is enabled
  • Avoid blocking I/O when possible

Implements kcenon::monitoring::collector_plugin.

Examples
system_collectors_example.cpp.

Referenced by main().

Here is the caller graph for this function:

◆ collect_context_switch_metrics()

void kcenon::monitoring::process_metrics_collector::collect_context_switch_metrics ( std::vector< metric > & metrics)
private

◆ collect_fd_metrics()

void kcenon::monitoring::process_metrics_collector::collect_fd_metrics ( std::vector< metric > & metrics)
private

◆ collect_inode_metrics()

void kcenon::monitoring::process_metrics_collector::collect_inode_metrics ( std::vector< metric > & metrics)
private

◆ get_last_context_switch_metrics()

context_switch_metrics kcenon::monitoring::process_metrics_collector::get_last_context_switch_metrics ( ) const

◆ get_last_fd_metrics()

fd_metrics kcenon::monitoring::process_metrics_collector::get_last_fd_metrics ( ) const

◆ get_last_inode_metrics()

inode_metrics kcenon::monitoring::process_metrics_collector::get_last_inode_metrics ( ) const

◆ get_last_metrics()

process_metrics kcenon::monitoring::process_metrics_collector::get_last_metrics ( ) const

◆ get_metric_types()

auto kcenon::monitoring::process_metrics_collector::get_metric_types ( ) const -> std::vector< std::string >
overridevirtual

Get supported metric types.

Returns
Vector of metric type names this plugin produces

Used for filtering and documentation.

Implements kcenon::monitoring::collector_plugin.

◆ get_statistics()

auto kcenon::monitoring::process_metrics_collector::get_statistics ( ) const -> stats_map
overridevirtual

Get collector statistics

Returns
Map of statistics

Reimplemented from kcenon::monitoring::collector_plugin.

Examples
system_collectors_example.cpp.

Referenced by main().

Here is the caller graph for this function:

◆ initialize()

bool kcenon::monitoring::process_metrics_collector::initialize ( const config_map & )
overridevirtual

Initialize plugin with configuration.

Parameters
configConfiguration key-value pairs
Returns
True if initialization succeeded

Called once after plugin registration. Optional: Default implementation always succeeds.

Reimplemented from kcenon::monitoring::collector_plugin.

Examples
system_collectors_example.cpp.

Referenced by main().

Here is the caller graph for this function:

◆ interval()

auto kcenon::monitoring::process_metrics_collector::interval ( ) const -> std::chrono::milliseconds
inlineoverridevirtual

Get the collection interval for this plugin.

Returns
Collection interval in milliseconds

The registry uses this value to schedule collection tasks. Typical values:

  • Fast metrics (CPU, memory): 1-5 seconds
  • Slow metrics (disk, network): 10-60 seconds
  • Very slow metrics (SMART data): 5-15 minutes

Implements kcenon::monitoring::collector_plugin.

Definition at line 254 of file process_metrics_collector.h.

References collection_interval_.

◆ is_available()

auto kcenon::monitoring::process_metrics_collector::is_available ( ) const -> bool
overridevirtual

Check if this plugin is available on the current system.

Returns
True if plugin can collect metrics, false otherwise

Availability checks may include:

  • Platform compatibility (Linux-only, Windows-only)
  • Hardware presence (GPU, sensors)
  • Permission checks (root required)
  • Resource availability (proc filesystem, WMI)

The registry may skip unavailable plugins during registration.

Implements kcenon::monitoring::collector_plugin.

Examples
system_collectors_example.cpp.

Referenced by main().

Here is the caller graph for this function:

◆ is_context_switch_monitoring_available()

bool kcenon::monitoring::process_metrics_collector::is_context_switch_monitoring_available ( ) const

◆ is_fd_monitoring_available()

bool kcenon::monitoring::process_metrics_collector::is_fd_monitoring_available ( ) const

◆ is_healthy()

bool kcenon::monitoring::process_metrics_collector::is_healthy ( ) const

Check if collector is in a healthy state

Returns
True if collector is operational (regardless of enabled state)

◆ is_inode_monitoring_available()

bool kcenon::monitoring::process_metrics_collector::is_inode_monitoring_available ( ) const

◆ name()

auto kcenon::monitoring::process_metrics_collector::name ( ) const -> std::string_view
inlineoverridevirtual

Get the unique name of this plugin.

Returns
Plugin name (must be unique within registry)

The name is used for:

  • Plugin lookup and discovery
  • Configuration mapping
  • Metric tagging (added as "collector" tag)

Implements kcenon::monitoring::collector_plugin.

Examples
system_collectors_example.cpp.

Definition at line 252 of file process_metrics_collector.h.

252{ return "process_metrics_collector"; }

Referenced by main().

Here is the caller graph for this function:

◆ operator=() [1/2]

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

◆ operator=() [2/2]

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

Member Data Documentation

◆ collection_count_

std::atomic<uint64_t> kcenon::monitoring::process_metrics_collector::collection_count_ {0}
mutableprivate

Definition at line 294 of file process_metrics_collector.h.

294{0};

◆ collection_errors_

std::atomic<uint64_t> kcenon::monitoring::process_metrics_collector::collection_errors_ {0}
mutableprivate

Definition at line 295 of file process_metrics_collector.h.

295{0};

◆ collection_interval_

std::chrono::milliseconds kcenon::monitoring::process_metrics_collector::collection_interval_ {std::chrono::seconds(5)}
private

Definition at line 290 of file process_metrics_collector.h.

290{std::chrono::seconds(5)};

Referenced by interval().

◆ config_

process_metrics_config kcenon::monitoring::process_metrics_collector::config_
private

Definition at line 288 of file process_metrics_collector.h.

◆ cs_collector_

std::unique_ptr<context_switch_info_collector> kcenon::monitoring::process_metrics_collector::cs_collector_
private

Definition at line 286 of file process_metrics_collector.h.

◆ fd_collector_

std::unique_ptr<fd_info_collector> kcenon::monitoring::process_metrics_collector::fd_collector_
private

Definition at line 284 of file process_metrics_collector.h.

◆ inode_collector_

std::unique_ptr<inode_info_collector> kcenon::monitoring::process_metrics_collector::inode_collector_
private

Definition at line 285 of file process_metrics_collector.h.

◆ last_metrics_

process_metrics kcenon::monitoring::process_metrics_collector::last_metrics_
private

Definition at line 289 of file process_metrics_collector.h.

◆ metrics_mutex_

std::mutex kcenon::monitoring::process_metrics_collector::metrics_mutex_
mutableprivate

Definition at line 291 of file process_metrics_collector.h.


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