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

Hardware monitoring plugin aggregating battery, power, temperature, and GPU collectors. More...

#include <hardware_plugin.h>

Inheritance diagram for kcenon::monitoring::plugins::hardware_plugin:
Inheritance graph
Collaboration diagram for kcenon::monitoring::plugins::hardware_plugin:
Collaboration graph

Public Member Functions

 ~hardware_plugin () override
 
 hardware_plugin (const hardware_plugin &)=delete
 
hardware_pluginoperator= (const hardware_plugin &)=delete
 
bool initialize (const std::unordered_map< std::string, std::string > &config) override
 
std::vector< metriccollect () override
 
std::string get_name () const override
 
std::vector< std::string > get_metric_types () const override
 
bool is_healthy () const override
 
std::unordered_map< std::string, double > get_statistics () const override
 
bool is_battery_available () const
 
bool is_power_available () const
 
bool is_temperature_available () const
 
bool is_gpu_available () const
 
hardware_plugin_config get_config () const
 
- Public Member Functions inherited from kcenon::monitoring::metric_collector_plugin
virtual ~metric_collector_plugin ()=default
 

Static Public Member Functions

static std::unique_ptr< hardware_plugincreate (const hardware_plugin_config &config={})
 

Private Member Functions

 hardware_plugin (const hardware_plugin_config &config)
 
void initialize_collectors ()
 

Private Attributes

std::unique_ptr< battery_collectorbattery_collector_
 
std::unique_ptr< power_collectorpower_collector_
 
std::unique_ptr< temperature_collectortemperature_collector_
 
std::unique_ptr< gpu_collectorgpu_collector_
 
hardware_plugin_config config_
 
bool initialized_ {false}
 
std::mutex stats_mutex_
 
std::atomic< size_t > total_collections_ {0}
 
std::atomic< size_t > collection_errors_ {0}
 

Detailed Description

Hardware monitoring plugin aggregating battery, power, temperature, and GPU collectors.

This plugin provides hardware-specific metrics collection for desktop/laptop environments. For server deployments, this plugin should not be loaded to reduce binary size and avoid unnecessary collection overhead.

Metrics provided:

  • Battery: level, charging status, health, capacity, cycles
  • Power: consumption (watts), voltage, current, RAPL domains
  • Temperature: CPU, GPU, motherboard, ambient temperatures
  • GPU: utilization, VRAM usage, temperature, power, clocks, fan speed

Definition at line 106 of file hardware_plugin.h.

Constructor & Destructor Documentation

◆ ~hardware_plugin()

kcenon::monitoring::plugins::hardware_plugin::~hardware_plugin ( )
override

◆ hardware_plugin() [1/2]

kcenon::monitoring::plugins::hardware_plugin::hardware_plugin ( const hardware_plugin & )
delete

◆ hardware_plugin() [2/2]

kcenon::monitoring::plugins::hardware_plugin::hardware_plugin ( const hardware_plugin_config & config)
explicitprivate

Member Function Documentation

◆ collect()

std::vector< metric > kcenon::monitoring::plugins::hardware_plugin::collect ( )
overridevirtual

Collect metrics from the data source

Returns
Collection of metrics

Implements kcenon::monitoring::metric_collector_plugin.

◆ create()

static std::unique_ptr< hardware_plugin > kcenon::monitoring::plugins::hardware_plugin::create ( const hardware_plugin_config & config = {})
static

Create a hardware plugin instance with configuration

Parameters
configPlugin configuration options
Returns
Unique pointer to hardware_plugin instance

◆ get_config()

hardware_plugin_config kcenon::monitoring::plugins::hardware_plugin::get_config ( ) const

Get the current configuration

Returns
Copy of current configuration

◆ get_metric_types()

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

Get supported metric types

Returns
Vector of supported metric type names

Implements kcenon::monitoring::metric_collector_plugin.

◆ get_name()

std::string kcenon::monitoring::plugins::hardware_plugin::get_name ( ) const
overridevirtual

Get the name of this plugin

Returns
Plugin name

Implements kcenon::monitoring::metric_collector_plugin.

◆ get_statistics()

std::unordered_map< std::string, double > kcenon::monitoring::plugins::hardware_plugin::get_statistics ( ) const
overridevirtual

Get plugin-specific statistics

Returns
Map of statistic name to value

Implements kcenon::monitoring::metric_collector_plugin.

◆ initialize()

bool kcenon::monitoring::plugins::hardware_plugin::initialize ( const std::unordered_map< std::string, std::string > & config)
overridevirtual

Initialize the plugin with configuration

Parameters
configPlugin-specific configuration
Returns
true if initialization successful

Implements kcenon::monitoring::metric_collector_plugin.

◆ initialize_collectors()

void kcenon::monitoring::plugins::hardware_plugin::initialize_collectors ( )
private

◆ is_battery_available()

bool kcenon::monitoring::plugins::hardware_plugin::is_battery_available ( ) const

Check if battery monitoring is available

Returns
True if battery hardware detected

◆ is_gpu_available()

bool kcenon::monitoring::plugins::hardware_plugin::is_gpu_available ( ) const

Check if GPU monitoring is available

Returns
True if GPU hardware detected

◆ is_healthy()

bool kcenon::monitoring::plugins::hardware_plugin::is_healthy ( ) const
overridevirtual

Check if the plugin is healthy

Returns
true if plugin is operational

Implements kcenon::monitoring::metric_collector_plugin.

◆ is_power_available()

bool kcenon::monitoring::plugins::hardware_plugin::is_power_available ( ) const

Check if power monitoring is available

Returns
True if power sensors detected

◆ is_temperature_available()

bool kcenon::monitoring::plugins::hardware_plugin::is_temperature_available ( ) const

Check if temperature monitoring is available

Returns
True if thermal sensors detected

◆ operator=()

hardware_plugin & kcenon::monitoring::plugins::hardware_plugin::operator= ( const hardware_plugin & )
delete

Member Data Documentation

◆ battery_collector_

std::unique_ptr<battery_collector> kcenon::monitoring::plugins::hardware_plugin::battery_collector_
private

Definition at line 163 of file hardware_plugin.h.

◆ collection_errors_

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

Definition at line 175 of file hardware_plugin.h.

175{0};

◆ config_

hardware_plugin_config kcenon::monitoring::plugins::hardware_plugin::config_
private

Definition at line 169 of file hardware_plugin.h.

◆ gpu_collector_

std::unique_ptr<gpu_collector> kcenon::monitoring::plugins::hardware_plugin::gpu_collector_
private

Definition at line 166 of file hardware_plugin.h.

◆ initialized_

bool kcenon::monitoring::plugins::hardware_plugin::initialized_ {false}
private

Definition at line 170 of file hardware_plugin.h.

170{false};

◆ power_collector_

std::unique_ptr<power_collector> kcenon::monitoring::plugins::hardware_plugin::power_collector_
private

Definition at line 164 of file hardware_plugin.h.

◆ stats_mutex_

std::mutex kcenon::monitoring::plugins::hardware_plugin::stats_mutex_
mutableprivate

Definition at line 173 of file hardware_plugin.h.

◆ temperature_collector_

std::unique_ptr<temperature_collector> kcenon::monitoring::plugins::hardware_plugin::temperature_collector_
private

Definition at line 165 of file hardware_plugin.h.

◆ total_collections_

std::atomic<size_t> kcenon::monitoring::plugins::hardware_plugin::total_collections_ {0}
private

Definition at line 174 of file hardware_plugin.h.

174{0};

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