cleanup: add getter functions to stats_manager

Signed-off-by: Melissa Kilby <melissa.kilby.oss@gmail.com>
This commit is contained in:
Melissa Kilby 2024-05-14 18:50:37 +00:00 committed by poiana
parent b7adcd251d
commit 0195dba889
3 changed files with 24 additions and 7 deletions

View File

@ -63,6 +63,24 @@ public:
const indexed_vector<falco_rule>& rules,
std::string& out) const;
// Getter functions
inline const std::atomic<uint64_t>& get_total() const
{
return m_total;
}
inline const std::vector<std::unique_ptr<std::atomic<uint64_t>>>& get_by_priority() const
{
return m_by_priority;
}
inline const std::vector<std::unique_ptr<std::atomic<uint64_t>>>& get_by_rule_id() const
{
return m_by_rule_id;
}
private:
std::atomic<uint64_t> m_total;
std::vector<std::unique_ptr<std::atomic<uint64_t>>> m_by_priority;
std::vector<std::unique_ptr<std::atomic<uint64_t>>> m_by_rule_id;

View File

@ -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<metrics_v2> 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<std::string, std::string>& const_labels = {
{"priority", std::to_string(rule->priority)},

View File

@ -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<falco_rule>& 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;