diff options
| author | Per Larsson <[email protected]> | 2021-10-01 11:29:03 +0200 |
|---|---|---|
| committer | Per Larsson <[email protected]> | 2021-10-01 11:29:03 +0200 |
| commit | eff1eb09a293cf92b6c25d7041f6931acf2c169f (patch) | |
| tree | 6e3d098b4d1197fdd37b8f69c98fd2a91140e748 /zenserver/upstream/upstreamcache.cpp | |
| parent | Try upload missing payloads and finalize Jupiter cache ref. (diff) | |
| download | zen-eff1eb09a293cf92b6c25d7041f6931acf2c169f.tar.xz zen-eff1eb09a293cf92b6c25d7041f6931acf2c169f.zip | |
Added upstream cache perf metrics.
Diffstat (limited to 'zenserver/upstream/upstreamcache.cpp')
| -rw-r--r-- | zenserver/upstream/upstreamcache.cpp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/zenserver/upstream/upstreamcache.cpp b/zenserver/upstream/upstreamcache.cpp index 0329569d8..03054b542 100644 --- a/zenserver/upstream/upstreamcache.cpp +++ b/zenserver/upstream/upstreamcache.cpp @@ -784,6 +784,36 @@ public: return {}; } + virtual void GetStatus(CbObjectWriter& Status) override + { + Status << "reading" << m_Options.ReadUpstream; + Status << "writing" << m_Options.WriteUpstream; + Status << "worker_threads" << m_Options.ThreadCount; + Status << "queue_count" << m_UpstreamQueue.Size(); + + Status.BeginArray("endpoints"); + for (const auto& Ep : m_Endpoints) + { + Status.BeginObject(); + Status << "name" << Ep->DisplayName(); + Status << "health" << (Ep->IsHealthy() ? "ok"sv : "inactive"sv); + + UpstreamEndpointStats& Stats = Ep->Stats(); + const uint64_t HitCount = Stats.HitCount; + const uint64_t MissCount = Stats.MissCount; + const uint64_t TotalCount = HitCount + MissCount; + const double HitRate = TotalCount > 0 ? (double(HitCount) / double(TotalCount)) * 100.0 : 0.0; + + Status << "hit_ratio" << HitRate; + Status << "downloaded_mb" << Stats.DownBytes; + Status << "uploaded_mb" << Stats.UpBytes; + Status << "error_count" << Stats.ErrorCount; + + Status.EndObject(); + } + Status.EndArray(); + } + private: void ProcessCacheRecord(UpstreamCacheRecord CacheRecord) { |