Database System 0.1.0
Advanced C++20 Database System with Multi-Backend Support
Loading...
Searching...
No Matches
system_monitoring_backend.h
Go to the documentation of this file.
1// BSD 3-Clause License
2// Copyright (c) 2025, 🍀☀🌕🌥 🌊
3// See the LICENSE file in the project root for full license information.
4
16#pragma once
17
18#include "monitoring_backend.h"
20
21#include <memory>
22#include <mutex>
23#include <chrono>
24#include <vector>
25
26// Forward declarations to avoid header dependency when monitoring_system is unavailable
27namespace kcenon
28{
29namespace monitoring
30{
31 class performance_monitor;
32 struct metrics_snapshot;
33}
34}
35
36namespace database
37{
38namespace integrated
39{
40namespace adapters
41{
42namespace backends
43{
44
54{
55public:
60 explicit system_monitoring_backend(const db_monitoring_config& config);
61
63
64 // Non-copyable, non-movable (holds unique monitor instance)
69
72 bool is_initialized() const override;
73
74 common::VoidResult record_metric(const std::string& name, double value) override;
76 const std::string& name, double value,
77 const std::unordered_map<std::string, std::string>& tags) override;
78
81 common::VoidResult reset() override;
82
83 void record_query_execution(std::chrono::microseconds duration, bool success) override;
84 void record_connection_acquired() override;
85 void record_connection_released() override;
86 void update_pool_stats(std::size_t active, std::size_t idle, std::size_t total) override;
87 void record_transaction_begin() override;
88 void record_transaction_commit() override;
89 void record_transaction_rollback() override;
90
92 std::string export_prometheus_metrics() override;
93
94private:
99 const kcenon::monitoring::metrics_snapshot& snapshot);
100
105
108 mutable std::mutex mutex_;
109 std::chrono::steady_clock::time_point start_time_;
110
111 // monitoring_system components
112 std::unique_ptr<kcenon::monitoring::performance_monitor> monitor_;
113
114 // Current metrics tracking
116 std::vector<std::chrono::microseconds> recent_query_latencies_;
118
119 // Connection pool tracking
121 std::size_t idle_connections_;
123
124 // Transaction tracking
126};
127
128} // namespace backends
129} // namespace adapters
130} // namespace integrated
131} // namespace database
bool is_initialized() const override
Check if backend is initialized.
common::VoidResult initialize() override
Initialize the monitoring backend.
common::Result< health_check_result > check_health() override
Perform health check.
void update_pool_stats(std::size_t active, std::size_t idle, std::size_t total) override
Update connection pool statistics.
std::string export_prometheus_metrics() override
Export metrics in Prometheus format.
std::unique_ptr< kcenon::monitoring::performance_monitor > monitor_
void record_query_execution(std::chrono::microseconds duration, bool success) override
Record query execution.
system_monitoring_backend & operator=(system_monitoring_backend &&)=delete
system_monitoring_backend(const db_monitoring_config &config)
Construct system monitoring backend.
common::VoidResult record_metric(const std::string &name, double value) override
Record a metric value.
database_metrics convert_to_database_metrics(const kcenon::monitoring::metrics_snapshot &snapshot)
Convert monitoring_system metrics to database_metrics format.
common::Result< database_metrics > get_database_metrics() override
Get database-specific metrics.
system_monitoring_backend(const system_monitoring_backend &)=delete
common::Result< metrics_snapshot > get_metrics() override
Get current metrics snapshot.
common::VoidResult shutdown() override
Shutdown the monitoring backend gracefully.
void calculate_derived_metrics()
Calculate derived metrics from collected data.
system_monitoring_backend & operator=(const system_monitoring_backend &)=delete
Database monitoring adapter with runtime backend selection.
Abstract interface for monitoring backends.
Monitoring and metrics configuration.