PR4: Query gateway core and dashboard shell
Introduces the tenant-scoped read path the dashboard queries, plus the Angular shell that hosts the per-signal panels. This PR warrants the closest review: it enforces tenancy and rate limiting and is the first user-visible surface.
Backend
BackendClient: HTTP client to the telemetry backends.
ScopeResolver: derives the caller's tenant scope and constrains every query to it.
RateLimiter, AuditLogger, GatewayContext: per-request rate limiting, audit logging, and shared request context.
dtos.scala: typed request objects with validators (time window, page size, free text, service name).
ObservabilityResources with the /observability/health endpoint, registered in TexeraWebApplication.
RequestContextMdcFilter and UserContextMdcFilter: inject request and user context into the logging MDC.
ObservabilityGatewayConfig and its configuration file.
Frontend
- Observability dashboard page, route, and navigation entry.
observability.service, observability.types, and the traces-pivot.service consumed by the traces panel.
- Health gating: each tab is guarded by the per-signal reachability check; an unreachable signal renders an explicit state rather than a broken panel. Signal panels follow in PR5 through PR8.
Notes
Demoable on merge (health endpoint and shell), with the feature still default-off.
Part of #4070. Stacked on PR3 (#5369).
Branch: obs/pr4/gateway-core.
PR4: Query gateway core and dashboard shell
Introduces the tenant-scoped read path the dashboard queries, plus the Angular shell that hosts the per-signal panels. This PR warrants the closest review: it enforces tenancy and rate limiting and is the first user-visible surface.
Backend
BackendClient: HTTP client to the telemetry backends.ScopeResolver: derives the caller's tenant scope and constrains every query to it.RateLimiter,AuditLogger,GatewayContext: per-request rate limiting, audit logging, and shared request context.dtos.scala: typed request objects with validators (time window, page size, free text, service name).ObservabilityResourceswith the/observability/healthendpoint, registered inTexeraWebApplication.RequestContextMdcFilterandUserContextMdcFilter: inject request and user context into the logging MDC.ObservabilityGatewayConfigand its configuration file.Frontend
observability.service,observability.types, and thetraces-pivot.serviceconsumed by the traces panel.Notes
Demoable on merge (health endpoint and shell), with the feature still default-off.
Part of #4070. Stacked on PR3 (#5369).
Branch:
obs/pr4/gateway-core.