11#ifdef HAVE_SYSTEM_MONITORING_BACKEND
34#ifdef HAVE_SYSTEM_MONITORING_BACKEND
35 return std::make_unique<backends::system_monitoring_backend>(config);
37 return std::make_unique<backends::fallback_monitoring_backend>(config);
41#ifdef HAVE_SYSTEM_MONITORING_BACKEND
42 return std::make_unique<backends::system_monitoring_backend>(config);
45 return std::make_unique<backends::fallback_monitoring_backend>(config);
49 return std::make_unique<backends::fallback_monitoring_backend>(config);
52 return std::make_unique<backends::null_monitoring_backend>(config);
55 return std::make_unique<backends::fallback_monitoring_backend>(config);
119 return backend_->record_metric(name, value);
123 const std::string& name,
double value,
124 const std::unordered_map<std::string, std::string>& tags)
132 return backend_->record_metric(name, value, tags);
184 backend_->record_connection_acquired();
192 backend_->record_connection_released();
200 backend_->update_pool_stats(active, idle, total);
208 backend_->record_transaction_begin();
216 backend_->record_transaction_commit();
224 backend_->record_transaction_rollback();
236 return backend_->get_database_metrics();
243 return "# Backend not initialized\n";
246 return backend_->export_prometheus_metrics();
Monitoring adapter for database operations.
void update_pool_stats(std::size_t active, std::size_t idle, std::size_t total)
Update connection pool statistics.
common::VoidResult initialize()
Initialize monitoring system.
void record_connection_released()
Record connection release.
void record_query_execution(std::chrono::microseconds duration, bool success)
Record query execution.
void record_transaction_rollback()
Record transaction rollback.
static std::unique_ptr< backends::monitoring_backend > create_backend(const db_monitoring_config &config, monitoring_backend_type backend_type)
Create appropriate backend based on type.
common::Result< backends::health_check_result > check_health()
Perform health check.
bool is_initialized() const
Check if monitoring is initialized.
~monitoring_adapter()
Destructor - ensures graceful shutdown.
common::Result< database_metrics > get_database_metrics()
Get database-specific metrics.
common::VoidResult reset()
Reset all metrics.
std::unique_ptr< backends::monitoring_backend > backend_
Monitoring backend implementation.
common::Result< backends::metrics_snapshot > get_metrics()
Get current metrics snapshot.
common::VoidResult record_metric(const std::string &name, double value)
Record a metric value.
monitoring_adapter(const db_monitoring_config &config, monitoring_backend_type backend_type=monitoring_backend_type::auto_select)
Construct monitoring adapter with configuration.
common::VoidResult shutdown()
Shutdown monitoring system.
std::string export_prometheus_metrics()
Export metrics in Prometheus format.
void record_transaction_commit()
Record transaction commit.
void record_transaction_begin()
Record transaction begin.
void record_connection_acquired()
Record connection acquisition.
Fallback monitoring backend using internal metrics tracking.
Database monitoring adapter with runtime backend selection.
Abstract interface for monitoring backends.
Result< std::monostate > VoidResult
monitoring_backend_type
Monitoring backend type selection.
@ null
No-op backend (discard all metrics)
@ auto_select
Automatically select best available backend.
@ fallback
Use internal metrics storage.
@ system
Use monitoring_system (requires HAVE_SYSTEM_MONITORING_BACKEND)
static std::shared_ptr< core::database_backend > create_backend(backend_type type)
Create database backend instance.
backend_type
Database backend type enumeration.
kcenon::common::VoidResult VoidResult
Primary VoidResult type - use this for void operations.
Null monitoring backend (no-op)
Monitoring and metrics configuration.
Monitoring backend using kcenon/monitoring_system.