27#include <unordered_map>
71 default:
return "UNKNOWN";
166class metrics_provider;
238 auto name() const -> std::string_view
override {
return "security_collector"; }
239 auto collect() -> std::vector<metric>
override;
258 bool initialize(const std::unordered_map<std::
string, std::
string>& config) override;
297 const std::unordered_map<std::string, std::string>& tags = {},
298 const std::string& unit =
"")
const;
Pure virtual interface for metric collector plugins.
Security event monitoring collector.
bool is_security_monitoring_available() const
auto name() const -> std::string_view override
Get the unique name of this plugin.
security_collector(security_collector &&)=delete
~security_collector()=default
std::atomic< size_t > collection_errors_
security_collector & operator=(const security_collector &)=delete
std::chrono::milliseconds collection_interval_
void add_security_metrics(std::vector< metric > &metrics, const security_metrics &security_data)
auto collect() -> std::vector< metric > override
Collect current metrics from this plugin.
std::unordered_map< std::string, double > get_statistics() const override
std::atomic< size_t > collection_count_
security_collector & operator=(security_collector &&)=delete
double login_failure_rate_limit_
bool initialize(const std::unordered_map< std::string, std::string > &config) override
security_collector(const security_collector &)=delete
metric create_metric(const std::string &name, double value, const std::unordered_map< std::string, std::string > &tags={}, const std::string &unit="") const
security_metrics get_last_metrics() const
auto get_metric_types() const -> std::vector< std::string > override
Get supported metric types.
security_metrics last_metrics_
size_t max_recent_events_
std::unique_ptr< security_info_collector > collector_
auto is_available() const -> bool override
Check if this plugin is available on the current system.
auto interval() const -> std::chrono::milliseconds override
Get the collection interval for this plugin.
Security event data collector using platform abstraction layer.
security_info_collector & operator=(security_info_collector &&)=delete
bool is_security_monitoring_available() const
security_info_collector & operator=(const security_info_collector &)=delete
security_info_collector()
std::unique_ptr< platform::metrics_provider > provider_
security_info_collector(security_info_collector &&)=delete
void set_max_recent_events(size_t max_events)
security_info_collector(const security_info_collector &)=delete
security_metrics collect_metrics()
void set_mask_pii(bool mask_pii)
size_t max_recent_events_
std::string mask_username(const std::string &username) const
~security_info_collector()
Plugin interface for metric collectors.
Adapter for metric types to support interface definitions.
security_event_type
Types of security events tracked.
@ session_end
Session ended.
@ permission_change
Permission/ACL change.
@ sudo_usage
Privilege escalation (sudo)
@ login_success
Successful login attempt.
@ account_created
New account creation.
@ account_deleted
Account deletion.
@ account_modified
Account modification.
@ login_failure
Failed login attempt.
@ unknown
Unknown event type.
@ session_start
Session started.
@ platform
Platform/system power domain.
std::string security_event_type_to_string(security_event_type type)
Convert security_event_type to string representation.
Basic metric structure for interface compatibility.
Counts of security events by type.
void increment(security_event_type type)
uint64_t login_success
Successful login count.
uint64_t get_count(security_event_type type) const
uint64_t unknown
Unknown event count.
uint64_t account_deleted
Account deletion count.
uint64_t permission_change
Permission change count.
uint64_t login_failure
Failed login count.
uint64_t account_created
Account creation count.
uint64_t account_modified
Account modification count.
uint64_t logout
Logout count.
uint64_t sudo_usage
Sudo/privilege escalation count.
Individual security event information.
std::string username
Username involved (may be masked for privacy)
security_event_type type
Event type.
std::chrono::system_clock::time_point timestamp
Event timestamp.
bool success
Whether the action succeeded.
std::string message
Event message/details.
std::string source
Source IP/terminal.
Aggregated security event metrics.
double events_per_second
Event rate.
bool metrics_available
Whether metrics are available.
std::chrono::system_clock::time_point timestamp
Reading timestamp.
std::vector< security_event > recent_events
Recent security events (limited)
uint64_t active_sessions
Current active login sessions.
security_event_counts event_counts
Event counts by type.