NVIDIA DeepStream SDK API Reference

9.2 Release
includes/prometheus/summary.h
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
3  * SPDX-License-Identifier: Apache-2.0
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 
18 #pragma once
19 
20 #include <chrono>
21 #include <cstdint>
22 #include <mutex>
23 #include <vector>
24 
25 #include "prometheus/client_metric.h"
26 #include "prometheus/detail/builder.h" // IWYU pragma: export
27 #include "prometheus/detail/ckms_quantiles.h"
28 #include "prometheus/detail/core_export.h"
29 #include "prometheus/detail/time_window_quantiles.h"
30 #include "prometheus/metric_type.h"
31 
32 namespace prometheus {
33 
59  public:
60  using Quantiles = std::vector<detail::CKMSQuantiles::Quantile>;
61 
62  static const MetricType metric_type{MetricType::Summary};
63 
91  explicit Summary(const Quantiles& quantiles,
92  std::chrono::milliseconds max_age = std::chrono::seconds{60},
93  int age_buckets = 5);
94 
96  explicit Summary(Quantiles&& quantiles,
97  std::chrono::milliseconds max_age = std::chrono::seconds{60},
98  int age_buckets = 5);
99 
101  void Observe(double value);
102 
106  ClientMetric Collect() const;
107 
108  private:
109  Quantiles quantiles_;
110  mutable std::mutex mutex_;
111  std::uint64_t count_{};
112  double sum_{};
113  detail::TimeWindowQuantiles quantile_values_;
114 };
115 
143 PROMETHEUS_CPP_CORE_EXPORT detail::Builder<Summary> BuildSummary();
144 
145 } // namespace prometheus
prometheus::BuildSummary
PROMETHEUS_CPP_CORE_EXPORT detail::Builder< Summary > BuildSummary()
Return a builder to configure and register a Summary metric.
prometheus::Summary
A summary metric samples observations over a sliding window of time.
Definition: includes/prometheus/summary.h:58
PROMETHEUS_CPP_CORE_EXPORT
#define PROMETHEUS_CPP_CORE_EXPORT
Definition: includes/prometheus/detail/core_export.h:31
prometheus::Summary::Quantiles
std::vector< detail::CKMSQuantiles::Quantile > Quantiles
Definition: includes/prometheus/summary.h:60
prometheus::MetricType
MetricType
Definition: includes/prometheus/metric_type.h:22
prometheus::MetricType::Summary
@ Summary
prometheus
Definition: includes/prometheus/check_names.h:25