Monitoring System 0.1.0
System resource monitoring with pluggable collectors and alerting
Loading...
Searching...
No Matches
collector_base.h File Reference

CRTP base class for metric collectors. More...

#include <atomic>
#include <chrono>
#include <mutex>
#include <string>
#include <unordered_map>
#include <vector>
#include "../interfaces/metric_types_adapter.h"
Include dependency graph for collector_base.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  kcenon::monitoring::collector_base< Derived >
 CRTP base class for metric collectors. More...
 

Namespaces

namespace  kcenon
 
namespace  kcenon::monitoring
 

Typedefs

using kcenon::monitoring::config_map = std::unordered_map<std::string, std::string>
 Type alias for configuration map.
 
using kcenon::monitoring::stats_map = std::unordered_map<std::string, double>
 Type alias for statistics map.
 

Detailed Description

CRTP base class for metric collectors.

This file provides a CRTP (Curiously Recurring Template Pattern) base class that extracts common collector functionality to reduce code duplication. All metric collectors share common patterns for initialization, collection, statistics tracking, and health monitoring.

Usage:

class my_collector : public collector_base<my_collector> {
public:
static constexpr const char* collector_name = "my_collector";
bool do_initialize(const config_map& config) {
// Collector-specific initialization
return true;
}
std::vector<metric> do_collect() {
// Collector-specific metric collection
return metrics;
}
bool is_available() const {
// Check if this collector can operate
return true;
}
std::vector<std::string> do_get_metric_types() const {
return {"metric_type_1", "metric_type_2"};
}
void do_add_statistics(stats_map& stats) const {
// Add collector-specific statistics
}
};

Definition in file collector_base.h.