32#if KCENON_HAS_COMMON_SYSTEM
33#include <kcenon/common/concepts/service.h>
36namespace kcenon {
namespace monitoring {
72 { t.get_current_metrics() };
73 { t.get_source_name() } -> std::convertible_to<std::string>;
74 { t.is_healthy() } -> std::convertible_to<bool>;
84concept MetricCollectorLike =
requires(T t) {
85 { t.collect_metrics() };
86 { t.is_collecting() } -> std::convertible_to<bool>;
87 { t.get_metric_types() };
182 std::chrono::milliseconds
interval{std::chrono::seconds(1)};
196 [[nodiscard]] common::VoidResult
validate()
const {
208static_assert(concepts::Validatable<collection_config>,
209 "collection_config must satisfy Validatable concept");
421 virtual common::VoidResult
register_source(std::shared_ptr<interface_metric_source> source) = 0;
Interface for collectors that aggregate metrics from multiple sources.
virtual common::VoidResult register_source(std::shared_ptr< interface_metric_source > source)=0
Register a metric source.
virtual std::vector< std::string > get_registered_sources() const =0
Get all registered sources.
virtual common::VoidResult unregister_source(const std::string &source_name)=0
Unregister a metric source.
virtual ~interface_aggregated_collector()=default
Pure virtual interface for metric collectors.
virtual common::Result< std::vector< metric > > force_collect()=0
Force immediate metric collection.
virtual collection_config get_config() const =0
Get current collection configuration.
virtual common::VoidResult update_config(const collection_config &config)=0
Update collection configuration.
virtual std::vector< std::string > get_metric_types() const =0
Get the types of metrics this collector supports.
virtual bool is_collecting() const =0
Check if collector is currently active.
virtual ~interface_metric_collector()=default
virtual void reset_stats()=0
Reset collector statistics.
virtual common::VoidResult stop_collection()=0
Stop automatic metric collection.
virtual common::Result< std::vector< metric > > collect_metrics()=0
Collect metrics based on current configuration.
virtual common::VoidResult start_collection(const collection_config &config)=0
Start automatic metric collection.
virtual metric_stats get_stats() const =0
Get collector statistics.
Interface for components that provide metrics.
virtual std::string get_source_name() const =0
Get the name of this metric source.
virtual ~interface_metric_source()=default
virtual bool is_healthy() const =0
Check if this source is healthy.
virtual std::vector< metric > get_current_metrics() const =0
Get current metrics from this source.
Interface for components that can be observed.
Filter configuration for metric collection.
void add_metric_type(const std::string &type)
std::vector< std::string > metric_types_
bool should_collect(const std::string &metric_type) const
metric_filter(filter_type type=filter_type::include_all)
A type that can provide metrics.
A type that can validate its own state.
Unified feature flags header for monitoring_system.
Adapter for metric types to support interface definitions.
metric_type
Metric types supported by exporters.
Observer pattern interface for monitoring system event handling.
Result pattern type definitions for monitoring system.
Configuration for metric collection.
std::chrono::milliseconds interval
common::VoidResult validate() const
Validate the configuration.
Extended error information with context.
Statistics about metric collection.