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

Example collector plugin that generates dummy metrics. More...

Inheritance diagram for example_plugin:
Inheritance graph
Collaboration diagram for example_plugin:
Collaboration graph

Public Member Functions

 example_plugin ()
 
auto name () const -> std::string_view override
 Get the unique name of this plugin.
 
auto initialize (const config_map &config) -> bool override
 Initialize plugin with configuration.
 
auto shutdown () -> void override
 Shutdown plugin and release resources.
 
auto collect () -> std::vector< metric_data > override
 Collect current metrics from this plugin.
 
auto is_available () const -> bool override
 Check if this plugin is available on the current system.
 
auto get_metadata () const -> plugin_metadata_t override
 Get plugin metadata.
 
- Public Member Functions inherited from kcenon::monitoring::collector_plugin
virtual ~collector_plugin ()=default
 
virtual auto interval () const -> std::chrono::milliseconds=0
 Get the collection interval for this plugin.
 
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.
 

Private Member Functions

auto generate_random_value (double min, double max) -> double
 

Private Attributes

bool initialized_ {false}
 
uint64_t request_counter_ {0}
 
std::mt19937 generator_
 

Detailed Description

Example collector plugin that generates dummy metrics.

Examples
plugin_example/example_plugin.cpp.

Definition at line 34 of file example_plugin.cpp.

Constructor & Destructor Documentation

◆ example_plugin()

example_plugin::example_plugin ( )
inline
Examples
plugin_example/example_plugin.cpp.

Definition at line 36 of file example_plugin.cpp.

36: generator_(std::random_device{}()) {}
std::mt19937 generator_

Member Function Documentation

◆ collect()

auto example_plugin::collect ( ) -> std::vector< metric_data >
inlineoverridevirtual

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
plugin_example/example_plugin.cpp.

Definition at line 52 of file example_plugin.cpp.

52 {
53 std::vector<metric_data> metrics;
54
55 if (!initialized_) {
56 return metrics;
57 }
58
59 // Generate some dummy metrics
60 metric_data cpu_metric;
61 cpu_metric.name = "example.cpu_usage";
62 cpu_metric.value = generate_random_value(0.0, 100.0);
63 cpu_metric.unit = "%";
64 cpu_metric.timestamp = std::chrono::system_clock::now();
65 cpu_metric.labels["plugin"] = "example";
66 cpu_metric.labels["type"] = "cpu";
67 metrics.push_back(cpu_metric);
68
69 metric_data memory_metric;
70 memory_metric.name = "example.memory_usage";
71 memory_metric.value = generate_random_value(0.0, 1024.0);
72 memory_metric.unit = "MB";
73 memory_metric.timestamp = std::chrono::system_clock::now();
74 memory_metric.labels["plugin"] = "example";
75 memory_metric.labels["type"] = "memory";
76 metrics.push_back(memory_metric);
77
78 metric_data counter_metric;
79 counter_metric.name = "example.request_count";
80 counter_metric.value = static_cast<double>(++request_counter_);
81 counter_metric.unit = "requests";
82 counter_metric.timestamp = std::chrono::system_clock::now();
83 counter_metric.labels["plugin"] = "example";
84 counter_metric.labels["type"] = "counter";
85 metrics.push_back(counter_metric);
86
87 return metrics;
88 }
uint64_t request_counter_
auto generate_random_value(double min, double max) -> double

References generate_random_value(), initialized_, and request_counter_.

Here is the call graph for this function:

◆ generate_random_value()

auto example_plugin::generate_random_value ( double min,
double max ) -> double
inlineprivate
Examples
plugin_example/example_plugin.cpp.

Definition at line 106 of file example_plugin.cpp.

106 {
107 std::uniform_real_distribution<double> dist(min, max);
108 return dist(generator_);
109 }

References generator_.

Referenced by collect().

Here is the caller graph for this function:

◆ get_metadata()

auto example_plugin::get_metadata ( ) const -> plugin_metadata_t
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.

Examples
plugin_example/example_plugin.cpp.

Definition at line 95 of file example_plugin.cpp.

95 {
96 return plugin_metadata_t{
97 plugin_category::custom,
98 plugin_type::collector,
99 "Example Plugin",
100 "1.0.0",
101 "Demonstrates dynamic plugin loading"
102 };
103 }

◆ initialize()

auto example_plugin::initialize ( const config_map & ) -> bool
inlineoverridevirtual

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
plugin_example/example_plugin.cpp.

Definition at line 42 of file example_plugin.cpp.

42 {
43 (void)config; // Unused
44 initialized_ = true;
45 return true;
46 }

References initialized_.

◆ is_available()

auto example_plugin::is_available ( ) const -> bool
inlineoverridevirtual

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
plugin_example/example_plugin.cpp.

Definition at line 90 of file example_plugin.cpp.

90 {
91 // This plugin is available on all platforms
92 return true;
93 }

◆ name()

auto example_plugin::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
plugin_example/example_plugin.cpp.

Definition at line 38 of file example_plugin.cpp.

38 {
39 return "example_plugin";
40 }

◆ shutdown()

auto example_plugin::shutdown ( ) -> void
inlineoverridevirtual

Shutdown plugin and release resources.

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

Reimplemented from kcenon::monitoring::collector_plugin.

Examples
plugin_example/example_plugin.cpp.

Definition at line 48 of file example_plugin.cpp.

48 {
49 initialized_ = false;
50 }

References initialized_.

Member Data Documentation

◆ generator_

std::mt19937 example_plugin::generator_
private
Examples
plugin_example/example_plugin.cpp.

Definition at line 113 of file example_plugin.cpp.

Referenced by generate_random_value().

◆ initialized_

bool example_plugin::initialized_ {false}
private
Examples
plugin_example/example_plugin.cpp.

Definition at line 111 of file example_plugin.cpp.

111{false};

Referenced by collect(), initialize(), and shutdown().

◆ request_counter_

uint64_t example_plugin::request_counter_ {0}
private
Examples
plugin_example/example_plugin.cpp.

Definition at line 112 of file example_plugin.cpp.

112{0};

Referenced by collect().


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