Database System 0.1.0
Advanced C++20 Database System with Multi-Backend Support
Loading...
Searching...
No Matches
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
14#pragma once
15
18
19#include <chrono>
20#include <string>
21#include <unordered_map>
22
23namespace database
24{
25namespace integrated
26{
27namespace adapters
28{
29
30// Forward declare database_metrics from monitoring_adapter.h
31struct database_metrics;
32
33namespace backends
34{
35
40{
41 std::unordered_map<std::string, double> gauges;
42 std::unordered_map<std::string, uint64_t> counters;
43 std::string source_id;
44};
45
49enum class health_status
50{
51 healthy,
55};
56
61{
63 std::string message;
64 std::unordered_map<std::string, std::string> metadata;
65};
66
75{
76public:
77 virtual ~monitoring_backend() = default;
78
84
90
95 virtual bool is_initialized() const = 0;
96
103 virtual common::VoidResult record_metric(const std::string& name, double value) = 0;
104
113 const std::string& name, double value,
114 const std::unordered_map<std::string, std::string>& tags) = 0;
115
121
127
133
139 virtual void record_query_execution(std::chrono::microseconds duration, bool success) = 0;
140
144 virtual void record_connection_acquired() = 0;
145
149 virtual void record_connection_released() = 0;
150
157 virtual void update_pool_stats(std::size_t active, std::size_t idle, std::size_t total) = 0;
158
162 virtual void record_transaction_begin() = 0;
163
167 virtual void record_transaction_commit() = 0;
168
172 virtual void record_transaction_rollback() = 0;
173
179
184 virtual std::string export_prometheus_metrics() = 0;
185};
186
187} // namespace backends
188} // namespace adapters
189} // namespace integrated
190} // namespace database
virtual std::string export_prometheus_metrics()=0
Export metrics in Prometheus format.
virtual void record_transaction_commit()=0
Record transaction commit.
virtual bool is_initialized() const =0
Check if backend is initialized.
virtual common::VoidResult reset()=0
Reset all metrics.
virtual void record_transaction_begin()=0
Record transaction begin.
virtual void update_pool_stats(std::size_t active, std::size_t idle, std::size_t total)=0
Update connection pool statistics.
virtual void record_connection_acquired()=0
Record connection acquisition.
virtual void record_query_execution(std::chrono::microseconds duration, bool success)=0
Record query execution.
virtual common::VoidResult record_metric(const std::string &name, double value, const std::unordered_map< std::string, std::string > &tags)=0
Record a metric value with tags.
virtual common::VoidResult initialize()=0
Initialize the monitoring backend.
virtual common::Result< health_check_result > check_health()=0
Perform health check.
virtual void record_transaction_rollback()=0
Record transaction rollback.
virtual common::Result< database_metrics > get_database_metrics()=0
Get database-specific metrics.
virtual void record_connection_released()=0
Record connection release.
virtual common::VoidResult shutdown()=0
Shutdown the monitoring backend gracefully.
virtual common::Result< metrics_snapshot > get_metrics()=0
Get current metrics snapshot.
virtual common::VoidResult record_metric(const std::string &name, double value)=0
Record a metric value.
Common Result<T> pattern for integrated database system.
Unified configuration for integrated database system.
std::unordered_map< std::string, std::string > metadata
std::unordered_map< std::string, uint64_t > counters