wu-sheng opened a new pull request, #98:
URL: https://github.com/apache/skywalking-horizon-ui/pull/98

   ## Why
   
   Overview KPI tiles (e.g. *General services · RPM / Latency / SLA*) were 
aggregating over only a **single** service instead of the whole layer — a 
hardcoded `topN:1` — so a busy layer read far too low. Surfaced in 
apache/skywalking#13934 ("service metrics specific to a particular service 
rather than the entire system").
   
   ## What
   
   **Overview KPI aggregation (the fix)**
   - Multi-service tiles (General / Mesh / Virtual Database / Cache / MQ / 
GenAI) now roll up the **entire layer server-side** via 
`sum/avg(top_n(<metric>,{{topn}},DES[,attr0='<layer>']))` — throughput summed, 
latency/SLA averaged — in **one query per tile** instead of the old per-service 
fan-out (≈N× fewer OAP evals on a refreshing landing page).
   - The K8s-cluster and Istio-pilot **composites stay page-side** (their 
`latest()` snapshots and the label-split `xds_pushes` metric can't be 
`top_n`-rolled) behind an explicit `aggregateOnPage` widget flag, editable in 
the Overview-templates admin.
   - New `HORIZON_QUERY_OVERVIEW_TOPN` knob (default 100) bounds the `top_n` 
window.
   - Mesh's second tile is now **Latency** (avg response time) in place of the 
old P95.
   
   **Cleanup (no behavior change)**
   - Retires the dead legacy per-layer-overview machinery 
(`LayerOverviewConfig` / `headerColumns` / `overviewGroups` / 
`overviewMetrics`) — the standalone Overview dashboards replaced it.
   - Removes verified-dead template config (`serviceCountTile`, the 
`LayerDef.header` twin, `LogConfig.defaultTags`, `LandingConfig.style`, 
`LandingColumn.tip`, `OverviewWidgetResult`, the BFF `LayerMetricsConfig` 
alias) + dead loader migrations. The tested `widgets` fallback and live 
component normalizers are kept.
   - **No layer-template or OAP wire-contract change.** Only the two Overview 
dashboard templates (`services.json`, `mesh.json`) + their i18n overlays 
changed.
   
   ## Rollout — Overview templates need an OAP re-sync
   
   Overviews are served **remote-only** from OAP (the disk bundle is a seed, 
not a render-time source). So the updated Overview templates take effect:
   - **Fresh install** → automatically, via the boot seed.
   - **Existing deployment** (already has Overview templates stored in OAP) → 
**only after an admin re-syncs** the bundled Overview templates into OAP 
(Overview-templates admin → reset to bundled → push). Until then the old 
single-service tiles keep rendering.
   
   ## Validation
   
   - type-check · build (UI + BFF) · lint · **356 unit tests** · license · 
`i18n:validate` — all green.
   - **Live OAP** (public demo): every converted tile MQE validated (General / 
Mesh / Virtual layers return correct layer-wide aggregates); both landing paths 
(fire-once `selfAggregate` + page-side fan-out) confirmed; menu route + 
per-layer KPI strip render unchanged after the cleanup.
   - Full-browser round-trip on an **existing** deployment requires the OAP 
template re-sync noted above (remote-only runtime).


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to