From 84dc5995f28e6d63d3cbb1af44daba7f10cbca66 Mon Sep 17 00:00:00 2001 From: bndw Date: Sun, 15 Feb 2026 10:39:05 -0800 Subject: feat: separate Auth Writes and Auth Reads on dashboard - Added getMetricByLabels() helper for multi-label metric queries - Split 'Authorized' metric into: - Auth Writes: requests_total{method=EVENT, status=authorized} - Auth Reads: requests_total{method=REQ, status=authorized} - Provides clearer visibility into authenticated read vs write operations --- internal/metrics/dashboard.html | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) (limited to 'internal/metrics/dashboard.html') diff --git a/internal/metrics/dashboard.html b/internal/metrics/dashboard.html index b7be1d7..5324c1e 100644 --- a/internal/metrics/dashboard.html +++ b/internal/metrics/dashboard.html @@ -172,8 +172,12 @@ 0
- Authorized - 0 + Auth Writes + 0 +
+
+ Auth Reads + 0
Unauthorized @@ -263,6 +267,17 @@ return metric ? metric.value : 0; } + function getMetricByLabels(metrics, name, labels) { + if (!metrics[name]) return 0; + const metric = metrics[name].find(m => { + for (const [key, value] of Object.entries(labels)) { + if (m.labels[key] !== value) return false; + } + return true; + }); + return metric ? metric.value : 0; + } + function formatUptime(ms) { const seconds = Math.floor(ms / 1000); const minutes = Math.floor(seconds / 60); @@ -313,8 +328,11 @@ document.getElementById('auth_success').textContent = getMetricByLabel(metrics, `${prefix}_relay_auth_attempts_total`, 'result', 'success'); - document.getElementById('auth_authorized').textContent = - getMetricByLabel(metrics, `${prefix}_relay_requests_total`, 'status', 'authorized'); + document.getElementById('auth_writes').textContent = + getMetricByLabels(metrics, `${prefix}_relay_requests_total`, {method: 'EVENT', status: 'authorized'}); + + document.getElementById('auth_reads').textContent = + getMetricByLabels(metrics, `${prefix}_relay_requests_total`, {method: 'REQ', status: 'authorized'}); document.getElementById('auth_unauthorized').textContent = getMetricByLabel(metrics, `${prefix}_relay_requests_total`, 'status', 'unauthorized'); -- cgit v1.2.3