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]