MySQL_Logger::getAllMetrics()

Added function MySQL_Logger::getAllMetrics() to export all metrics
related to eventlogs
v2.x-logging_mem
René Cannaò 2 years ago
parent 8f0324b9af
commit ede0e7f268

@ -324,8 +324,8 @@ private:
std::atomic<unsigned long long> totalEventsCopiedToMemory;
/** @brief Total number of events copied to the on-disk database. */
std::atomic<unsigned long long> totalEventsCopiedToDisk;
std::atomic<unsigned long long> eventsAddedToBufferCount; ///< Total number of events added to the buffer.
std::atomic<unsigned long long> eventsCurrentlyInBufferCount; ///< Number of events currently in the buffer.
//std::atomic<unsigned long long> eventsAddedToBufferCount; ///< Total number of events added to the buffer.
//std::atomic<unsigned long long> eventsCurrentlyInBufferCount; ///< Number of events currently in the buffer.
} metrics;
@ -494,6 +494,19 @@ public:
* The function assumes ownership of the MySQL_Event pointers and deletes them after processing.
*/
int processEvents(SQLite3DB * statsdb , SQLite3DB * statsdb_disk);
/**
* @brief Retrieves all performance metrics from the logger and circular buffer.
* @return An unordered map containing all performance metrics.
* The keys are strings representing the metric names, and the values are unsigned long long integers representing the metric values.
*
* This function gathers all relevant performance metrics from the logger's internal EventLogMetrics structure and the circular buffer.
* It returns these metrics as a key-value map for easy access.
* The function ensures thread safety by acquiring a lock on the circular buffer's mutex before accessing its internal metrics.
*/
std::unordered_map<std::string, unsigned long long> getAllMetrics() const;
};

@ -531,8 +531,7 @@ uint64_t MySQL_Event::write_query_format_2_json(std::fstream *f) {
extern Query_Processor *GloQPro;
//MySQL_Logger::MySQL_Logger() : metrics{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} {
MySQL_Logger::MySQL_Logger() : metrics{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} {
MySQL_Logger::MySQL_Logger() : metrics{0, 0, 0, 0, 0, 0, 0, 0, 0} {
events.enabled=false;
events.base_filename=NULL;
events.datadir=NULL;
@ -1348,3 +1347,24 @@ int MySQL_Logger::processEvents(SQLite3DB * statsdb , SQLite3DB * statsdb_disk)
return ret;
}
std::unordered_map<std::string, unsigned long long> MySQL_Logger::getAllMetrics() const {
std::unordered_map<std::string, unsigned long long> allMetrics;
allMetrics["memoryCopyCount"] = metrics.memoryCopyCount;
allMetrics["diskCopyCount"] = metrics.diskCopyCount;
allMetrics["getAllEventsCallsCount"] = metrics.getAllEventsCallsCount;
allMetrics["getAllEventsEventsCount"] = metrics.getAllEventsEventsCount;
allMetrics["totalMemoryCopyTimeMicros"] = metrics.totalMemoryCopyTimeMicros;
allMetrics["totalDiskCopyTimeMicros"] = metrics.totalDiskCopyTimeMicros;
allMetrics["totalGetAllEventsDiskCopyTimeMicros"] = metrics.totalGetAllEventsDiskCopyTimeMicros;
allMetrics["totalEventsCopiedToMemory"] = metrics.totalEventsCopiedToMemory;
allMetrics["totalEventsCopiedToDisk"] = metrics.totalEventsCopiedToDisk;
//allMetrics["eventsAddedToBufferCount"] = metrics.eventsAddedToBufferCount;
//allMetrics["eventsDroppedFromBufferCount"] = metrics.eventsDroppedFromBufferCount;
allMetrics["circularBuffereventsAddedCount"] = MyLogCB->getEventsAddedCount();
allMetrics["circularBufferEventsDroppedCount"] = MyLogCB->getEventsDroppedCount();
allMetrics["circularBufferEventsSize"] = MyLogCB->size();
return allMetrics;
}

Loading…
Cancel
Save