This is an automated email from the ASF dual-hosted git repository.

wu-sheng pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/skywalking-horizon-ui.git

commit 068821467830aea25be8c6cb8e63339bd0b90262
Author: Wu Sheng <[email protected]>
AuthorDate: Tue May 12 21:41:10 2026 +0800

    service dashboard: rename to APIs, MQ widgets gated by visibleWhen, 
instance TopLists row
    
    - 'Top 20 endpoints' renamed to 'Top 20 APIs' to match the layer's
      slot.endpoints = 'API' alias.
    - MQ Consuming Count + MQ Avg Consuming Latency line widgets added
      with visibleWhen='<metric> has value' — they render only when the
      selected service actually emits MQ metrics, matching the
      upstream general-service.json conditional logic.
    - New bottom row of three TopList widgets for the selected service's
      instances: Top 10 by load (top_n(service_instance_cpm,10,des)),
      Top 10 slowest (top_n(service_instance_resp_time,10,des)),
      Top 10 by success rate (top_n(service_instance_sla,10,asc)/100
      — worst-first). Each span 4, rowSpan 3.
    
    All four new widget MQE expressions match the upstream OAP template
    at oap-server/server-starter/src/main/resources/ui-initialized-
    templates/general/general-service.json.
    
    Follow-up noted: render top_n as line series (one line per ranked
    entity over time) — needs a 2-step MQE (top_n → per-entity
    time-series fetch). Will land in the next iteration.
---
 apps/bff/src/layers/config/general.json | 55 +++++++++++++++++++++++++++++++--
 1 file changed, 53 insertions(+), 2 deletions(-)

diff --git a/apps/bff/src/layers/config/general.json 
b/apps/bff/src/layers/config/general.json
index cec10ba..6428cd1 100644
--- a/apps/bff/src/layers/config/general.json
+++ b/apps/bff/src/layers/config/general.json
@@ -33,8 +33,8 @@
   "dashboards": {
     "service": [
       {
-        "id": "top_endpoints",
-        "title": "Top 20 endpoints by traffic",
+        "id": "top_apis",
+        "title": "Top 20 APIs by traffic",
         "tip": "top_n(endpoint_cpm,20,des) — scoped to the whole layer (not 
the selected service).",
         "type": "top",
         "unit": "rpm",
@@ -99,6 +99,57 @@
         "expressions": ["100 - service_sla/100"],
         "span": 3,
         "rowSpan": 2
+      },
+      {
+        "id": "mq_consume_count",
+        "title": "MQ Consuming Count",
+        "tip": "service_mq_consume_count — only shown when the service emits 
MQ metrics.",
+        "type": "line",
+        "expressions": ["service_mq_consume_count"],
+        "visibleWhen": "service_mq_consume_count has value",
+        "span": 6,
+        "rowSpan": 2
+      },
+      {
+        "id": "mq_consume_latency",
+        "title": "MQ Avg Consuming Latency",
+        "tip": "service_mq_consume_latency — only shown when the service emits 
MQ metrics.",
+        "type": "line",
+        "unit": "ms",
+        "expressions": ["service_mq_consume_latency"],
+        "visibleWhen": "service_mq_consume_latency has value",
+        "span": 6,
+        "rowSpan": 2
+      },
+      {
+        "id": "top_instance_load",
+        "title": "Top 10 instances by load",
+        "tip": "top_n(service_instance_cpm,10,des) — for the selected 
service.",
+        "type": "top",
+        "unit": "rpm",
+        "expressions": ["top_n(service_instance_cpm,10,des)"],
+        "span": 4,
+        "rowSpan": 3
+      },
+      {
+        "id": "top_instance_slow",
+        "title": "Top 10 slowest instances",
+        "tip": "top_n(service_instance_resp_time,10,des) — for the selected 
service.",
+        "type": "top",
+        "unit": "ms",
+        "expressions": ["top_n(service_instance_resp_time,10,des)"],
+        "span": 4,
+        "rowSpan": 3
+      },
+      {
+        "id": "top_instance_sla",
+        "title": "Top 10 instances by success rate",
+        "tip": "top_n(service_instance_sla,10,asc)/100 — worst-first ranking.",
+        "type": "top",
+        "unit": "%",
+        "expressions": ["top_n(service_instance_sla,10,asc)/100"],
+        "span": 4,
+        "rowSpan": 3
       }
     ],
     "instance": [

Reply via email to