3#include "util/prometheus/Counter.hpp"
4#include "util/prometheus/Gauge.hpp"
5#include "util/prometheus/Histogram.hpp"
7#include <boost/json/object.hpp>
23 { a.registerTooBusy() } -> std::same_as<void>;
24 { a.registerWriteSync(std::chrono::steady_clock::time_point{}) } -> std::same_as<void>;
25 { a.registerWriteSyncRetry() } -> std::same_as<void>;
26 { a.registerWriteStarted() } -> std::same_as<void>;
27 { a.registerWriteFinished(std::chrono::steady_clock::time_point{}) } -> std::same_as<void>;
28 { a.registerWriteRetry() } -> std::same_as<void>;
29 { a.registerReadStarted(std::uint64_t{}) } -> std::same_as<void>;
31 a.registerReadFinished(std::chrono::steady_clock::time_point{}, std::uint64_t{})
32 } -> std::same_as<void>;
33 { a.registerReadRetry(std::uint64_t{}) } -> std::same_as<void>;
34 { a.registerReadError(std::uint64_t{}) } -> std::same_as<void>;
35 { a.report() } -> std::same_as<boost::json::object>;
43class BackendCounters {
45 using PtrType = std::shared_ptr<BackendCounters>;
110 registerReadFinished(std::chrono::steady_clock::time_point startTime, std::uint64_t count = 1u);
139 class AsyncOperationCounters {
141 AsyncOperationCounters(std::string name);
144 registerStarted(std::uint64_t count);
147 registerFinished(std::uint64_t count);
150 registerRetry(std::uint64_t count);
153 registerError(std::uint64_t count);
160 std::reference_wrapper<util::prometheus::GaugeInt> pendingCounter_;
161 std::reference_wrapper<util::prometheus::CounterInt> completedCounter_;
162 std::reference_wrapper<util::prometheus::CounterInt> retryCounter_;
163 std::reference_wrapper<util::prometheus::CounterInt> errorCounter_;
166 std::reference_wrapper<util::prometheus::CounterInt> tooBusyCounter_;
168 std::reference_wrapper<util::prometheus::CounterInt> writeSyncCounter_;
169 std::reference_wrapper<util::prometheus::CounterInt> writeSyncRetryCounter_;
171 AsyncOperationCounters asyncWriteCounters_{
"write_async"};
172 AsyncOperationCounters asyncReadCounters_{
"read_async"};
174 std::reference_wrapper<util::prometheus::HistogramInt> readDurationHistogram_;
175 std::reference_wrapper<util::prometheus::HistogramInt> writeDurationHistogram_;
void registerTooBusy()
Register that the backend was too busy to process a request.
Definition BackendCounters.cpp:86
void registerWriteRetry()
Register that a write operation was retried.
Definition BackendCounters.cpp:119
void registerReadStarted(std::uint64_t count=1u)
Register that one or more read operations were started.
Definition BackendCounters.cpp:125
boost::json::object report() const
Get a report of the backend counters.
Definition BackendCounters.cpp:155
void registerWriteFinished(std::chrono::steady_clock::time_point startTime)
Register that a write operation was finished.
Definition BackendCounters.cpp:111
void registerWriteStarted()
Register that a write operation was started.
Definition BackendCounters.cpp:105
void registerWriteSync(std::chrono::steady_clock::time_point startTime)
Register that a write operation was started.
Definition BackendCounters.cpp:92
void registerReadFinished(std::chrono::steady_clock::time_point startTime, std::uint64_t count=1u)
Register that one or more read operations were finished.
Definition BackendCounters.cpp:131
void registerReadRetry(std::uint64_t count=1u)
Register that one or more read operations were retried.
Definition BackendCounters.cpp:143
void registerWriteSyncRetry()
Register that a write operation was retried.
Definition BackendCounters.cpp:99
static PtrType make()
Create a new BackendCounters object.
Definition BackendCounters.cpp:79
void registerReadError(std::uint64_t count=1u)
Register that one or more read operations had an error.
Definition BackendCounters.cpp:149
A concept for a class that can be used to count backend operations.
Definition BackendCounters.hpp:21
This namespace implements the data access layer and related components.
Definition AmendmentCenter.cpp:56