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 explicit Summary(const Quantiles& quantiles,
75 std::chrono::milliseconds max_age = std::chrono::seconds{60},
76 int age_buckets = 5);
77
79 explicit Summary(Quantiles&& quantiles,
80 std::chrono::milliseconds max_age = std::chrono::seconds{60},
81 int age_buckets = 5);
82
84 void Observe(double value);
85
89 ClientMetric Collect() const;
90
91 private:
92 Quantiles quantiles_;
93 mutable std::mutex mutex_;
94 std::uint64_t count_{};
95 double sum_{};
96 detail::TimeWindowQuantiles quantile_values_;
97};
98
126PROMETHEUS_CPP_CORE_EXPORT detail::Builder<Summary> BuildSummary();
127
128} // namespace prometheus
A summary metric samples observations over a sliding window of time.
Definition summary.h:41
Definition client_metric.h:12