68 [[nodiscard]]
virtual std::string
name()
const = 0;
98 [[nodiscard]]
const std::string&
prefix()
const {
107 virtual void add_label(
const std::string& key,
const std::string& value) {
115 [[nodiscard]]
const std::map<std::string, std::string>&
labels()
const {
161 [[nodiscard]] std::string
name()
const override {
208 [[nodiscard]] std::string
name()
const override {
248 [[nodiscard]] std::string
name()
const override {
281 backends_[backend->name()] = std::move(backend);
290 [[nodiscard]] std::shared_ptr<MetricsBackend>
get(
291 const std::string& name)
const {
293 return (it !=
backends_.end()) ? it->second :
nullptr;
301 [[nodiscard]]
bool has(
const std::string& name)
const {
313 std::map<std::string, std::shared_ptr<MetricsBackend>>
backends_;
Backend registry for managing multiple export formats.
static BackendRegistry & instance()
Get the singleton instance.
std::map< std::string, std::shared_ptr< MetricsBackend > > backends_
std::shared_ptr< MetricsBackend > get(const std::string &name) const
Get a backend by name.
bool has(const std::string &name) const
Check if a backend is registered.
void register_backend(std::shared_ptr< MetricsBackend > backend)
Register a backend.
~JsonBackend() override=default
Destructor.
std::string export_base(const BaseSnapshot &snapshot) const override
Export base metrics snapshot.
std::string export_enhanced(const EnhancedSnapshot &snapshot) const override
Export enhanced metrics snapshot.
JsonBackend()=default
Default constructor.
void set_pretty(bool pretty)
Enable or disable pretty printing.
std::string name() const override
Get the backend name.
Logging backend for debugging and diagnostics.
std::string export_enhanced(const EnhancedSnapshot &snapshot) const override
Export enhanced metrics snapshot.
~LoggingBackend() override=default
Destructor.
LoggingBackend()=default
Default constructor.
std::string name() const override
Get the backend name.
std::string export_base(const BaseSnapshot &snapshot) const override
Export base metrics snapshot.
Abstract interface for metrics export backends.
virtual std::string export_base(const BaseSnapshot &snapshot) const =0
Export base metrics snapshot.
const std::string & prefix() const
Get current metric name prefix.
virtual ~MetricsBackend()=default
Virtual destructor for proper cleanup.
const std::map< std::string, std::string > & labels() const
Get all configured labels.
virtual void set_prefix(const std::string &prefix)
Set metric name prefix.
std::string prefix_
Metric name prefix.
virtual std::string name() const =0
Get the backend name.
virtual std::string export_enhanced(const EnhancedSnapshot &snapshot) const =0
Export enhanced metrics snapshot.
virtual void add_label(const std::string &key, const std::string &value)
Add a label to all exported metrics.
MetricsBackend()=default
Default constructor.
std::map< std::string, std::string > labels_
Labels to attach to all metrics.
Prometheus/OpenMetrics format backend.
PrometheusBackend()=default
Default constructor.
std::string export_base(const BaseSnapshot &snapshot) const override
Export base metrics snapshot.
std::string name() const override
Get the backend name.
std::string format_labels() const
Format labels for Prometheus output.
~PrometheusBackend() override=default
Destructor.
std::string export_enhanced(const EnhancedSnapshot &snapshot) const override
Export enhanced metrics snapshot.
Enhanced metrics snapshot with latency percentiles and throughput.
Thread pool metrics collection, histograms, and observability.
Base snapshot structure containing common metric values.
Enhanced snapshot with latency percentiles and throughput.