|
Database System 0.1.0
Advanced C++20 Database System with Multi-Backend Support
|
Main performance monitoring system. More...
#include <performance_monitor.h>

Public Member Functions | |
| performance_monitor () | |
| Constructor - now public for dependency injection. | |
| ~performance_monitor () | |
| void | set_monitoring_enabled (bool enabled) |
| void | set_metrics_retention_period (std::chrono::minutes period) |
| void | set_alert_thresholds (double error_rate_threshold, std::chrono::microseconds latency_threshold) |
| void | record_query_metrics (const query_metrics &metrics) |
| void | record_connection_metrics (database_types db_type, const connection_metrics &metrics) |
| void | record_slow_query (const std::string &query, std::chrono::microseconds execution_time) |
| performance_summary | get_performance_summary () const |
| performance_summary | get_performance_summary (database_types db_type) const |
| std::vector< query_metrics > | get_recent_queries (std::chrono::minutes window) const |
| std::vector< query_metrics > | get_slow_queries (std::chrono::microseconds threshold) const |
| void | update_connection_count (database_types db_type, size_t active, size_t total) |
| connection_metrics | get_connection_metrics (database_types db_type) const |
| void | register_alert_handler (std::function< void(const performance_alert &)> handler) |
| std::vector< performance_alert > | get_recent_alerts (std::chrono::minutes window) const |
| void | clear_metrics () |
| void | cleanup_old_metrics () |
| std::string | get_metrics_json () const |
| std::string | get_dashboard_html () const |
Private Member Functions | |
| void | cleanup_thread () |
| void | check_thresholds () |
| void | emit_alert (performance_alert::alert_type type, const std::string &message) |
| std::string | calculate_query_hash (const std::string &query) const |
Private Attributes | |
| std::atomic< bool > | monitoring_enabled_ {true} |
| std::chrono::minutes | retention_period_ {60} |
| double | error_rate_threshold_ = 0.05 |
| std::chrono::microseconds | latency_threshold_ {1000000} |
| std::mutex | metrics_mutex_ |
| std::vector< query_metrics > | query_history_ |
| std::unordered_map< database_types, connection_metrics > | connection_metrics_ |
| std::vector< performance_alert > | alerts_ |
| std::mutex | handlers_mutex_ |
| std::vector< std::function< void(const performance_alert &)> > | alert_handlers_ |
| std::atomic< bool > | cleanup_running_ {true} |
| std::thread | cleanup_thread_ |
| std::condition_variable | cleanup_cv_ |
| std::mutex | cleanup_mutex_ |
| std::unordered_map< std::string, size_t > | query_patterns_ |
| std::unordered_map< std::string, std::chrono::microseconds > | query_avg_times_ |
Main performance monitoring system.
Definition at line 198 of file performance_monitor.h.
| database::monitoring::performance_monitor::performance_monitor | ( | ) |
Constructor - now public for dependency injection.
Definition at line 57 of file performance_monitor.cpp.
References cleanup_running_, cleanup_thread(), and cleanup_thread_.

| database::monitoring::performance_monitor::~performance_monitor | ( | ) |
Definition at line 88 of file performance_monitor.cpp.
References cleanup_cv_, cleanup_running_, and cleanup_thread_.
|
private |
Definition at line 489 of file performance_monitor.cpp.
|
private |
Definition at line 452 of file performance_monitor.cpp.
References emit_alert(), error_rate_threshold_, get_performance_summary(), database::monitoring::performance_alert::high_error_rate, database::monitoring::performance_alert::high_latency, and latency_threshold_.
Referenced by cleanup_thread(), and record_query_metrics().


| void database::monitoring::performance_monitor::cleanup_old_metrics | ( | ) |
Definition at line 388 of file performance_monitor.cpp.
References alerts_, metrics_mutex_, query_history_, and retention_period_.
Referenced by cleanup_thread().

|
private |
Definition at line 431 of file performance_monitor.cpp.
References check_thresholds(), cleanup_cv_, cleanup_mutex_, cleanup_old_metrics(), and cleanup_running_.
Referenced by performance_monitor().


| void database::monitoring::performance_monitor::clear_metrics | ( | ) |
Definition at line 378 of file performance_monitor.cpp.
References alerts_, connection_metrics_, metrics_mutex_, query_avg_times_, query_history_, and query_patterns_.
|
private |
Definition at line 469 of file performance_monitor.cpp.
References alert_handlers_, alerts_, handlers_mutex_, and metrics_mutex_.
Referenced by check_thresholds(), record_connection_metrics(), record_query_metrics(), and record_slow_query().

| connection_metrics database::monitoring::performance_monitor::get_connection_metrics | ( | database_types | db_type | ) | const |
Definition at line 339 of file performance_monitor.cpp.
References database::monitoring::connection_metrics::active_connections, database::monitoring::connection_metrics::avg_acquisition_time, connection_metrics_, database::monitoring::connection_metrics::failed_connections, database::monitoring::connection_metrics::idle_connections, database::monitoring::connection_metrics::last_update, database::monitoring::connection_metrics::max_acquisition_time, metrics_mutex_, and database::monitoring::connection_metrics::total_connections.
| std::string database::monitoring::performance_monitor::get_dashboard_html | ( | ) | const |
| std::string database::monitoring::performance_monitor::get_metrics_json | ( | ) | const |
Definition at line 411 of file performance_monitor.cpp.
References get_performance_summary().

| performance_summary database::monitoring::performance_monitor::get_performance_summary | ( | ) | const |
Definition at line 174 of file performance_monitor.cpp.
References database::monitoring::performance_summary::active_connections, database::monitoring::performance_summary::avg_query_time, connection_metrics_, database::monitoring::performance_summary::connection_utilization, database::monitoring::performance_summary::error_counts, database::monitoring::performance_summary::error_rate, database::monitoring::performance_summary::failed_queries, database::monitoring::performance_summary::max_query_time, database::monitoring::performance_summary::measurement_end, database::monitoring::performance_summary::measurement_start, metrics_mutex_, database::monitoring::performance_summary::min_query_time, database::monitoring::performance_summary::queries_per_second, query_history_, retention_period_, database::monitoring::performance_summary::successful_queries, database::monitoring::performance_summary::total_connections, and database::monitoring::performance_summary::total_queries.
Referenced by check_thresholds(), and get_metrics_json().

| performance_summary database::monitoring::performance_monitor::get_performance_summary | ( | database_types | db_type | ) | const |
Definition at line 249 of file performance_monitor.cpp.
References database::monitoring::performance_summary::active_connections, database::monitoring::performance_summary::avg_query_time, connection_metrics_, database::monitoring::performance_summary::connection_utilization, database::monitoring::performance_summary::error_rate, database::monitoring::performance_summary::failed_queries, database::monitoring::performance_summary::measurement_end, database::monitoring::performance_summary::measurement_start, metrics_mutex_, query_history_, retention_period_, database::monitoring::performance_summary::successful_queries, database::monitoring::performance_summary::total_connections, and database::monitoring::performance_summary::total_queries.
| std::vector< performance_alert > database::monitoring::performance_monitor::get_recent_alerts | ( | std::chrono::minutes | window | ) | const |
Definition at line 363 of file performance_monitor.cpp.
References alerts_, and metrics_mutex_.
| std::vector< query_metrics > database::monitoring::performance_monitor::get_recent_queries | ( | std::chrono::minutes | window | ) | const |
Definition at line 300 of file performance_monitor.cpp.
References metrics_mutex_, and query_history_.
| std::vector< query_metrics > database::monitoring::performance_monitor::get_slow_queries | ( | std::chrono::microseconds | threshold | ) | const |
Definition at line 315 of file performance_monitor.cpp.
References metrics_mutex_, and query_history_.
| void database::monitoring::performance_monitor::record_connection_metrics | ( | database_types | db_type, |
| const connection_metrics & | metrics ) |
Definition at line 135 of file performance_monitor.cpp.
References database::monitoring::connection_metrics::active_connections, database::monitoring::connection_metrics::avg_acquisition_time, connection_metrics_, database::monitoring::performance_alert::connection_pool_exhaustion, emit_alert(), database::monitoring::connection_metrics::failed_connections, database::monitoring::connection_metrics::idle_connections, database::monitoring::connection_metrics::last_update, database::monitoring::connection_metrics::max_acquisition_time, metrics_mutex_, monitoring_enabled_, and database::monitoring::connection_metrics::total_connections.

| void database::monitoring::performance_monitor::record_query_metrics | ( | const query_metrics & | metrics | ) |
Definition at line 104 of file performance_monitor.cpp.
References check_thresholds(), emit_alert(), database::monitoring::query_metrics::execution_time, latency_threshold_, metrics_mutex_, monitoring_enabled_, query_avg_times_, database::monitoring::query_metrics::query_hash, query_history_, query_patterns_, and database::monitoring::performance_alert::slow_query.

| void database::monitoring::performance_monitor::record_slow_query | ( | const std::string & | query, |
| std::chrono::microseconds | execution_time ) |
Definition at line 165 of file performance_monitor.cpp.
References emit_alert(), monitoring_enabled_, and database::monitoring::performance_alert::slow_query.

| void database::monitoring::performance_monitor::register_alert_handler | ( | std::function< void(const performance_alert &)> | handler | ) |
Definition at line 357 of file performance_monitor.cpp.
References alert_handlers_, and handlers_mutex_.
| void database::monitoring::performance_monitor::set_alert_thresholds | ( | double | error_rate_threshold, |
| std::chrono::microseconds | latency_threshold ) |
Definition at line 97 of file performance_monitor.cpp.
References error_rate_threshold_, and latency_threshold_.
|
inline |
Definition at line 212 of file performance_monitor.h.
References retention_period_.
|
inline |
Definition at line 211 of file performance_monitor.h.
References monitoring_enabled_.
| void database::monitoring::performance_monitor::update_connection_count | ( | database_types | db_type, |
| size_t | active, | ||
| size_t | total ) |
Definition at line 328 of file performance_monitor.cpp.
References connection_metrics_, metrics_mutex_, and monitoring_enabled_.
|
private |
Definition at line 264 of file performance_monitor.h.
Referenced by emit_alert(), and register_alert_handler().
|
private |
Definition at line 260 of file performance_monitor.h.
Referenced by cleanup_old_metrics(), clear_metrics(), emit_alert(), and get_recent_alerts().
|
private |
Definition at line 269 of file performance_monitor.h.
Referenced by cleanup_thread(), and ~performance_monitor().
|
private |
Definition at line 270 of file performance_monitor.h.
Referenced by cleanup_thread().
|
private |
Definition at line 267 of file performance_monitor.h.
Referenced by cleanup_thread(), performance_monitor(), and ~performance_monitor().
|
private |
Definition at line 268 of file performance_monitor.h.
Referenced by performance_monitor(), and ~performance_monitor().
|
private |
Definition at line 259 of file performance_monitor.h.
Referenced by clear_metrics(), get_connection_metrics(), get_performance_summary(), get_performance_summary(), record_connection_metrics(), and update_connection_count().
|
private |
Definition at line 253 of file performance_monitor.h.
Referenced by check_thresholds(), and set_alert_thresholds().
|
private |
Definition at line 263 of file performance_monitor.h.
Referenced by emit_alert(), and register_alert_handler().
|
private |
Definition at line 254 of file performance_monitor.h.
Referenced by check_thresholds(), record_query_metrics(), and set_alert_thresholds().
|
mutableprivate |
Definition at line 257 of file performance_monitor.h.
Referenced by cleanup_old_metrics(), clear_metrics(), emit_alert(), get_connection_metrics(), get_performance_summary(), get_performance_summary(), get_recent_alerts(), get_recent_queries(), get_slow_queries(), record_connection_metrics(), record_query_metrics(), and update_connection_count().
|
private |
Definition at line 251 of file performance_monitor.h.
Referenced by record_connection_metrics(), record_query_metrics(), record_slow_query(), set_monitoring_enabled(), and update_connection_count().
|
private |
Definition at line 274 of file performance_monitor.h.
Referenced by clear_metrics(), and record_query_metrics().
|
private |
Definition at line 258 of file performance_monitor.h.
Referenced by cleanup_old_metrics(), clear_metrics(), get_performance_summary(), get_performance_summary(), get_recent_queries(), get_slow_queries(), and record_query_metrics().
|
private |
Definition at line 273 of file performance_monitor.h.
Referenced by clear_metrics(), and record_query_metrics().
|
private |
Definition at line 252 of file performance_monitor.h.
Referenced by cleanup_old_metrics(), get_performance_summary(), get_performance_summary(), and set_metrics_retention_period().