29 std::cout <<
"=== Plugin-based Metric Collector Example ===" << std::endl;
38 auto collector = std::make_unique<plugin_metric_collector>(config);
41 auto sys_collector = std::make_unique<system_resource_collector>();
42 if (sys_collector->initialize({})) {
43 std::cout <<
"System resource collector initialized" << std::endl;
44 collector->register_plugin(std::move(sys_collector));
48 auto thread_collector = std::make_unique<thread_system_collector>();
49 if (thread_collector->initialize({})) {
50 std::cout <<
"Thread system collector initialized" << std::endl;
51 collector->register_plugin(std::move(thread_collector));
55 auto logger_collector = std::make_unique<logger_system_collector>();
56 if (logger_collector->initialize({})) {
57 std::cout <<
"Logger system collector initialized" << std::endl;
58 collector->register_plugin(std::move(logger_collector));
62 std::cout <<
"\nRegistered plugins:" << std::endl;
63 for (
const auto& plugin_name : collector->get_registered_plugins()) {
64 std::cout <<
" - " << plugin_name << std::endl;
68 if (collector->start()) {
69 std::cout <<
"\nCollection started successfully" << std::endl;
71 std::cerr <<
"Failed to start collection" << std::endl;
76 std::cout <<
"\nCollecting metrics for 5 seconds..." << std::endl;
77 for (
int i = 0; i < 5; ++i) {
78 std::this_thread::sleep_for(std::chrono::seconds(1));
81 auto metrics = collector->force_collect();
82 std::cout <<
"Collected " << metrics.size() <<
" metrics" << std::endl;
85 for (
const auto&
metric : metrics) {
93 auto cached = collector->get_cached_metrics();
94 std::cout <<
"\nTotal cached metrics: " << cached.size() << std::endl;
98 std::cout <<
"Collection stopped" << std::endl;