Database System 0.1.0
Advanced C++20 Database System with Multi-Backend Support
Loading...
Searching...
No Matches
database::monitoring::prometheus_exporter Class Reference

Export metrics in Prometheus format. More...

#include <performance_monitor.h>

Inheritance diagram for database::monitoring::prometheus_exporter:
Inheritance graph
Collaboration diagram for database::monitoring::prometheus_exporter:
Collaboration graph

Public Member Functions

 prometheus_exporter (const std::string &endpoint, int port)
 
bool export_metrics (const performance_summary &summary) override
 
bool export_alerts (const std::vector< performance_alert > &alerts) override
 
std::string format_prometheus_metrics (const performance_summary &summary) const
 
- Public Member Functions inherited from database::monitoring::metrics_exporter
virtual ~metrics_exporter ()=default
 

Private Attributes

std::string endpoint_
 
int port_
 

Detailed Description

Export metrics in Prometheus format.

Definition at line 294 of file performance_monitor.h.

Constructor & Destructor Documentation

◆ prometheus_exporter()

database::monitoring::prometheus_exporter::prometheus_exporter ( const std::string & endpoint,
int port )

Member Function Documentation

◆ export_alerts()

bool database::monitoring::prometheus_exporter::export_alerts ( const std::vector< performance_alert > & alerts)
overridevirtual

Implements database::monitoring::metrics_exporter.

Definition at line 508 of file performance_monitor.cpp.

509 {
510 // Export alerts as metrics
511 for (const auto& alert : alerts) {
512 std::cout << "database_alert{type=\"" << static_cast<int>(alert.type())
513 << "\"} 1 " << std::chrono::duration_cast<std::chrono::milliseconds>(
514 alert.timestamp().time_since_epoch()).count() << std::endl;
515 }
516 return true;
517 }

Referenced by TEST_F().

Here is the caller graph for this function:

◆ export_metrics()

bool database::monitoring::prometheus_exporter::export_metrics ( const performance_summary & summary)
overridevirtual

Implements database::monitoring::metrics_exporter.

Definition at line 500 of file performance_monitor.cpp.

501 {
502 // In a real implementation, this would send HTTP POST to Prometheus push gateway
503 std::string metrics = format_prometheus_metrics(summary);
504 std::cout << "Prometheus metrics:\n" << metrics << std::endl;
505 return true;
506 }
std::string format_prometheus_metrics(const performance_summary &summary) const

References format_prometheus_metrics().

Referenced by TEST_F().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ format_prometheus_metrics()

std::string database::monitoring::prometheus_exporter::format_prometheus_metrics ( const performance_summary & summary) const

Definition at line 519 of file performance_monitor.cpp.

520 {
521 std::ostringstream metrics;
522
523 metrics << "# HELP database_queries_total Total number of database queries\n";
524 metrics << "# TYPE database_queries_total counter\n";
525 metrics << "database_queries_total " << summary.total_queries << "\n";
526
527 metrics << "# HELP database_query_duration_microseconds Average query duration in microseconds\n";
528 metrics << "# TYPE database_query_duration_microseconds gauge\n";
529 metrics << "database_query_duration_microseconds " << summary.avg_query_time.count() << "\n";
530
531 metrics << "# HELP database_error_rate Query error rate\n";
532 metrics << "# TYPE database_error_rate gauge\n";
533 metrics << "database_error_rate " << summary.error_rate << "\n";
534
535 metrics << "# HELP database_connections_active Active database connections\n";
536 metrics << "# TYPE database_connections_active gauge\n";
537 metrics << "database_connections_active " << summary.active_connections << "\n";
538
539 return metrics.str();
540 }

References database::monitoring::performance_summary::active_connections, database::monitoring::performance_summary::avg_query_time, database::monitoring::performance_summary::error_rate, and database::monitoring::performance_summary::total_queries.

Referenced by export_metrics(), and TEST_F().

Here is the caller graph for this function:

Member Data Documentation

◆ endpoint_

std::string database::monitoring::prometheus_exporter::endpoint_
private

Definition at line 305 of file performance_monitor.h.

◆ port_

int database::monitoring::prometheus_exporter::port_
private

Definition at line 306 of file performance_monitor.h.


The documentation for this class was generated from the following files: