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

Security event monitoring collector. More...

#include <security_collector.h>

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

Public Member Functions

 security_collector ()
 
 ~security_collector ()=default
 
 security_collector (const security_collector &)=delete
 
security_collectoroperator= (const security_collector &)=delete
 
 security_collector (security_collector &&)=delete
 
security_collectoroperator= (security_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.
 
bool is_healthy () const
 
auto get_metric_types () const -> std::vector< std::string > override
 Get supported metric types.
 
bool initialize (const std::unordered_map< std::string, std::string > &config) override
 
std::unordered_map< std::string, double > get_statistics () const override
 
security_metrics get_last_metrics () const
 
bool is_security_monitoring_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

metric create_metric (const std::string &name, double value, const std::unordered_map< std::string, std::string > &tags={}, const std::string &unit="") const
 
void add_security_metrics (std::vector< metric > &metrics, const security_metrics &security_data)
 

Private Attributes

std::unique_ptr< security_info_collectorcollector_
 
bool enabled_ {true}
 
bool mask_pii_ {false}
 
size_t max_recent_events_ {100}
 
double login_failure_rate_limit_ {1000.0}
 
std::chrono::milliseconds collection_interval_ {std::chrono::seconds(60)}
 
std::mutex stats_mutex_
 
std::atomic< size_t > collection_count_ {0}
 
std::atomic< size_t > collection_errors_ {0}
 
security_metrics last_metrics_
 

Detailed Description

Security event monitoring collector.

Collects security event metrics with cross-platform support. Returns unavailable metrics on Windows (stub implementation).

Definition at line 226 of file security_collector.h.

Constructor & Destructor Documentation

◆ security_collector() [1/3]

kcenon::monitoring::security_collector::security_collector ( )

◆ ~security_collector()

kcenon::monitoring::security_collector::~security_collector ( )
default

◆ security_collector() [2/3]

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

◆ security_collector() [3/3]

kcenon::monitoring::security_collector::security_collector ( security_collector && )
delete

Member Function Documentation

◆ add_security_metrics()

void kcenon::monitoring::security_collector::add_security_metrics ( std::vector< metric > & metrics,
const security_metrics & security_data )
private

◆ collect()

auto kcenon::monitoring::security_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::security_collector::create_metric ( const std::string & name,
double value,
const std::unordered_map< std::string, std::string > & tags = {},
const std::string & unit = "" ) const
private

◆ get_last_metrics()

security_metrics kcenon::monitoring::security_collector::get_last_metrics ( ) const

Get last collected security metrics

Returns
Most recent security_metrics reading

◆ get_metric_types()

auto kcenon::monitoring::security_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()

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

Get collector statistics

Returns
Map of statistic name to value

Reimplemented from kcenon::monitoring::collector_plugin.

◆ initialize()

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

Initialize the collector with configuration

Parameters
configConfiguration options:
  • "enabled": "true"/"false" (default: true)
  • "mask_pii": "true"/"false" (default: false)
  • "max_recent_events": count (default: 100)
  • "login_failure_rate_limit": events/sec (default: 1000)
Returns
true if initialization successful

Reimplemented from kcenon::monitoring::collector_plugin.

◆ interval()

auto kcenon::monitoring::security_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 240 of file security_collector.h.

240{ return collection_interval_; }
std::chrono::milliseconds collection_interval_

References collection_interval_.

◆ is_available()

auto kcenon::monitoring::security_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_healthy()

bool kcenon::monitoring::security_collector::is_healthy ( ) const

Check if collector is in a healthy state

Returns
True if collector is operational

◆ is_security_monitoring_available()

bool kcenon::monitoring::security_collector::is_security_monitoring_available ( ) const

Check if security event monitoring is available

Returns
True if security events are accessible

◆ name()

auto kcenon::monitoring::security_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 238 of file security_collector.h.

238{ return "security_collector"; }

◆ operator=() [1/2]

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

◆ operator=() [2/2]

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

Member Data Documentation

◆ collection_count_

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

Definition at line 291 of file security_collector.h.

291{0};

◆ collection_errors_

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

Definition at line 292 of file security_collector.h.

292{0};

◆ collection_interval_

std::chrono::milliseconds kcenon::monitoring::security_collector::collection_interval_ {std::chrono::seconds(60)}
private

Definition at line 287 of file security_collector.h.

287{std::chrono::seconds(60)};

Referenced by interval().

◆ collector_

std::unique_ptr<security_info_collector> kcenon::monitoring::security_collector::collector_
private

Definition at line 280 of file security_collector.h.

◆ enabled_

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

Definition at line 283 of file security_collector.h.

283{true};

◆ last_metrics_

security_metrics kcenon::monitoring::security_collector::last_metrics_
private

Definition at line 293 of file security_collector.h.

◆ login_failure_rate_limit_

double kcenon::monitoring::security_collector::login_failure_rate_limit_ {1000.0}
private

Definition at line 286 of file security_collector.h.

286{1000.0};

◆ mask_pii_

bool kcenon::monitoring::security_collector::mask_pii_ {false}
private

Definition at line 284 of file security_collector.h.

284{false};

◆ max_recent_events_

size_t kcenon::monitoring::security_collector::max_recent_events_ {100}
private

Definition at line 285 of file security_collector.h.

285{100};

◆ stats_mutex_

std::mutex kcenon::monitoring::security_collector::stats_mutex_
mutableprivate

Definition at line 290 of file security_collector.h.


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