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

Unified platform-agnostic metrics collector. More...

#include <platform_metrics_collector.h>

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

Public Member Functions

 platform_metrics_collector ()
 
 platform_metrics_collector (platform_metrics_config config)
 
 ~platform_metrics_collector () override=default
 
 platform_metrics_collector (const platform_metrics_collector &)=delete
 
platform_metrics_collectoroperator= (const platform_metrics_collector &)=delete
 
 platform_metrics_collector (platform_metrics_collector &&)=delete
 
platform_metrics_collectoroperator= (platform_metrics_collector &&)=delete
 
auto name () const -> std::string_view override
 
auto collect () -> std::vector< metric > override
 
auto interval () const -> std::chrono::milliseconds override
 
auto is_available () const -> bool override
 
bool is_healthy () const
 
auto get_metric_types () const -> std::vector< std::string > override
 
bool initialize (const config_map &config) override
 
auto get_statistics () const -> stats_map override
 
platform_metrics get_last_metrics () const
 
platform_info get_platform_info () const
 
std::string get_platform_name () const
 
bool is_platform_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_platform_info_metrics (std::vector< metric > &metrics)
 
void collect_uptime_metrics (std::vector< metric > &metrics)
 
void collect_context_switch_metrics (std::vector< metric > &metrics)
 
void collect_tcp_metrics (std::vector< metric > &metrics)
 
void collect_socket_metrics (std::vector< metric > &metrics)
 
void collect_interrupt_metrics (std::vector< metric > &metrics)
 

Private Attributes

std::unique_ptr< platform_info_collectorcollector_
 
platform_metrics_config config_
 
platform_metrics last_metrics_
 
platform_info cached_platform_info_
 
bool platform_info_cached_ {false}
 
std::chrono::milliseconds collection_interval_ {std::chrono::seconds(10)}
 
std::mutex metrics_mutex_
 

Detailed Description

Unified platform-agnostic metrics collector.

Collects platform information and platform-specific metrics using the Strategy pattern. The metrics_provider interface abstracts platform differences, providing a unified API across Linux, macOS, and Windows.

This collector provides:

  • Platform identification (name, version, architecture)
  • System uptime and boot time
  • Context switch statistics
  • TCP connection state metrics
  • Socket buffer statistics
  • Interrupt statistics

Configuration options:

  • "collect_uptime": "true"/"false" (default: true)
  • "collect_context_switches": "true"/"false" (default: true)
  • "collect_tcp_states": "true"/"false" (default: true)
  • "collect_socket_buffers": "true"/"false" (default: true)
  • "collect_interrupts": "true"/"false" (default: true)

Implements collector_plugin interface for plugin-based architecture.

Examples
platform_metrics_example.cpp.

Definition at line 250 of file platform_metrics_collector.h.

Constructor & Destructor Documentation

◆ platform_metrics_collector() [1/4]

kcenon::monitoring::platform_metrics_collector::platform_metrics_collector ( )

◆ platform_metrics_collector() [2/4]

kcenon::monitoring::platform_metrics_collector::platform_metrics_collector ( platform_metrics_config config)
explicit

◆ ~platform_metrics_collector()

kcenon::monitoring::platform_metrics_collector::~platform_metrics_collector ( )
overridedefault

◆ platform_metrics_collector() [3/4]

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

◆ platform_metrics_collector() [4/4]

kcenon::monitoring::platform_metrics_collector::platform_metrics_collector ( platform_metrics_collector && )
delete

Member Function Documentation

◆ collect()

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

Collect platform metrics

Returns
Vector of collected metrics

Implements kcenon::monitoring::collector_plugin.

Examples
platform_metrics_example.cpp.

Referenced by main().

Here is the caller graph for this function:

◆ collect_context_switch_metrics()

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

◆ collect_interrupt_metrics()

void kcenon::monitoring::platform_metrics_collector::collect_interrupt_metrics ( std::vector< metric > & metrics)
private

◆ collect_platform_info_metrics()

void kcenon::monitoring::platform_metrics_collector::collect_platform_info_metrics ( std::vector< metric > & metrics)
private

◆ collect_socket_metrics()

void kcenon::monitoring::platform_metrics_collector::collect_socket_metrics ( std::vector< metric > & metrics)
private

◆ collect_tcp_metrics()

void kcenon::monitoring::platform_metrics_collector::collect_tcp_metrics ( std::vector< metric > & metrics)
private

◆ collect_uptime_metrics()

void kcenon::monitoring::platform_metrics_collector::collect_uptime_metrics ( std::vector< metric > & metrics)
private

◆ get_last_metrics()

platform_metrics kcenon::monitoring::platform_metrics_collector::get_last_metrics ( ) const

Get last collected platform metrics

Returns
Most recent platform_metrics reading
Examples
platform_metrics_example.cpp.

Referenced by main().

Here is the caller graph for this function:

◆ get_metric_types()

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

Get supported metric types

Returns
Vector of supported metric type names

Implements kcenon::monitoring::collector_plugin.

◆ get_platform_info()

platform_info kcenon::monitoring::platform_metrics_collector::get_platform_info ( ) const

Get platform information

Returns
Platform info structure
Examples
platform_metrics_example.cpp.

Referenced by demonstrate_platform_features(), and main().

Here is the caller graph for this function:

◆ get_platform_name()

std::string kcenon::monitoring::platform_metrics_collector::get_platform_name ( ) const

Get platform name

Returns
Platform name (linux, macos, windows, unknown)

◆ get_statistics()

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

Get collector statistics

Returns
Map of statistics

Reimplemented from kcenon::monitoring::collector_plugin.

Examples
platform_metrics_example.cpp.

Referenced by main().

Here is the caller graph for this function:

◆ initialize()

bool kcenon::monitoring::platform_metrics_collector::initialize ( const config_map & config)
overridevirtual

Initialize collector with configuration

Parameters
configConfiguration map
Returns
True on success

Reimplemented from kcenon::monitoring::collector_plugin.

Examples
platform_metrics_example.cpp.

Referenced by main().

Here is the caller graph for this function:

◆ interval()

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

Get the collection interval for this plugin

Returns
Collection interval

Implements kcenon::monitoring::collector_plugin.

Definition at line 278 of file platform_metrics_collector.h.

References collection_interval_.

◆ is_available()

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

Check if platform monitoring is available

Returns
True if platform metrics are accessible

Implements kcenon::monitoring::collector_plugin.

Examples
platform_metrics_example.cpp.

Referenced by demonstrate_platform_features(), is_healthy(), and main().

Here is the caller graph for this function:

◆ is_healthy()

bool kcenon::monitoring::platform_metrics_collector::is_healthy ( ) const
inline

Check if collector is in a healthy state

Returns
True if collector is operational

Definition at line 290 of file platform_metrics_collector.h.

290{ return is_available(); }
auto is_available() const -> bool override

References is_available().

Here is the call graph for this function:

◆ is_platform_available()

bool kcenon::monitoring::platform_metrics_collector::is_platform_available ( ) const

Check if platform monitoring is available

Returns
True if platform metrics are accessible
Examples
platform_metrics_example.cpp.

Referenced by demonstrate_platform_features().

Here is the caller graph for this function:

◆ name()

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

Get the unique name of this plugin

Returns
Plugin name

Implements kcenon::monitoring::collector_plugin.

Examples
platform_metrics_example.cpp.

Definition at line 266 of file platform_metrics_collector.h.

266{ return "platform_metrics_collector"; }

Referenced by main().

Here is the caller graph for this function:

◆ operator=() [1/2]

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

◆ operator=() [2/2]

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

Member Data Documentation

◆ cached_platform_info_

platform_info kcenon::monitoring::platform_metrics_collector::cached_platform_info_
private

Definition at line 343 of file platform_metrics_collector.h.

◆ collection_interval_

std::chrono::milliseconds kcenon::monitoring::platform_metrics_collector::collection_interval_ {std::chrono::seconds(10)}
private

Definition at line 347 of file platform_metrics_collector.h.

347{std::chrono::seconds(10)};

Referenced by interval().

◆ collector_

std::unique_ptr<platform_info_collector> kcenon::monitoring::platform_metrics_collector::collector_
private

Definition at line 337 of file platform_metrics_collector.h.

◆ config_

platform_metrics_config kcenon::monitoring::platform_metrics_collector::config_
private

Definition at line 339 of file platform_metrics_collector.h.

◆ last_metrics_

platform_metrics kcenon::monitoring::platform_metrics_collector::last_metrics_
private

Definition at line 340 of file platform_metrics_collector.h.

◆ metrics_mutex_

std::mutex kcenon::monitoring::platform_metrics_collector::metrics_mutex_
mutableprivate

Definition at line 348 of file platform_metrics_collector.h.

◆ platform_info_cached_

bool kcenon::monitoring::platform_metrics_collector::platform_info_cached_ {false}
private

Definition at line 344 of file platform_metrics_collector.h.

344{false};

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