From 75fb3a583cf4e8a7ca34bedb3322d309bb170ed4 Mon Sep 17 00:00:00 2001 From: bndw Date: Sat, 14 Feb 2026 12:53:50 -0800 Subject: feat: add storage stats and average latency metrics Track and display storage and performance metrics that were previously showing zeros. Storage metrics: - Add GetStats() method to storage returning event count and DB size - Store database file path for size calculation - Update metrics every 30 seconds via goroutine in main.go - Display event count and DB size (MB) in dashboard Performance metrics: - Calculate average latency from histogram sum/count metrics - Display as milliseconds in dashboard - Formula: (duration_sum / duration_count) * 1000 Missing metrics (deferred): - Connections: requires connection lifecycle tracking (gRPC + WebSocket) - Deletions: count would need API change to ProcessDeletion Dashboard now shows accurate storage stats and request latency! --- internal/metrics/dashboard.html | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'internal/metrics') diff --git a/internal/metrics/dashboard.html b/internal/metrics/dashboard.html index 363f1f7..63b42ed 100644 --- a/internal/metrics/dashboard.html +++ b/internal/metrics/dashboard.html @@ -295,6 +295,12 @@ document.getElementById('event_deletions').textContent = sumMetric(metrics, `${prefix}_relay_event_deletions_total`); + const durationSum = sumMetric(metrics, `${prefix}_relay_request_duration_seconds_sum`); + const durationCount = sumMetric(metrics, `${prefix}_relay_request_duration_seconds_count`); + const avgLatencyMs = durationCount > 0 ? (durationSum / durationCount * 1000) : 0; + document.getElementById('avg_latency').innerHTML = + `${avgLatencyMs.toFixed(1)}ms`; + const processStart = sumMetric(metrics, 'process_start_time_seconds'); if (processStart > 0) { if (!processStartTime) processStartTime = processStart; -- cgit v1.2.3