diff --git a/userspace/engine/stats_manager.h b/userspace/engine/stats_manager.h index 18f8d8ae..c7c2a5c0 100644 --- a/userspace/engine/stats_manager.h +++ b/userspace/engine/stats_manager.h @@ -63,6 +63,24 @@ public: const indexed_vector& rules, std::string& out) const; + // Getter functions + inline const std::atomic& get_total() const + { + return m_total; + } + + inline const std::vector>>& get_by_priority() const + { + return m_by_priority; + } + + inline const std::vector>>& get_by_rule_id() const + { + return m_by_rule_id; + } + + +private: std::atomic m_total; std::vector>> m_by_priority; std::vector>> m_by_rule_id; diff --git a/userspace/falco/falco_metrics.cpp b/userspace/falco/falco_metrics.cpp index 11283ea9..ed6d9762 100644 --- a/userspace/falco/falco_metrics.cpp +++ b/userspace/falco/falco_metrics.cpp @@ -107,7 +107,6 @@ std::string falco_metrics::to_text(const falco::app::state& state) prometheus_text += prometheus_metrics_converter.convert_metric_to_text_prometheus("evt_source", "falcosecurity", "falco", {{"evt_source", source}}); } std::vector falco_metrics; - if(state.config->m_metrics_flags & METRICS_V2_RULE_COUNTERS) { const stats_manager& rule_stats_manager = state.engine->get_rule_stats_manager(); @@ -117,9 +116,9 @@ std::string falco_metrics::to_text(const falco::app::state& state) METRIC_VALUE_TYPE_U64, METRIC_VALUE_UNIT_COUNT, METRIC_VALUE_METRIC_TYPE_MONOTONIC, - rule_stats_manager.m_total.load())); + rule_stats_manager.get_total().load())); - for (size_t i = 0; i < rule_stats_manager.m_by_rule_id.size(); i++) + for (size_t i = 0; i < rule_stats_manager.get_by_rule_id().size(); i++) { auto rule = rules.at(i); std::string rules_metric_name = "rules." + rule->name; @@ -129,7 +128,7 @@ std::string falco_metrics::to_text(const falco::app::state& state) METRIC_VALUE_TYPE_U64, METRIC_VALUE_UNIT_COUNT, METRIC_VALUE_METRIC_TYPE_MONOTONIC, - rule_stats_manager.m_by_rule_id[i]->load()); + rule_stats_manager.get_by_rule_id()[i]->load()); prometheus_metrics_converter.convert_metric_to_unit_convention(metric); const std::map& const_labels = { {"priority", std::to_string(rule->priority)}, diff --git a/userspace/falco/stats_writer.cpp b/userspace/falco/stats_writer.cpp index a221496f..80e78e6d 100644 --- a/userspace/falco/stats_writer.cpp +++ b/userspace/falco/stats_writer.cpp @@ -377,10 +377,10 @@ void stats_writer::collector::get_metrics_output_fields_additional( { const stats_manager& rule_stats_manager = m_writer->m_engine->get_rule_stats_manager(); const indexed_vector& rules = m_writer->m_engine->get_rules(); - output_fields["falco.rules.matches_total"] = rule_stats_manager.m_total.load(); - for (size_t i = 0; i < rule_stats_manager.m_by_rule_id.size(); i++) + output_fields["falco.rules.matches_total"] = rule_stats_manager.get_total().load(); + for (size_t i = 0; i < rule_stats_manager.get_by_rule_id().size(); i++) { - auto rule_count = rule_stats_manager.m_by_rule_id[i]->load(); + auto rule_count = rule_stats_manager.get_by_rule_id()[i]->load(); if (rule_count == 0 && !m_writer->m_config->m_metrics_include_empty_values) { continue;