22#include "util/prometheus/Counter.hpp"
23#include "util/prometheus/Gauge.hpp"
24#include "util/prometheus/Histogram.hpp"
26#include <boost/json/object.hpp>
42 { a.registerTooBusy() } -> std::same_as<void>;
43 { a.registerWriteSync(std::chrono::steady_clock::time_point{}) } -> std::same_as<void>;
44 { a.registerWriteSyncRetry() } -> std::same_as<void>;
45 { a.registerWriteStarted() } -> std::same_as<void>;
46 { a.registerWriteFinished(std::chrono::steady_clock::time_point{}) } -> std::same_as<void>;
47 { a.registerWriteRetry() } -> std::same_as<void>;
48 { a.registerReadStarted(std::uint64_t{}) } -> std::same_as<void>;
50 a.registerReadFinished(std::chrono::steady_clock::time_point{}, std::uint64_t{})
51 } -> std::same_as<void>;
52 { a.registerReadRetry(std::uint64_t{}) } -> std::same_as<void>;
53 { a.registerReadError(std::uint64_t{}) } -> std::same_as<void>;
54 { a.report() } -> std::same_as<boost::json::object>;
62class BackendCounters {
64 using PtrType = std::shared_ptr<BackendCounters>;
129 registerReadFinished(std::chrono::steady_clock::time_point startTime, std::uint64_t count = 1u);
158 class AsyncOperationCounters {
160 AsyncOperationCounters(std::string name);
163 registerStarted(std::uint64_t count);
166 registerFinished(std::uint64_t count);
169 registerRetry(std::uint64_t count);
172 registerError(std::uint64_t count);
179 std::reference_wrapper<util::prometheus::GaugeInt> pendingCounter_;
180 std::reference_wrapper<util::prometheus::CounterInt> completedCounter_;
181 std::reference_wrapper<util::prometheus::CounterInt> retryCounter_;
182 std::reference_wrapper<util::prometheus::CounterInt> errorCounter_;
185 std::reference_wrapper<util::prometheus::CounterInt> tooBusyCounter_;
187 std::reference_wrapper<util::prometheus::CounterInt> writeSyncCounter_;
188 std::reference_wrapper<util::prometheus::CounterInt> writeSyncRetryCounter_;
190 AsyncOperationCounters asyncWriteCounters_{
"write_async"};
191 AsyncOperationCounters asyncReadCounters_{
"read_async"};
193 std::reference_wrapper<util::prometheus::HistogramInt> readDurationHistogram_;
194 std::reference_wrapper<util::prometheus::HistogramInt> writeDurationHistogram_;
void registerTooBusy()
Register that the backend was too busy to process a request.
Definition BackendCounters.cpp:105
void registerWriteRetry()
Register that a write operation was retried.
Definition BackendCounters.cpp:138
void registerReadStarted(std::uint64_t count=1u)
Register that one or more read operations were started.
Definition BackendCounters.cpp:144
boost::json::object report() const
Get a report of the backend counters.
Definition BackendCounters.cpp:174
void registerWriteFinished(std::chrono::steady_clock::time_point startTime)
Register that a write operation was finished.
Definition BackendCounters.cpp:130
void registerWriteStarted()
Register that a write operation was started.
Definition BackendCounters.cpp:124
void registerWriteSync(std::chrono::steady_clock::time_point startTime)
Register that a write operation was started.
Definition BackendCounters.cpp:111
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:150
void registerReadRetry(std::uint64_t count=1u)
Register that one or more read operations were retried.
Definition BackendCounters.cpp:162
void registerWriteSyncRetry()
Register that a write operation was retried.
Definition BackendCounters.cpp:118
static PtrType make()
Create a new BackendCounters object.
Definition BackendCounters.cpp:98
void registerReadError(std::uint64_t count=1u)
Register that one or more read operations had an error.
Definition BackendCounters.cpp:168
A concept for a class that can be used to count backend operations.
Definition BackendCounters.hpp:40
This namespace implements the data access layer and related components.
Definition AmendmentCenter.cpp:75