Monitoring System 0.1.0
System resource monitoring with pluggable collectors and alerting
Loading...
Searching...
No Matches
kcenon::monitoring::statistics_notifier Class Reference
Inheritance diagram for kcenon::monitoring::statistics_notifier:
Inheritance graph
Collaboration diagram for kcenon::monitoring::statistics_notifier:
Collaboration graph

Public Member Functions

 statistics_notifier (std::string notifier_name)
 
std::string name () const override
 Get notifier name.
 
common::VoidResult notify (const alert &a) override
 Send a notification for an alert.
 
common::VoidResult notify_group (const alert_group &group) override
 Send a notification for an alert group.
 
bool is_ready () const override
 Check if notifier is ready.
 
void print_statistics () const
 
void reset ()
 
- Public Member Functions inherited from kcenon::monitoring::alert_notifier
virtual ~alert_notifier ()=default
 

Private Attributes

std::string name_
 
std::mutex mutex_
 
size_t total_alerts_ = 0
 
std::map< alert_severity, size_t > severity_counts_
 
std::map< alert_state, size_t > state_counts_
 

Detailed Description

Definition at line 110 of file alert_notifiers_example.cpp.

Constructor & Destructor Documentation

◆ statistics_notifier()

kcenon::monitoring::statistics_notifier::statistics_notifier ( std::string notifier_name)
inlineexplicit
Examples
alert_notifiers_example.cpp.

Definition at line 112 of file alert_notifiers_example.cpp.

113 : name_(std::move(notifier_name)) {}

Member Function Documentation

◆ is_ready()

bool kcenon::monitoring::statistics_notifier::is_ready ( ) const
inlineoverridevirtual

Check if notifier is ready.

Returns
True if ready to send notifications

Implements kcenon::monitoring::alert_notifier.

Examples
alert_notifiers_example.cpp.

Definition at line 135 of file alert_notifiers_example.cpp.

135{ return true; }

◆ name()

std::string kcenon::monitoring::statistics_notifier::name ( ) const
inlineoverridevirtual

Get notifier name.

Returns
Notifier name

Implements kcenon::monitoring::alert_notifier.

Examples
alert_notifiers_example.cpp.

Definition at line 115 of file alert_notifiers_example.cpp.

115{ return name_; }

References name_.

◆ notify()

common::VoidResult kcenon::monitoring::statistics_notifier::notify ( const alert & a)
inlineoverridevirtual

Send a notification for an alert.

Parameters
aAlert to notify about
Returns
Result indicating success or failure

Implements kcenon::monitoring::alert_notifier.

Examples
alert_notifiers_example.cpp.

Definition at line 117 of file alert_notifiers_example.cpp.

117 {
118 std::lock_guard<std::mutex> lock(mutex_);
121 state_counts_[a.state]++;
122 return common::ok();
123 }
std::map< alert_severity, size_t > severity_counts_
alert_state state
Current state.
alert_severity severity
Alert severity level.

References mutex_, kcenon::monitoring::alert::severity, severity_counts_, kcenon::monitoring::alert::state, state_counts_, and total_alerts_.

Referenced by notify_group().

Here is the caller graph for this function:

◆ notify_group()

common::VoidResult kcenon::monitoring::statistics_notifier::notify_group ( const alert_group & group)
inlineoverridevirtual

Send a notification for an alert group.

Parameters
groupAlert group to notify about
Returns
Result indicating success or failure

Implements kcenon::monitoring::alert_notifier.

Examples
alert_notifiers_example.cpp.

Definition at line 125 of file alert_notifiers_example.cpp.

125 {
126 for (const auto& alert_item : group.alerts) {
127 auto result = notify(alert_item);
128 if (!result.is_ok()) {
129 return result;
130 }
131 }
132 return common::ok();
133 }
common::VoidResult notify(const alert &a) override
Send a notification for an alert.
std::vector< alert > alerts
Alerts in this group.

References kcenon::monitoring::alert_group::alerts, and notify().

Here is the call graph for this function:

◆ print_statistics()

void kcenon::monitoring::statistics_notifier::print_statistics ( ) const
inline
Examples
alert_notifiers_example.cpp.

Definition at line 137 of file alert_notifiers_example.cpp.

137 {
138 std::lock_guard<std::mutex> lock(mutex_);
139
140 std::cout << "Statistics from " << name_ << ":" << std::endl;
141 std::cout << " Total alerts: " << total_alerts_ << std::endl;
142 std::cout << " By severity:" << std::endl;
143 for (const auto& [sev, count] : severity_counts_) {
144 std::cout << " " << alert_severity_to_string(sev) << ": " << count << std::endl;
145 }
146 std::cout << " By state:" << std::endl;
147 for (const auto& [state, count] : state_counts_) {
148 std::cout << " " << alert_state_to_string(state) << ": " << count << std::endl;
149 }
150 }
constexpr const char * alert_state_to_string(alert_state state) noexcept
Convert alert state to string.
Definition alert_types.h:82
constexpr const char * alert_severity_to_string(alert_severity severity) noexcept
Convert alert severity to string.
Definition alert_types.h:47

References kcenon::monitoring::alert_severity_to_string(), kcenon::monitoring::alert_state_to_string(), mutex_, name_, severity_counts_, state_counts_, and total_alerts_.

Here is the call graph for this function:

◆ reset()

void kcenon::monitoring::statistics_notifier::reset ( )
inline
Examples
alert_notifiers_example.cpp.

Definition at line 152 of file alert_notifiers_example.cpp.

152 {
153 std::lock_guard<std::mutex> lock(mutex_);
154 total_alerts_ = 0;
155 severity_counts_.clear();
156 state_counts_.clear();
157 }

References mutex_, severity_counts_, state_counts_, and total_alerts_.

Member Data Documentation

◆ mutex_

std::mutex kcenon::monitoring::statistics_notifier::mutex_
mutableprivate
Examples
alert_notifiers_example.cpp.

Definition at line 161 of file alert_notifiers_example.cpp.

Referenced by notify(), print_statistics(), and reset().

◆ name_

std::string kcenon::monitoring::statistics_notifier::name_
private
Examples
alert_notifiers_example.cpp.

Definition at line 160 of file alert_notifiers_example.cpp.

Referenced by name(), and print_statistics().

◆ severity_counts_

std::map<alert_severity, size_t> kcenon::monitoring::statistics_notifier::severity_counts_
private
Examples
alert_notifiers_example.cpp.

Definition at line 163 of file alert_notifiers_example.cpp.

Referenced by notify(), print_statistics(), and reset().

◆ state_counts_

std::map<alert_state, size_t> kcenon::monitoring::statistics_notifier::state_counts_
private
Examples
alert_notifiers_example.cpp.

Definition at line 164 of file alert_notifiers_example.cpp.

Referenced by notify(), print_statistics(), and reset().

◆ total_alerts_

size_t kcenon::monitoring::statistics_notifier::total_alerts_ = 0
private
Examples
alert_notifiers_example.cpp.

Definition at line 162 of file alert_notifiers_example.cpp.

Referenced by notify(), print_statistics(), and reset().


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