Common System 0.2.0
Common interfaces and patterns for system integration
Loading...
Searching...
No Matches
kcenon::common::interfaces::IMetricCollector Interface Referenceabstract

Abstract interface for collecting metrics across modules. More...

#include <metric_collector_interface.h>

Inheritance diagram for kcenon::common::interfaces::IMetricCollector:
Inheritance graph
Collaboration diagram for kcenon::common::interfaces::IMetricCollector:
Collaboration graph

Public Member Functions

virtual ~IMetricCollector ()=default
 
virtual void increment (std::string_view name, double value=1.0, const metric_labels &labels={})=0
 Increment a counter metric.
 
virtual void gauge (std::string_view name, double value, const metric_labels &labels={})=0
 Set a gauge metric to an absolute value.
 
virtual void histogram (std::string_view name, double value, const metric_labels &labels={})=0
 Record a histogram observation.
 
virtual void timing (std::string_view name, std::chrono::nanoseconds duration, const metric_labels &labels={})=0
 Record a timing measurement.
 
virtual std::string get_implementation_name () const
 Get the implementation name for logging/debugging.
 

Detailed Description

Abstract interface for collecting metrics across modules.

This interface defines the contract for metric collection implementations, allowing modules to emit metrics without direct dependencies on specific monitoring backends (e.g., Prometheus, StatsD, OpenTelemetry).

Note
Implementations should be thread-safe for concurrent metric emission.

Example usage:

// Counter - monotonically increasing value
collector->increment("http_requests_total", 1.0, {{"method", "GET"}});
// Gauge - value that can go up or down
collector->gauge("active_connections", 42.0);
// Histogram - distribution of values
collector->histogram("request_size_bytes", 1024.0);
// Timing - duration measurement
collector->timing("request_duration", std::chrono::milliseconds{150});

Definition at line 68 of file metric_collector_interface.h.

Constructor & Destructor Documentation

◆ ~IMetricCollector()

virtual kcenon::common::interfaces::IMetricCollector::~IMetricCollector ( )
virtualdefault

Member Function Documentation

◆ gauge()

virtual void kcenon::common::interfaces::IMetricCollector::gauge ( std::string_view name,
double value,
const metric_labels & labels = {} )
pure virtual

Set a gauge metric to an absolute value.

Gauges represent instantaneous values that can go up or down, such as temperature, memory usage, or active connections.

Parameters
nameMetric name
valueCurrent value (can be negative)
labelsOptional dimensional labels

Implemented in kcenon::common::interfaces::null_metric_collector.

◆ get_implementation_name()

virtual std::string kcenon::common::interfaces::IMetricCollector::get_implementation_name ( ) const
inlinenodiscardvirtual

Get the implementation name for logging/debugging.

Returns
Implementation identifier string

Implemented in kcenon::common::interfaces::null_metric_collector.

Definition at line 132 of file metric_collector_interface.h.

132 {
133 return "IMetricCollector";
134 }

◆ histogram()

virtual void kcenon::common::interfaces::IMetricCollector::histogram ( std::string_view name,
double value,
const metric_labels & labels = {} )
pure virtual

Record a histogram observation.

Histograms track the distribution of values across configurable buckets, useful for measuring sizes, counts, or any discrete values.

Parameters
nameMetric name
valueObserved value
labelsOptional dimensional labels

Implemented in kcenon::common::interfaces::null_metric_collector.

◆ increment()

virtual void kcenon::common::interfaces::IMetricCollector::increment ( std::string_view name,
double value = 1.0,
const metric_labels & labels = {} )
pure virtual

Increment a counter metric.

Counters are monotonically increasing values, typically used for counting events (requests, errors, completed jobs, etc.).

Parameters
nameMetric name (should follow naming conventions, e.g., snake_case)
valueIncrement value (default: 1.0, must be non-negative)
labelsOptional dimensional labels for filtering/grouping

Implemented in kcenon::common::interfaces::null_metric_collector.

◆ timing()

virtual void kcenon::common::interfaces::IMetricCollector::timing ( std::string_view name,
std::chrono::nanoseconds duration,
const metric_labels & labels = {} )
pure virtual

Record a timing measurement.

Timing metrics are specialized histograms for duration measurements. Implementations may convert to appropriate units (ms, s, etc.).

Parameters
nameMetric name
durationDuration measurement
labelsOptional dimensional labels

Implemented in kcenon::common::interfaces::null_metric_collector.

Referenced by kcenon::common::interfaces::scoped_timer::~scoped_timer().

Here is the caller graph for this function:

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