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

GPU metrics monitoring collector implementing collector_plugin interface. More...

#include <gpu_collector.h>

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

Public Member Functions

 gpu_collector ()
 
 ~gpu_collector () override=default
 
 gpu_collector (const gpu_collector &)=delete
 
gpu_collectoroperator= (const gpu_collector &)=delete
 
 gpu_collector (gpu_collector &&)=delete
 
gpu_collectoroperator= (gpu_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.
 
auto get_metric_types () const -> std::vector< std::string > override
 Get supported metric types.
 
auto get_metadata () const -> plugin_metadata override
 Get plugin metadata.
 
auto initialize (const config_map &config) -> bool override
 Initialize plugin with configuration.
 
void shutdown () override
 Shutdown plugin and release resources.
 
auto get_statistics () const -> stats_map override
 Get plugin statistics.
 
std::vector< gpu_readingget_last_readings () const
 
bool is_gpu_available () const
 
- Public Member Functions inherited from kcenon::monitoring::collector_plugin
virtual ~collector_plugin ()=default
 

Private Member Functions

metric create_metric (const std::string &name, double value, const gpu_reading &reading, const std::string &unit="") const
 
void add_gpu_metrics (std::vector< metric > &metrics, const gpu_reading &reading)
 

Private Attributes

std::unique_ptr< gpu_info_collectorcollector_
 
bool enabled_ {true}
 
bool collect_utilization_ {true}
 
bool collect_memory_ {true}
 
bool collect_temperature_ {true}
 
bool collect_power_ {true}
 
bool collect_clock_ {true}
 
bool collect_fan_ {true}
 
std::mutex stats_mutex_
 
std::atomic< size_t > collection_count_ {0}
 
std::atomic< size_t > collection_errors_ {0}
 
std::atomic< size_t > gpus_found_ {0}
 
std::vector< gpu_readinglast_readings_
 

Detailed Description

GPU metrics monitoring collector implementing collector_plugin interface.

Collects GPU metrics data from available GPUs with cross-platform support. Gracefully degrades when GPUs are not available or when vendor-specific libraries are not installed.

Definition at line 199 of file gpu_collector.h.

Constructor & Destructor Documentation

◆ gpu_collector() [1/3]

kcenon::monitoring::gpu_collector::gpu_collector ( )

◆ ~gpu_collector()

kcenon::monitoring::gpu_collector::~gpu_collector ( )
overridedefault

◆ gpu_collector() [2/3]

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

◆ gpu_collector() [3/3]

kcenon::monitoring::gpu_collector::gpu_collector ( gpu_collector && )
delete

Member Function Documentation

◆ add_gpu_metrics()

void kcenon::monitoring::gpu_collector::add_gpu_metrics ( std::vector< metric > & metrics,
const gpu_reading & reading )
private

◆ collect()

auto kcenon::monitoring::gpu_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.

◆ create_metric()

metric kcenon::monitoring::gpu_collector::create_metric ( const std::string & name,
double value,
const gpu_reading & reading,
const std::string & unit = "" ) const
private

◆ get_last_readings()

std::vector< gpu_reading > kcenon::monitoring::gpu_collector::get_last_readings ( ) const

Get last collected GPU readings

Returns
Vector of GPU readings

◆ get_metadata()

auto kcenon::monitoring::gpu_collector::get_metadata ( ) const -> plugin_metadata
inlineoverridevirtual

Get plugin metadata.

Returns
Metadata describing this plugin

Default implementation returns minimal metadata. Override to provide rich plugin information.

Reimplemented from kcenon::monitoring::collector_plugin.

Definition at line 217 of file gpu_collector.h.

217 {
218 return plugin_metadata{
219 .name = name(),
220 .description = "GPU metrics (utilization, memory, temperature, power)",
221 .category = plugin_category::hardware,
222 .version = "1.0.0",
223 .dependencies = {},
224 .requires_platform_support = true
225 };
226 }
auto name() const -> std::string_view override
Get the unique name of this plugin.
@ hardware
Hardware sensors (GPU, temperature, battery, power)

References kcenon::monitoring::hardware, and name().

Here is the call graph for this function:

◆ get_metric_types()

auto kcenon::monitoring::gpu_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::gpu_collector::get_statistics ( ) const -> stats_map
overridevirtual

Get plugin statistics.

Returns
Map of statistic name to value

Optional: Override to provide plugin-specific statistics.

Reimplemented from kcenon::monitoring::collector_plugin.

◆ initialize()

auto kcenon::monitoring::gpu_collector::initialize ( const config_map & ) -> bool
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.

◆ interval()

auto kcenon::monitoring::gpu_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 213 of file gpu_collector.h.

213{ return std::chrono::seconds(5); }

◆ is_available()

auto kcenon::monitoring::gpu_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.

◆ is_gpu_available()

bool kcenon::monitoring::gpu_collector::is_gpu_available ( ) const

Check if GPU monitoring is available

Returns
True if GPUs are accessible

◆ name()

auto kcenon::monitoring::gpu_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.

Definition at line 211 of file gpu_collector.h.

211{ return "gpu"; }

Referenced by get_metadata().

Here is the caller graph for this function:

◆ operator=() [1/2]

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

◆ operator=() [2/2]

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

◆ shutdown()

void kcenon::monitoring::gpu_collector::shutdown ( )
inlineoverridevirtual

Shutdown plugin and release resources.

Called before plugin destruction. Optional: Default implementation is no-op.

Reimplemented from kcenon::monitoring::collector_plugin.

Definition at line 229 of file gpu_collector.h.

229{}

Member Data Documentation

◆ collect_clock_

bool kcenon::monitoring::gpu_collector::collect_clock_ {true}
private

Definition at line 253 of file gpu_collector.h.

253{true};

◆ collect_fan_

bool kcenon::monitoring::gpu_collector::collect_fan_ {true}
private

Definition at line 254 of file gpu_collector.h.

254{true};

◆ collect_memory_

bool kcenon::monitoring::gpu_collector::collect_memory_ {true}
private

Definition at line 250 of file gpu_collector.h.

250{true};

◆ collect_power_

bool kcenon::monitoring::gpu_collector::collect_power_ {true}
private

Definition at line 252 of file gpu_collector.h.

252{true};

◆ collect_temperature_

bool kcenon::monitoring::gpu_collector::collect_temperature_ {true}
private

Definition at line 251 of file gpu_collector.h.

251{true};

◆ collect_utilization_

bool kcenon::monitoring::gpu_collector::collect_utilization_ {true}
private

Definition at line 249 of file gpu_collector.h.

249{true};

◆ collection_count_

std::atomic<size_t> kcenon::monitoring::gpu_collector::collection_count_ {0}
private

Definition at line 258 of file gpu_collector.h.

258{0};

◆ collection_errors_

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

Definition at line 259 of file gpu_collector.h.

259{0};

◆ collector_

std::unique_ptr<gpu_info_collector> kcenon::monitoring::gpu_collector::collector_
private

Definition at line 245 of file gpu_collector.h.

◆ enabled_

bool kcenon::monitoring::gpu_collector::enabled_ {true}
private

Definition at line 248 of file gpu_collector.h.

248{true};

◆ gpus_found_

std::atomic<size_t> kcenon::monitoring::gpu_collector::gpus_found_ {0}
private

Definition at line 260 of file gpu_collector.h.

260{0};

◆ last_readings_

std::vector<gpu_reading> kcenon::monitoring::gpu_collector::last_readings_
private

Definition at line 261 of file gpu_collector.h.

◆ stats_mutex_

std::mutex kcenon::monitoring::gpu_collector::stats_mutex_
mutableprivate

Definition at line 257 of file gpu_collector.h.


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