# Console telemetry Purpose - Capture console performance, security signals, and offline behavior. Metrics - ui_route_render_seconds{route,tenant,device} - ui_request_duration_seconds{service,method,status,tenant} - ui_filter_apply_total{route,filter,tenant} - ui_tenant_switch_total{fromTenant,toTenant,trigger} - ui_offline_banner_seconds{reason,tenant} - ui_dpop_failure_total{endpoint,reason} - ui_fresh_auth_prompt_total{action,tenant} - ui_fresh_auth_failure_total{action,reason} - ui_download_manifest_refresh_seconds{tenant,channel} - ui_download_export_queue_depth{tenant,artifactType} - ui_download_command_copied_total{tenant,artifactType} - ui_telemetry_batch_failures_total{transport,reason} - ui_telemetry_queue_depth{priority,tenant} Logs - Categories: ui.action, ui.tenant.switch, ui.download.commandCopied, ui.security.anomaly, ui.telemetry.failure. - Core fields: timestamp, level, action, route, tenant, subject, correlationId, offlineMode. - PII is scrubbed; user identifiers are hashed. Traces - ui.route.transition, ui.api.fetch, ui.sse.stream, ui.telemetry.batch, ui.policy.action. - W3C traceparent propagated through the gateway for cross-service stitching. Feature flags and config - CONSOLE_METRICS_ENABLED, CONSOLE_METRICS_VERBOSE, CONSOLE_LOG_LEVEL. - OTEL_EXPORTER_OTLP_ENDPOINT and OTEL_EXPORTER_OTLP_HEADERS. - CONSOLE_TELEMETRY_SSE_ENABLED to expose /console/telemetry. Offline workflow - Metrics scraped locally and stored with offline bundles. - OTLP batches queue locally and expose ui_telemetry_queue_depth. - Retain telemetry bundles for audit; export Grafana JSON with bundles. Alerting hints - ConsoleLatencyHigh when ui_route_render_seconds p95 exceeds target. - BackendLatencyHigh when ui_request_duration_seconds spikes. - TenantSwitchFailures when ui_dpop_failure_total increases. - DownloadsBacklog when ui_download_export_queue_depth grows. - TelemetryExportErrors when ui_telemetry_batch_failures_total > 0.