Prometheus Client Library for Modern C++
Loading...
Searching...
No Matches
summary.h
1#pragma once
2
3#include <chrono>
4#include <cstdint>
5#include <mutex>
6#include <vector>
7
8#include "prometheus/client_metric.h"
9#include "prometheus/detail/builder.h" // IWYU pragma: export
10#include "prometheus/detail/ckms_quantiles.h"
11#include "prometheus/detail/core_export.h"
12#include "prometheus/detail/time_window_quantiles.h"
13#include "prometheus/metric_type.h"
14
15namespace prometheus {
16
41class PROMETHEUS_CPP_CORE_EXPORT Summary {
42 public:
43 using Quantiles = std::vector<detail::CKMSQuantiles::Quantile>;
44
45 static const MetricType metric_type{MetricType::Summary};
46
74 Summary(const Quantiles& quantiles,
75 std::chrono::milliseconds max_age = std::chrono::seconds{60},
76 int age_buckets = 5);
77
79 void Observe(double value);
80
84 ClientMetric Collect() const;
85
86 private:
87 const Quantiles quantiles_;
88 mutable std::mutex mutex_;
89 std::uint64_t count_;
90 double sum_;
91 detail::TimeWindowQuantiles quantile_values_;
92};
93
121PROMETHEUS_CPP_CORE_EXPORT detail::Builder<Summary> BuildSummary();
122
123} // namespace prometheus
A summary metric samples observations over a sliding window of time.
Definition summary.h:41
Definition client_metric.h:12