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

Formats alerts as JSON. More...

#include <alert_notifiers.h>

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

Public Member Functions

std::string format (const alert &a) const override
 Format a single alert.
 
std::string format_group (const alert_group &group) const override
 Format an alert group.
 
- Public Member Functions inherited from kcenon::monitoring::alert_formatter
virtual ~alert_formatter ()=default
 

Static Private Member Functions

static std::string escape_json (const std::string &s)
 

Detailed Description

Formats alerts as JSON.

Examples
alert_notifiers_example.cpp.

Definition at line 93 of file alert_notifiers.h.

Member Function Documentation

◆ escape_json()

static std::string kcenon::monitoring::json_alert_formatter::escape_json ( const std::string & s)
inlinestaticprivate
Examples
/home/runner/work/monitoring_system/monitoring_system/include/kcenon/monitoring/alert/alert_notifiers.h.

Definition at line 134 of file alert_notifiers.h.

134 {
135 std::ostringstream oss;
136 for (char c : s) {
137 switch (c) {
138 case '"': oss << "\\\""; break;
139 case '\\': oss << "\\\\"; break;
140 case '\n': oss << "\\n"; break;
141 case '\r': oss << "\\r"; break;
142 case '\t': oss << "\\t"; break;
143 default: oss << c; break;
144 }
145 }
146 return oss.str();
147 }

Referenced by format(), and format_group().

Here is the caller graph for this function:

◆ format()

std::string kcenon::monitoring::json_alert_formatter::format ( const alert & a) const
inlineoverridevirtual

Format a single alert.

Parameters
aAlert to format
Returns
Formatted string

Implements kcenon::monitoring::alert_formatter.

Examples
/home/runner/work/monitoring_system/monitoring_system/include/kcenon/monitoring/alert/alert_notifiers.h, and alert_notifiers_example.cpp.

Definition at line 95 of file alert_notifiers.h.

95 {
96 std::ostringstream oss;
97 oss << "{";
98 oss << "\"name\":\"" << escape_json(a.name) << "\",";
99 oss << "\"state\":\"" << alert_state_to_string(a.state) << "\",";
100 oss << "\"severity\":\"" << alert_severity_to_string(a.severity) << "\",";
101 oss << "\"value\":" << a.value << ",";
102 oss << "\"summary\":\"" << escape_json(a.annotations.summary) << "\",";
103 oss << "\"description\":\"" << escape_json(a.annotations.description) << "\",";
104 oss << "\"fingerprint\":\"" << a.fingerprint() << "\",";
105 oss << "\"labels\":{";
106 bool first = true;
107 for (const auto& [key, value] : a.labels.labels) {
108 if (!first) oss << ",";
109 oss << "\"" << escape_json(key) << "\":\"" << escape_json(value) << "\"";
110 first = false;
111 }
112 oss << "}}";
113 return oss.str();
114 }
static std::string escape_json(const std::string &s)
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(), kcenon::monitoring::alert::annotations, kcenon::monitoring::alert_annotations::description, escape_json(), kcenon::monitoring::alert::fingerprint(), kcenon::monitoring::alert::labels, kcenon::monitoring::alert_labels::labels, kcenon::monitoring::alert::name, kcenon::monitoring::alert::severity, kcenon::monitoring::alert::state, kcenon::monitoring::alert_annotations::summary, and kcenon::monitoring::alert::value.

Referenced by format_group(), and main().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ format_group()

std::string kcenon::monitoring::json_alert_formatter::format_group ( const alert_group & group) const
inlineoverridevirtual

Format an alert group.

Parameters
groupAlert group to format
Returns
Formatted string

Implements kcenon::monitoring::alert_formatter.

Examples
/home/runner/work/monitoring_system/monitoring_system/include/kcenon/monitoring/alert/alert_notifiers.h, and alert_notifiers_example.cpp.

Definition at line 116 of file alert_notifiers.h.

116 {
117 std::ostringstream oss;
118 oss << "{";
119 oss << "\"group_key\":\"" << escape_json(group.group_key) << "\",";
120 oss << "\"severity\":\"" << alert_severity_to_string(group.max_severity()) << "\",";
121 oss << "\"alert_count\":" << group.size() << ",";
122 oss << "\"alerts\":[";
123 bool first = true;
124 for (const auto& a : group.alerts) {
125 if (!first) oss << ",";
126 oss << format(a);
127 first = false;
128 }
129 oss << "]}";
130 return oss.str();
131 }
std::string format(const alert &a) const override
Format a single alert.

References kcenon::monitoring::alert_severity_to_string(), kcenon::monitoring::alert_group::alerts, escape_json(), format(), kcenon::monitoring::alert_group::group_key, kcenon::monitoring::alert_group::max_severity(), and kcenon::monitoring::alert_group::size().

Referenced by main().

Here is the call graph for this function:
Here is the caller graph for this function:

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