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": [
