diff --git a/userspace/libsinsp/metrics_collector.cpp b/userspace/libsinsp/metrics_collector.cpp index 715ce91e68..8776e49e50 100644 --- a/userspace/libsinsp/metrics_collector.cpp +++ b/userspace/libsinsp/metrics_collector.cpp @@ -456,9 +456,9 @@ void metrics_collector::snapshot() } } -std::string metrics_collector::convert_metric_to_prometheus_text(std::string metric_name, metrics_v2 metric) +std::string metrics_collector::convert_metric_to_prometheus_text(std::string_view metric_name, metrics_v2 metric) { - std::string prometheus_text = metric_name; + std::string prometheus_text(metric_name.begin(), metric_name.end()); prometheus_text += "{raw_name=\"" + std::string(metric.name) + "\",unit=\"" + std::string(metrics_unit_name_mappings[metric.unit]) \ + "\",metric_type=\"" + std::string(metrics_metric_type_name_mappings[metric.metric_type]) + "\"} "; // white space at the end important! switch (metric.type) diff --git a/userspace/libsinsp/metrics_collector.h b/userspace/libsinsp/metrics_collector.h index 1de5041de0..9b90224869 100644 --- a/userspace/libsinsp/metrics_collector.h +++ b/userspace/libsinsp/metrics_collector.h @@ -23,6 +23,7 @@ limitations under the License. #include #include #include +#include struct sinsp_stats_v2 { @@ -107,7 +108,7 @@ class metrics_collector * * This method is a work in progress. */ - std::string convert_metric_to_prometheus_text(std::string metric_name, metrics_v2 metric); + std::string convert_metric_to_prometheus_text(std::string_view metric_name, metrics_v2 metric); /*! \brief Method to convert memory units; tied to metrics_v2 definitions diff --git a/userspace/libsinsp/test/sinsp_metrics.ut.cpp b/userspace/libsinsp/test/sinsp_metrics.ut.cpp index 1aceb7ef4c..0f2a8bb020 100644 --- a/userspace/libsinsp/test/sinsp_metrics.ut.cpp +++ b/userspace/libsinsp/test/sinsp_metrics.ut.cpp @@ -152,7 +152,8 @@ TEST_F(sinsp_with_test_input, sinsp_metrics_collector) // This resembles the Falco client use case char metric_name[METRIC_NAME_MAX] = "test."; strlcat(metric_name, metric.name, sizeof(metric_name)); - std::string prometheus_text = metrics_collector->convert_metric_to_prometheus_text(metric_name, metric); + std::string_view s(metric_name); + std::string prometheus_text = metrics_collector->convert_metric_to_prometheus_text(s, metric); if (strncmp(metric.name, "n_missing_container_images", 17) == 0) { std::string prometheus_text_substring = "test.n_missing_container_images{raw_name=\"n_missing_container_images\",unit=\"COUNT\",metric_type=\"NON_MONOTONIC_CURRENT\"} 0";