diff options
| author | Dan Engelbrecht <[email protected]> | 2023-09-28 23:57:31 +0200 |
|---|---|---|
| committer | GitHub <[email protected]> | 2023-09-28 23:57:31 +0200 |
| commit | bf20e4c8e63638792e69098d4d9810c1136ff627 (patch) | |
| tree | fee82fc0d15910902a4a3c24a5564867748b6419 /src/zencore/include | |
| parent | added more context to http response error message (#430) (diff) | |
| download | zen-bf20e4c8e63638792e69098d4d9810c1136ff627.tar.xz zen-bf20e4c8e63638792e69098d4d9810c1136ff627.zip | |
adding more stats (#429)
- Feature: Add detailed stats on requests and data sizes on a per-bucket level, use parameter `cachestorestats=true` on the `/stats/z$` endpoint to enable
- Feature: Add detailed stats on requests and data sizes on cidstore, use parameter `cidstorestats=true` on the `/stats/z$` endpoint to enable
- Feature: Dashboard now accepts parameters in the URL which is passed on to the `/stats/z$` endpoint
Diffstat (limited to 'src/zencore/include')
| -rw-r--r-- | src/zencore/include/zencore/stats.h | 64 |
1 files changed, 61 insertions, 3 deletions
diff --git a/src/zencore/include/zencore/stats.h b/src/zencore/include/zencore/stats.h index 1a0817b99..e8e08f96a 100644 --- a/src/zencore/include/zencore/stats.h +++ b/src/zencore/include/zencore/stats.h @@ -222,6 +222,39 @@ private: Histogram m_Histogram; }; +struct MeterSnapshot +{ + uint64_t Count; + double MeanRate; + double Rate1; + double Rate5; + double Rate15; +}; + +struct HistogramSnapshot +{ + double Count; + double Avg; + double Min; + double Max; + double P75; + double P95; + double P99; + double P999; +}; + +struct StatsSnapshot +{ + MeterSnapshot Meter; + HistogramSnapshot Histogram; +}; + +struct RequestStatsSnapshot +{ + StatsSnapshot Requests; + StatsSnapshot Bytes; +}; + /** Metrics for network requests Aggregates tracking of duration, payload sizes into a single @@ -261,19 +294,39 @@ public: struct Scope { - Scope(OperationTiming& Outer); + Scope(RequestStats& Outer, int64_t Bytes); ~Scope(); + void SetBytes(int64_t Bytes) { m_Bytes = Bytes; } + void Stop(); void Cancel(); private: - OperationTiming& m_Outer; - uint64_t m_StartTick; + RequestStats& m_Outer; + uint64_t m_StartTick; + int64_t m_Bytes; }; void EmitSnapshot(std::string_view Tag, CbObjectWriter& Cbo); + RequestStatsSnapshot Snapshot(); + private: + static StatsSnapshot GetSnapshot(Meter& M, Histogram& H, double ConversionFactor) + { + SampleSnapshot Snap = H.Snapshot(); + return StatsSnapshot{ + .Meter = {.Count = M.Count(), .MeanRate = M.MeanRate(), .Rate1 = M.Rate1(), .Rate5 = M.Rate5(), .Rate15 = M.Rate15()}, + .Histogram = {.Count = H.Count() * ConversionFactor, + .Avg = H.Mean() * ConversionFactor, + .Min = H.Min() * ConversionFactor, + .Max = H.Max() * ConversionFactor, + .P75 = Snap.Get75Percentile() * ConversionFactor, + .P95 = Snap.Get95Percentile() * ConversionFactor, + .P99 = Snap.Get99Percentile() * ConversionFactor, + .P999 = Snap.Get999Percentile() * ConversionFactor}}; + } + Meter m_RequestMeter; Meter m_BytesMeter; Histogram m_RequestTimeHistogram; @@ -286,6 +339,11 @@ void EmitSnapshot(std::string_view Tag, Meter& Stat, CbObjectWriter& Cbo); void EmitSnapshot(const Histogram& Stat, CbObjectWriter& Cbo, double ConversionFactor); +void EmitSnapshot(std::string_view Tag, const MeterSnapshot& Snapshot, CbObjectWriter& Cbo); +void EmitSnapshot(std::string_view Tag, const HistogramSnapshot& Snapshot, CbObjectWriter& Cbo); +void EmitSnapshot(std::string_view Tag, const StatsSnapshot& Snapshot, CbObjectWriter& Cbo); +void EmitSnapshot(std::string_view Tag, const RequestStatsSnapshot& Snapshot, CbObjectWriter& Cbo); + } // namespace zen::metrics namespace zen { |