Network System 0.1.1
High-performance modular networking library for scalable client-server applications
Loading...
Searching...
No Matches
kcenon::network::metrics::metric_reporter Class Reference

Helper class for reporting network metrics. More...

#include <network_metrics.h>

Collaboration diagram for kcenon::network::metrics::metric_reporter:
Collaboration graph

Static Public Member Functions

static void report_connection_accepted ()
 Report a new connection accepted.
 
static void report_connection_failed (const std::string &reason)
 Report a failed connection attempt.
 
static void report_bytes_sent (size_t bytes)
 Report bytes sent.
 
static void report_bytes_received (size_t bytes)
 Report bytes received.
 
static void report_latency (double ms)
 Report network latency.
 
static void report_error (const std::string &error_type)
 Report a network error.
 
static void report_timeout ()
 Report a timeout.
 
static void report_active_connections (size_t count)
 Report active connections count.
 
static void report_session_duration (double ms)
 Report session duration.
 
static void record_latency (double ms)
 Record latency to internal histogram.
 
static void record_connection_time (double ms)
 Record connection time to internal histogram.
 
static void record_request_duration (double ms)
 Record request duration to internal histogram.
 
static auto get_latency_p50 () -> double
 Get latency 50th percentile (median)
 
static auto get_latency_p95 () -> double
 Get latency 95th percentile.
 
static auto get_latency_p99 () -> double
 Get latency 99th percentile.
 
static auto get_connection_time_p99 () -> double
 Get connection time 99th percentile.
 
static auto get_request_duration_p99 () -> double
 Get request duration 99th percentile.
 
static auto get_all_histograms () -> std::map< std::string, histogram_snapshot >
 Get all histogram snapshots for export.
 
static void reset_histograms ()
 Reset all histogram data.
 

Detailed Description

Helper class for reporting network metrics.

This class provides convenient methods to report network-related metrics to the monitoring system (if available).

Definition at line 67 of file network_metrics.h.

Member Function Documentation

◆ get_all_histograms()

auto kcenon::network::metrics::metric_reporter::get_all_histograms ( ) -> std::map<std::string, histogram_snapshot>
staticnodiscard

Get all histogram snapshots for export.

Returns
Map of histogram name to snapshot

Definition at line 255 of file network_metrics.cpp.

256{
257 auto& storage = histogram_storage::instance();
258 std::map<std::string, histogram_snapshot> result;
259
261 storage.latency.snapshot({{"metric", "latency"}});
263 storage.connection_time.snapshot({{"metric", "connection_time"}});
265 storage.request_duration.snapshot({{"metric", "request_duration"}});
266
267 return result;
268}
constexpr const char * CONNECTION_TIME_HISTOGRAM
constexpr const char * REQUEST_DURATION_HISTOGRAM

References kcenon::network::metrics::metric_names::CONNECTION_TIME_HISTOGRAM, kcenon::network::metrics::metric_names::LATENCY_HISTOGRAM, and kcenon::network::metrics::metric_names::REQUEST_DURATION_HISTOGRAM.

◆ get_connection_time_p99()

auto kcenon::network::metrics::metric_reporter::get_connection_time_p99 ( ) -> double
staticnodiscard

Get connection time 99th percentile.

Returns
Estimated p99 connection time in milliseconds

Definition at line 243 of file network_metrics.cpp.

244{
245 auto& storage = histogram_storage::instance();
246 return storage.connection_time.p99();
247}

◆ get_latency_p50()

auto kcenon::network::metrics::metric_reporter::get_latency_p50 ( ) -> double
staticnodiscard

Get latency 50th percentile (median)

Returns
Estimated median latency in milliseconds

Definition at line 225 of file network_metrics.cpp.

226{
227 auto& storage = histogram_storage::instance();
228 return storage.latency.p50();
229}

◆ get_latency_p95()

auto kcenon::network::metrics::metric_reporter::get_latency_p95 ( ) -> double
staticnodiscard

Get latency 95th percentile.

Returns
Estimated p95 latency in milliseconds

Definition at line 231 of file network_metrics.cpp.

232{
233 auto& storage = histogram_storage::instance();
234 return storage.latency.p95();
235}

◆ get_latency_p99()

auto kcenon::network::metrics::metric_reporter::get_latency_p99 ( ) -> double
staticnodiscard

Get latency 99th percentile.

Returns
Estimated p99 latency in milliseconds

Definition at line 237 of file network_metrics.cpp.

238{
239 auto& storage = histogram_storage::instance();
240 return storage.latency.p99();
241}

◆ get_request_duration_p99()

auto kcenon::network::metrics::metric_reporter::get_request_duration_p99 ( ) -> double
staticnodiscard

Get request duration 99th percentile.

Returns
Estimated p99 request duration in milliseconds

Definition at line 249 of file network_metrics.cpp.

250{
251 auto& storage = histogram_storage::instance();
252 return storage.request_duration.p99();
253}

◆ record_connection_time()

void kcenon::network::metrics::metric_reporter::record_connection_time ( double ms)
static

Record connection time to internal histogram.

Parameters
msConnection time in milliseconds

Definition at line 197 of file network_metrics.cpp.

198{
199 auto& storage = histogram_storage::instance();
200 storage.connection_time.record(ms);
201
202#if KCENON_WITH_COMMON_SYSTEM
205#endif
206
209}
static monitoring_integration_manager & instance()
Get the singleton instance.
void report_histogram(const std::string &name, double value, const std::map< std::string, std::string > &labels={})
Report a histogram metric.

References kcenon::network::metrics::metric_names::CONNECTION_TIME_HISTOGRAM, kcenon::network::events::histogram, kcenon::network::integration::monitoring_integration_manager::instance(), and kcenon::network::integration::monitoring_integration_manager::report_histogram().

Here is the call graph for this function:

◆ record_latency()

void kcenon::network::metrics::metric_reporter::record_latency ( double ms)
static

Record latency to internal histogram.

Parameters
msLatency in milliseconds

Records latency to a sliding histogram for percentile calculations. Also reports to the traditional monitoring integration.

Definition at line 187 of file network_metrics.cpp.

188{
189 // Record to sliding histogram for percentile calculations
190 auto& storage = histogram_storage::instance();
191 storage.latency.record(ms);
192
193 // Also report to traditional monitoring integration
194 report_latency(ms);
195}
static void report_latency(double ms)
Report network latency.

References report_latency().

Here is the call graph for this function:

◆ record_request_duration()

void kcenon::network::metrics::metric_reporter::record_request_duration ( double ms)
static

Record request duration to internal histogram.

Parameters
msRequest duration in milliseconds

Definition at line 211 of file network_metrics.cpp.

212{
213 auto& storage = histogram_storage::instance();
214 storage.request_duration.record(ms);
215
216#if KCENON_WITH_COMMON_SYSTEM
219#endif
220
223}

References kcenon::network::events::histogram, kcenon::network::integration::monitoring_integration_manager::instance(), kcenon::network::integration::monitoring_integration_manager::report_histogram(), and kcenon::network::metrics::metric_names::REQUEST_DURATION_HISTOGRAM.

Here is the call graph for this function:

◆ report_active_connections()

void kcenon::network::metrics::metric_reporter::report_active_connections ( size_t count)
static

Report active connections count.

Parameters
countNumber of active connections

Definition at line 159 of file network_metrics.cpp.

160{
161 auto count_value = static_cast<double>(count);
162
163#if KCENON_WITH_COMMON_SYSTEM
164 publish_metric(metric_names::CONNECTIONS_ACTIVE, count_value,
166#endif
167
170}
void report_gauge(const std::string &name, double value, const std::map< std::string, std::string > &labels={})
Report a gauge metric.
constexpr const char * CONNECTIONS_ACTIVE

References kcenon::network::metrics::metric_names::CONNECTIONS_ACTIVE, kcenon::network::events::gauge, kcenon::network::integration::monitoring_integration_manager::instance(), and kcenon::network::integration::monitoring_integration_manager::report_gauge().

Referenced by kcenon::network::core::messaging_quic_server::find_or_create_session(), kcenon::network::core::messaging_server::on_accept(), and kcenon::network::core::messaging_quic_server::on_session_close().

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

◆ report_bytes_received()

void kcenon::network::metrics::metric_reporter::report_bytes_received ( size_t bytes)
static

Report bytes received.

Parameters
bytesNumber of bytes received

Definition at line 108 of file network_metrics.cpp.

109{
110 auto byte_value = static_cast<double>(bytes);
111
112#if KCENON_WITH_COMMON_SYSTEM
113 publish_metric(metric_names::BYTES_RECEIVED, byte_value,
115 publish_metric(metric_names::PACKETS_RECEIVED, 1.0,
117#endif
118
120 metric_names::BYTES_RECEIVED, byte_value);
123}
void report_counter(const std::string &name, double value, const std::map< std::string, std::string > &labels={})
Report a counter metric.

References kcenon::network::metrics::metric_names::BYTES_RECEIVED, kcenon::network::events::counter, kcenon::network::integration::monitoring_integration_manager::instance(), kcenon::network::metrics::metric_names::PACKETS_RECEIVED, and kcenon::network::integration::monitoring_integration_manager::report_counter().

Referenced by kcenon::network::session::messaging_session::on_receive(), and kcenon::network::session::quic_session::on_stream_data().

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

◆ report_bytes_sent()

void kcenon::network::metrics::metric_reporter::report_bytes_sent ( size_t bytes)
static

◆ report_connection_accepted()

void kcenon::network::metrics::metric_reporter::report_connection_accepted ( )
static

Report a new connection accepted.

Definition at line 65 of file network_metrics.cpp.

66{
67#if KCENON_WITH_COMMON_SYSTEM
68 // Publish via EventBus for external consumers (e.g., monitoring_system)
69 publish_metric(metric_names::CONNECTIONS_TOTAL, 1.0,
71 {{"event", "accepted"}});
72#endif
73
74 // Report to local monitoring integration
77}

References kcenon::network::metrics::metric_names::CONNECTIONS_TOTAL, kcenon::network::events::counter, kcenon::network::integration::monitoring_integration_manager::instance(), and kcenon::network::integration::monitoring_integration_manager::report_counter().

Referenced by kcenon::network::core::messaging_quic_server::find_or_create_session(), main(), and kcenon::network::core::messaging_server::on_accept().

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

◆ report_connection_failed()

void kcenon::network::metrics::metric_reporter::report_connection_failed ( const std::string & reason)
static

Report a failed connection attempt.

Parameters
reasonReason for the failure

Definition at line 79 of file network_metrics.cpp.

80{
81#if KCENON_WITH_COMMON_SYSTEM
82 publish_metric(metric_names::CONNECTIONS_FAILED, 1.0,
84 {{"reason", reason}});
85#endif
86
88 metric_names::CONNECTIONS_FAILED, 1.0, {{"reason", reason}});
89}
constexpr const char * CONNECTIONS_FAILED

References kcenon::network::metrics::metric_names::CONNECTIONS_FAILED, kcenon::network::events::counter, kcenon::network::integration::monitoring_integration_manager::instance(), and kcenon::network::integration::monitoring_integration_manager::report_counter().

Referenced by main(), and kcenon::network::core::messaging_server::on_accept().

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

◆ report_error()

void kcenon::network::metrics::metric_reporter::report_error ( const std::string & error_type)
static

Report a network error.

Parameters
error_typeType of error

Definition at line 136 of file network_metrics.cpp.

137{
138#if KCENON_WITH_COMMON_SYSTEM
139 publish_metric(metric_names::ERRORS_TOTAL, 1.0,
141 {{"error_type", error_type}});
142#endif
143
145 metric_names::ERRORS_TOTAL, 1.0, {{"error_type", error_type}});
146}

References kcenon::network::events::counter, kcenon::network::metrics::metric_names::ERRORS_TOTAL, kcenon::network::integration::monitoring_integration_manager::instance(), and kcenon::network::integration::monitoring_integration_manager::report_counter().

Here is the call graph for this function:

◆ report_latency()

void kcenon::network::metrics::metric_reporter::report_latency ( double ms)
static

Report network latency.

Parameters
msLatency in milliseconds

Definition at line 125 of file network_metrics.cpp.

126{
127#if KCENON_WITH_COMMON_SYSTEM
128 publish_metric(metric_names::LATENCY_MS, ms,
130#endif
131
134}

References kcenon::network::events::histogram, kcenon::network::integration::monitoring_integration_manager::instance(), kcenon::network::metrics::metric_names::LATENCY_MS, and kcenon::network::integration::monitoring_integration_manager::report_histogram().

Referenced by main(), and record_latency().

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

◆ report_session_duration()

void kcenon::network::metrics::metric_reporter::report_session_duration ( double ms)
static

◆ report_timeout()

void kcenon::network::metrics::metric_reporter::report_timeout ( )
static

◆ reset_histograms()

void kcenon::network::metrics::metric_reporter::reset_histograms ( )
static

Reset all histogram data.

Clears all histogram observations. Useful for testing or when starting a new measurement period.

Definition at line 270 of file network_metrics.cpp.

271{
272 auto& storage = histogram_storage::instance();
273 storage.latency.reset();
274 storage.connection_time.reset();
275 storage.request_duration.reset();
276}

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