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

Pure virtual interface for metric collector plugins. More...

#include <collector_plugin.h>

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

Public Member Functions

virtual ~collector_plugin ()=default
 
virtual auto name () const -> std::string_view=0
 Get the unique name of this plugin.
 
virtual auto collect () -> std::vector< metric >=0
 Collect current metrics from this plugin.
 
virtual auto interval () const -> std::chrono::milliseconds=0
 Get the collection interval for this plugin.
 
virtual auto is_available () const -> bool=0
 Check if this plugin is available on the current system.
 
virtual auto get_metadata () const -> plugin_metadata
 Get plugin metadata.
 
virtual auto initialize (const config_map &) -> bool
 Initialize plugin with configuration.
 
virtual void shutdown ()
 Shutdown plugin and release resources.
 
virtual auto get_statistics () const -> stats_map
 Get plugin statistics.
 
virtual auto get_metric_types () const -> std::vector< std::string >=0
 Get supported metric types.
 

Detailed Description

Pure virtual interface for metric collector plugins.

This interface defines the contract that all metric collector plugins must implement. It supports both built-in collectors and dynamically loaded plugins.

Thread Safety:

  • collect() may be called concurrently from multiple threads
  • Implementations MUST be thread-safe or document restrictions
  • is_available() should be lock-free if possible

Lifecycle:

  1. Construction (via factory or direct instantiation)
  2. is_available() check before registration
  3. Periodic collect() calls based on interval()
  4. Destruction on unregistration or shutdown
Examples
plugin_example/example_plugin.cpp.

Definition at line 139 of file collector_plugin.h.

Constructor & Destructor Documentation

◆ ~collector_plugin()

virtual kcenon::monitoring::collector_plugin::~collector_plugin ( )
virtualdefault

Member Function Documentation

◆ collect()

virtual auto kcenon::monitoring::collector_plugin::collect ( ) -> std::vector< metric >
pure virtual

◆ get_metadata()

virtual auto kcenon::monitoring::collector_plugin::get_metadata ( ) const -> plugin_metadata
inlinevirtual

Get plugin metadata.

Returns
Metadata describing this plugin

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

Reimplemented in example_plugin, kcenon::monitoring::battery_collector, kcenon::monitoring::container_collector, kcenon::monitoring::gpu_collector, kcenon::monitoring::interrupt_collector, kcenon::monitoring::network_metrics_collector, kcenon::monitoring::power_collector, kcenon::monitoring::temperature_collector, and kcenon::monitoring::uptime_collector.

Examples
/home/runner/work/monitoring_system/monitoring_system/include/kcenon/monitoring/plugins/collector_plugin.h.

Definition at line 200 of file collector_plugin.h.

200 {
201 return plugin_metadata{
202 .name = name(),
203 .description = "",
204 .category = plugin_category::custom,
205 .version = "1.0.0",
206 .dependencies = {},
207 .requires_platform_support = false
208 };
209 }
virtual auto name() const -> std::string_view=0
Get the unique name of this plugin.
@ custom
User-defined plugins.

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

Here is the call graph for this function:

◆ get_metric_types()

◆ get_statistics()

◆ initialize()

◆ interval()

virtual auto kcenon::monitoring::collector_plugin::interval ( ) const -> std::chrono::milliseconds
pure virtual

◆ is_available()

virtual auto kcenon::monitoring::collector_plugin::is_available ( ) const -> bool
pure virtual

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.

Implemented in example_plugin, kcenon::monitoring::battery_collector, kcenon::monitoring::container_collector, kcenon::monitoring::gpu_collector, kcenon::monitoring::interrupt_collector, kcenon::monitoring::network_metrics_collector, kcenon::monitoring::platform_metrics_collector, kcenon::monitoring::power_collector, kcenon::monitoring::process_metrics_collector, kcenon::monitoring::security_collector, kcenon::monitoring::smart_collector, kcenon::monitoring::temperature_collector, kcenon::monitoring::uptime_collector, and kcenon::monitoring::vm_collector.

Examples
/home/runner/work/monitoring_system/monitoring_system/include/kcenon/monitoring/plugins/collector_plugin.h.

◆ name()

◆ shutdown()

virtual void kcenon::monitoring::collector_plugin::shutdown ( )
inlinevirtual

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