diff --git a/src/telemetry/Counter.h b/src/telemetry/Counter.h index 9152236116..5f8ec2bf32 100644 --- a/src/telemetry/Counter.h +++ b/src/telemetry/Counter.h @@ -61,6 +61,8 @@ private: bool has_callback = false; }; +using CounterPtr = std::shared_ptr; + class CounterFamily : public MetricFamily, public std::enable_shared_from_this { public: static inline const char* OpaqueName = "CounterMetricFamilyVal"; @@ -72,19 +74,20 @@ public: * Returns the metrics handle for given labels, creating a new instance * lazily if necessary. */ - std::shared_ptr GetOrAdd(Span labels, prometheus::CollectCallbackPtr callback = nullptr); + CounterPtr GetOrAdd(Span labels, prometheus::CollectCallbackPtr callback = nullptr); /** * @copydoc GetOrAdd */ - std::shared_ptr GetOrAdd(std::initializer_list labels, - prometheus::CollectCallbackPtr callback = nullptr); + CounterPtr GetOrAdd(std::initializer_list labels, prometheus::CollectCallbackPtr callback = nullptr); zeek_int_t MetricType() const noexcept override { return BifEnum::Telemetry::MetricType::COUNTER; } private: prometheus::Family* family; - std::vector> counters; + std::vector counters; }; +using CounterFamilyPtr = std::shared_ptr; + } // namespace zeek::telemetry diff --git a/src/telemetry/Gauge.h b/src/telemetry/Gauge.h index 4617a74f3f..cf04e7a9a0 100644 --- a/src/telemetry/Gauge.h +++ b/src/telemetry/Gauge.h @@ -79,6 +79,8 @@ private: bool has_callback = false; }; +using GaugePtr = std::shared_ptr; + class GaugeFamily : public MetricFamily, public std::enable_shared_from_this { public: static inline const char* OpaqueName = "GaugeMetricFamilyVal"; @@ -87,13 +89,12 @@ public: * Returns the metrics handle for given labels, creating a new instance * lazily if necessary. */ - std::shared_ptr GetOrAdd(Span labels, prometheus::CollectCallbackPtr callback = nullptr); + GaugePtr GetOrAdd(Span labels, prometheus::CollectCallbackPtr callback = nullptr); /** * @copydoc GetOrAdd */ - std::shared_ptr GetOrAdd(std::initializer_list labels, - prometheus::CollectCallbackPtr callback = nullptr); + GaugePtr GetOrAdd(std::initializer_list labels, prometheus::CollectCallbackPtr callback = nullptr); zeek_int_t MetricType() const noexcept override { return BifEnum::Telemetry::MetricType::GAUGE; } @@ -102,7 +103,9 @@ public: private: prometheus::Family* family; - std::vector> gauges; + std::vector gauges; }; +using GaugeFamilyPtr = std::shared_ptr; + } // namespace zeek::telemetry diff --git a/src/telemetry/Histogram.h b/src/telemetry/Histogram.h index adb3ca2209..65d371cd6d 100644 --- a/src/telemetry/Histogram.h +++ b/src/telemetry/Histogram.h @@ -44,6 +44,8 @@ private: prometheus::Labels labels; }; +using HistogramPtr = std::shared_ptr; + class HistogramFamily : public MetricFamily, public std::enable_shared_from_this { public: static inline const char* OpaqueName = "HistogramMetricFamilyVal"; @@ -55,19 +57,21 @@ public: * Returns the metrics handle for given labels, creating a new instance * lazily if necessary. */ - std::shared_ptr GetOrAdd(Span labels); + HistogramPtr GetOrAdd(Span labels); /** * @copydoc GetOrAdd */ - std::shared_ptr GetOrAdd(std::initializer_list labels); + HistogramPtr GetOrAdd(std::initializer_list labels); zeek_int_t MetricType() const noexcept override { return BifEnum::Telemetry::MetricType::HISTOGRAM; } private: prometheus::Family* family; prometheus::Histogram::BucketBoundaries boundaries; - std::vector> histograms; + std::vector histograms; }; +using HistogramFamilyPtr = std::shared_ptr; + } // namespace zeek::telemetry diff --git a/src/telemetry/Manager.cc b/src/telemetry/Manager.cc index 45eef81c39..8b0a037e74 100644 --- a/src/telemetry/Manager.cc +++ b/src/telemetry/Manager.cc @@ -443,9 +443,9 @@ std::string Manager::GetClusterJson() const { return buffer.GetString(); } -std::shared_ptr Manager::CounterFamily(std::string_view prefix, std::string_view name, - Span labels, - std::string_view helptext, std::string_view unit) { +CounterFamilyPtr Manager::CounterFamily(std::string_view prefix, std::string_view name, + Span labels, std::string_view helptext, + std::string_view unit) { auto full_name = detail::BuildFullPrometheusName(prefix, name, unit, true); auto& prom_fam = @@ -459,32 +459,32 @@ std::shared_ptr Manager::CounterFamily(std::string_vie return fam; } -std::shared_ptr Manager::CounterFamily(std::string_view prefix, std::string_view name, - std::initializer_list labels, - std::string_view helptext, std::string_view unit) { +CounterFamilyPtr Manager::CounterFamily(std::string_view prefix, std::string_view name, + std::initializer_list labels, std::string_view helptext, + std::string_view unit) { auto lbl_span = Span{labels.begin(), labels.size()}; return CounterFamily(prefix, name, lbl_span, helptext, unit); } -std::shared_ptr Manager::CounterInstance(std::string_view prefix, std::string_view name, - Span labels, std::string_view helptext, - std::string_view unit, prometheus::CollectCallbackPtr callback) { +CounterPtr Manager::CounterInstance(std::string_view prefix, std::string_view name, Span labels, + std::string_view helptext, std::string_view unit, + prometheus::CollectCallbackPtr callback) { return WithLabelNames(labels, [&, this](auto labelNames) { auto family = CounterFamily(prefix, name, labelNames, helptext, unit); return family->GetOrAdd(labels, callback); }); } -std::shared_ptr Manager::CounterInstance(std::string_view prefix, std::string_view name, - std::initializer_list labels, std::string_view helptext, - std::string_view unit, prometheus::CollectCallbackPtr callback) { +CounterPtr Manager::CounterInstance(std::string_view prefix, std::string_view name, + std::initializer_list labels, std::string_view helptext, + std::string_view unit, prometheus::CollectCallbackPtr callback) { auto lbl_span = Span{labels.begin(), labels.size()}; return CounterInstance(prefix, name, lbl_span, helptext, unit, std::move(callback)); } -std::shared_ptr Manager::GaugeFamily(std::string_view prefix, std::string_view name, - Span labels, - std::string_view helptext, std::string_view unit) { +std::shared_ptr Manager::GaugeFamily(std::string_view prefix, std::string_view name, + Span labels, std::string_view helptext, + std::string_view unit) { auto full_name = detail::BuildFullPrometheusName(prefix, name, unit, false); auto& prom_fam = @@ -498,33 +498,32 @@ std::shared_ptr Manager::GaugeFamily(std::string_view pr return fam; } -std::shared_ptr Manager::GaugeFamily(std::string_view prefix, std::string_view name, - std::initializer_list labels, - std::string_view helptext, std::string_view unit) { +GaugeFamilyPtr Manager::GaugeFamily(std::string_view prefix, std::string_view name, + std::initializer_list labels, std::string_view helptext, + std::string_view unit) { auto lbl_span = Span{labels.begin(), labels.size()}; return GaugeFamily(prefix, name, lbl_span, helptext, unit); } -std::shared_ptr Manager::GaugeInstance(std::string_view prefix, std::string_view name, - Span labels, std::string_view helptext, - std::string_view unit, prometheus::CollectCallbackPtr callback) { +GaugePtr Manager::GaugeInstance(std::string_view prefix, std::string_view name, Span labels, + std::string_view helptext, std::string_view unit, + prometheus::CollectCallbackPtr callback) { return WithLabelNames(labels, [&, this](auto labelNames) { auto family = GaugeFamily(prefix, name, labelNames, helptext, unit); return family->GetOrAdd(labels, callback); }); } -std::shared_ptr Manager::GaugeInstance(std::string_view prefix, std::string_view name, - std::initializer_list labels, std::string_view helptext, - std::string_view unit, prometheus::CollectCallbackPtr callback) { +GaugePtr Manager::GaugeInstance(std::string_view prefix, std::string_view name, std::initializer_list labels, + std::string_view helptext, std::string_view unit, + prometheus::CollectCallbackPtr callback) { auto lbl_span = Span{labels.begin(), labels.size()}; return GaugeInstance(prefix, name, lbl_span, helptext, unit, callback); } -std::shared_ptr Manager::HistogramFamily(std::string_view prefix, std::string_view name, - Span labels, - ConstSpan bounds, - std::string_view helptext, std::string_view unit) { +HistogramFamilyPtr Manager::HistogramFamily(std::string_view prefix, std::string_view name, + Span labels, ConstSpan bounds, + std::string_view helptext, std::string_view unit) { auto full_name = detail::BuildFullPrometheusName(prefix, name, unit); auto& prom_fam = @@ -538,27 +537,24 @@ std::shared_ptr Manager::HistogramFamily(std::string return fam; } -std::shared_ptr Manager::HistogramFamily(std::string_view prefix, std::string_view name, - std::initializer_list labels, - ConstSpan bounds, - std::string_view helptext, std::string_view unit) { +HistogramFamilyPtr Manager::HistogramFamily(std::string_view prefix, std::string_view name, + std::initializer_list labels, ConstSpan bounds, + std::string_view helptext, std::string_view unit) { auto lbl_span = Span{labels.begin(), labels.size()}; return HistogramFamily(prefix, name, lbl_span, bounds, helptext, unit); } -std::shared_ptr Manager::HistogramInstance(std::string_view prefix, std::string_view name, - Span labels, ConstSpan bounds, - std::string_view helptext, std::string_view unit) { +HistogramPtr Manager::HistogramInstance(std::string_view prefix, std::string_view name, Span labels, + ConstSpan bounds, std::string_view helptext, std::string_view unit) { return WithLabelNames(labels, [&, this](auto labelNames) { auto family = HistogramFamily(prefix, name, labelNames, bounds, helptext, unit); return family->GetOrAdd(labels); }); } -std::shared_ptr Manager::HistogramInstance(std::string_view prefix, std::string_view name, - std::initializer_list labels, - std::initializer_list bounds, std::string_view helptext, - std::string_view unit) { +HistogramPtr Manager::HistogramInstance(std::string_view prefix, std::string_view name, + std::initializer_list labels, std::initializer_list bounds, + std::string_view helptext, std::string_view unit) { auto lbls = Span{labels.begin(), labels.size()}; auto bounds_span = Span{bounds.begin(), bounds.size()}; return HistogramInstance(prefix, name, lbls, bounds_span, helptext, unit); diff --git a/src/telemetry/Manager.h b/src/telemetry/Manager.h index 66cb07e04f..8a1deb5fc4 100644 --- a/src/telemetry/Manager.h +++ b/src/telemetry/Manager.h @@ -69,14 +69,13 @@ public: * @param helptext Short explanation of the metric. * @param unit Unit of measurement. */ - std::shared_ptr CounterFamily(std::string_view prefix, std::string_view name, - Span labels, - std::string_view helptext, std::string_view unit = ""); + CounterFamilyPtr CounterFamily(std::string_view prefix, std::string_view name, Span labels, + std::string_view helptext, std::string_view unit = ""); /// @copydoc CounterFamily - std::shared_ptr CounterFamily(std::string_view prefix, std::string_view name, - std::initializer_list labels, - std::string_view helptext, std::string_view unit = ""); + CounterFamilyPtr CounterFamily(std::string_view prefix, std::string_view name, + std::initializer_list labels, std::string_view helptext, + std::string_view unit = ""); /** * Accesses a counter instance. Creates the hosting metric family as well @@ -89,16 +88,14 @@ public: * @param callback Passing a callback method will enable asynchronous mode. The callback method will be called by * the metrics subsystem whenever data is requested. */ - std::shared_ptr CounterInstance(std::string_view prefix, std::string_view name, - Span labels, std::string_view helptext, - std::string_view unit = "", - prometheus::CollectCallbackPtr callback = nullptr); + CounterPtr CounterInstance(std::string_view prefix, std::string_view name, Span labels, + std::string_view helptext, std::string_view unit = "", + prometheus::CollectCallbackPtr callback = nullptr); /// @copydoc counterInstance - std::shared_ptr CounterInstance(std::string_view prefix, std::string_view name, - std::initializer_list labels, std::string_view helptext, - std::string_view unit = "", - prometheus::CollectCallbackPtr callback = nullptr); + CounterPtr CounterInstance(std::string_view prefix, std::string_view name, std::initializer_list labels, + std::string_view helptext, std::string_view unit = "", + prometheus::CollectCallbackPtr callback = nullptr); /** * @return A gauge metric family. Creates the family lazily if necessary. @@ -108,14 +105,13 @@ public: * @param helptext Short explanation of the metric. * @param unit Unit of measurement. */ - std::shared_ptr GaugeFamily(std::string_view prefix, std::string_view name, - Span labels, std::string_view helptext, - std::string_view unit = ""); + GaugeFamilyPtr GaugeFamily(std::string_view prefix, std::string_view name, Span labels, + std::string_view helptext, std::string_view unit = ""); /// @copydoc GaugeFamily - std::shared_ptr GaugeFamily(std::string_view prefix, std::string_view name, - std::initializer_list labels, - std::string_view helptext, std::string_view unit = ""); + GaugeFamilyPtr GaugeFamily(std::string_view prefix, std::string_view name, + std::initializer_list labels, std::string_view helptext, + std::string_view unit = ""); /** * Accesses a gauge instance. Creates the hosting metric family as well @@ -128,14 +124,14 @@ public: * @param callback Passing a callback method will enable asynchronous mode. The callback method will be called by * the metrics subsystem whenever data is requested. */ - std::shared_ptr GaugeInstance(std::string_view prefix, std::string_view name, Span labels, - std::string_view helptext, std::string_view unit = "", - prometheus::CollectCallbackPtr callback = nullptr); + GaugePtr GaugeInstance(std::string_view prefix, std::string_view name, Span labels, + std::string_view helptext, std::string_view unit = "", + prometheus::CollectCallbackPtr callback = nullptr); /// @copydoc GaugeInstance - std::shared_ptr GaugeInstance(std::string_view prefix, std::string_view name, - std::initializer_list labels, std::string_view helptext, - std::string_view unit = "", prometheus::CollectCallbackPtr callback = nullptr); + GaugePtr GaugeInstance(std::string_view prefix, std::string_view name, std::initializer_list labels, + std::string_view helptext, std::string_view unit = "", + prometheus::CollectCallbackPtr callback = nullptr); // Forces the compiler to use the type `Span` instead of trying to // match parameters to a `span`. @@ -166,16 +162,14 @@ public: * different bucket settings. Users may also override * @p bounds via run-time configuration. */ - std::shared_ptr HistogramFamily(std::string_view prefix, std::string_view name, - Span labels, - ConstSpan bounds, std::string_view helptext, - std::string_view unit = ""); + HistogramFamilyPtr HistogramFamily(std::string_view prefix, std::string_view name, + Span labels, ConstSpan bounds, + std::string_view helptext, std::string_view unit = ""); /// @copydoc HistogramFamily - std::shared_ptr HistogramFamily(std::string_view prefix, std::string_view name, - std::initializer_list labels, - ConstSpan bounds, std::string_view helptext, - std::string_view unit = ""); + HistogramFamilyPtr HistogramFamily(std::string_view prefix, std::string_view name, + std::initializer_list labels, ConstSpan bounds, + std::string_view helptext, std::string_view unit = ""); /** * Returns a histogram. Creates the family lazily if necessary. @@ -194,15 +188,13 @@ public: * different bucket settings. Users may also override * @p bounds via run-time configuration. */ - std::shared_ptr HistogramInstance(std::string_view prefix, std::string_view name, - Span labels, ConstSpan bounds, - std::string_view helptext, std::string_view unit = ""); + HistogramPtr HistogramInstance(std::string_view prefix, std::string_view name, Span labels, + ConstSpan bounds, std::string_view helptext, std::string_view unit = ""); /// @copdoc HistogramInstance - std::shared_ptr HistogramInstance(std::string_view prefix, std::string_view name, - std::initializer_list labels, - std::initializer_list bounds, std::string_view helptext, - std::string_view unit = ""); + HistogramPtr HistogramInstance(std::string_view prefix, std::string_view name, + std::initializer_list labels, std::initializer_list bounds, + std::string_view helptext, std::string_view unit = ""); /** * @return A JSON description of the cluster configuration for reporting @@ -245,10 +237,10 @@ private: detail::process_stats current_process_stats; double process_stats_last_updated = 0.0; - std::shared_ptr rss_gauge; - std::shared_ptr vms_gauge; - std::shared_ptr cpu_gauge; - std::shared_ptr fds_gauge; + GaugePtr rss_gauge; + GaugePtr vms_gauge; + GaugePtr cpu_gauge; + GaugePtr fds_gauge; std::string endpoint_name; std::vector export_prefixes;