Skip to main content

Admin Dashboard — Observability

Status: populated Owner: Platform Engineering (Frontend) Last updated: 2026-04-18

1. Logging

Structured JSON via pino in the Next.js server runtime.

Log Format

{
"time": "2026-04-18T12:00:00.000Z",
"level": "info",
"service": "admin-dashboard",
"requestId": "req_01H...",
"adminUserId": "usr_01H...",
"method": "DELETE",
"path": "/api/operators/op_01H...",
"status": 204,
"durationMs": 87
}

Admin user ID is included in all log lines for audit traceability. JWTs, passwords, and SMPP credentials are never logged.

2. Metrics

GET /api/health for Kubernetes probes.

MetricTypeLabels
admin_request_totalCountermethod, path, status
admin_request_duration_msHistogrammethod, path
admin_poll_totalCountertarget, result
admin_upstream_error_totalCounterupstream, status
admin_auth_refresh_totalCounterresult

3. Error Tracking

Sentry with:

  • beforeSend hook strips Authorization headers, cookie values, SMPP passwords.
  • Admin user ID attached to Sentry scope for all events (non-PII for internal users).

4. Dashboard Polling Observability

The admin_poll_total counter tracks each 30-second poll cycle:

  • result=success: metrics data returned and rendered.
  • result=stale: upstream returned 304 or data unchanged.
  • result=error: upstream returned non-2xx; stale data left in place.

5. Alerting

AlertConditionSeverity
AdminDashboardHighErrorRateadmin_upstream_error_total{status=~"5.."} > 3/min for 3 minwarning
AdminDashboardPollFailureSpikeadmin_poll_total{result="error"} > 5 consecutivewarning
AdminDashboardAuthFailureadmin_auth_refresh_total{result="failure"} > 3/mincritical
AdminDashboardPodNotReadyReadiness probe failing > 2 mincritical

6. Distributed Tracing

OpenTelemetry traces emitted from server component fetch calls. X-Admin-User-Id propagated to Kong and upstream services for end-to-end trace correlation. Admin traces are stored with higher retention (30 days vs. 7 days for customer traces) for audit purposes.