This is an automated email from the ASF dual-hosted git repository. wu-sheng pushed a commit to branch blog/horizon-ui-inspect in repository https://gitbox.apache.org/repos/asf/skywalking-website.git
commit 8ca8aea9fd9a080ab6e19a414752132c1b454d4a Author: Wu Sheng <[email protected]> AuthorDate: Mon Jun 29 20:30:31 2026 +0800 Blog: Meet Horizon UI 12/17 — Inspect: Cross-Layer Query Power-Tools Part 12 of the Meet Horizon UI series, continuing Act 3 (operate). The Inspect family under Operate: Metrics inspect (a catalog of every metric OAP computes, grouped by the OAL/MAL rule that defines it, plus an MQE board), and the layer-less Trace inspect and Log inspect that query across the whole deployment without picking a layer first (Log inspect folds raw service logs, browser errors, and K8s pod logs into one tool). All share inspect:read; Metrics inspect needs OAP 11's admin host + inspect module, while Trace/Log inspect ride the always-on query protocol (10.x ok). 4 figures (WebP): metrics catalog, metrics board, trace inspect, log sources. --- .../index.md | 51 +++++++++++++++++++++ .../p12-inspect-01-metrics-catalog.webp | Bin 0 -> 183224 bytes .../p12-inspect-02-metrics-board.webp | Bin 0 -> 108606 bytes .../horizon-0.7.0/p12-inspect-03-trace.webp | Bin 0 -> 145164 bytes .../horizon-0.7.0/p12-inspect-04-log-sources.webp | Bin 0 -> 194016 bytes 5 files changed, 51 insertions(+) diff --git a/content/blog/2026-06-29-horizon-ui-inspect-cross-layer-query/index.md b/content/blog/2026-06-29-horizon-ui-inspect-cross-layer-query/index.md new file mode 100644 index 00000000000..e46461ca9eb --- /dev/null +++ b/content/blog/2026-06-29-horizon-ui-inspect-cross-layer-query/index.md @@ -0,0 +1,51 @@ +--- +title: "Meet Horizon UI · 12/17: Inspect — Cross-Layer Query Power-Tools" +date: 2026-06-29 +author: Sheng Wu +description: "Part 12 of the Meet Horizon UI series: the Inspect family under Operate — a metric catalog and MQE board that shows which rule defines every metric, plus layer-less trace and log finders that query across the whole deployment without picking a layer first." +tags: + - Engineering + - Metrics +--- + +This is the twelfth post in the [Meet Horizon UI](/blog/2026-06-21-skywalking-horizon-ui-introduction/) series, still in **Act 3 — operate it**. The [Trace Explorer](/blog/2026-06-22-horizon-ui-trace-explorer/) and [Log Explorer](/blog/2026-06-23-horizon-ui-log-explorer/) both start the same way: you pick a layer, then a service, *then* you search. That's the right shape when you're already looking at a service. But sometimes you aren't — you have a trace id and no idea which layer owns [...] + +## Metrics inspect: the metric catalog, and the rule behind every number + +SkyWalking computes a *lot* of metrics, and until now there was no way to simply *see them all*. **Metrics inspect** is that view. Its catalog drawer lists every metric the connected OAP computes — and groups them by the **rule that defines them**: the OAL files and MAL rule sets you met in the [previous post](/blog/2026-06-29-horizon-ui-runtime-rules-and-live-debugging/). Filter by source (OAL, MAL·OTel, MAL·Telegraf, LAL→MAL), search by name, and read each metric's value type and scope [...] + + +Figure 1: Metrics inspect's catalog — every metric the OAP computes, grouped by the rule that defines it (the OAL files and MAL rule sets from DSL management), filterable by source and scope. Pick metrics onto the board.</br> + +Pick metrics from the catalog and they land on a **board** of charts, where you choose the entities to plot — a paginated top-N from OAP, or hand-entered ones — and read the values back as a line, bar, or area chart. Each widget carries its rule source and scope so you never lose the thread from "this number" to "the rule that produces it." It's an MQE scratchpad: the time range is browser-local but sent to OAP in server time, the board persists in your browser, and metrics that live onl [...] + + +Figure 2: The board — chart any metric across entities; each widget keeps its rule source (OAL) and scope (Service), a per-widget entity paginator, and a browser-local range sent to OAP in server time.</br> + +## Trace inspect: find a trace without picking a layer + +**Trace inspect** is the [Trace Explorer](/blog/2026-06-22-horizon-ui-trace-explorer/) with the layer taken off. The **Target** is optional: pick a service through the layer → service → instance → endpoint cascade, *type* a name (with a real / conjectured flag), or **leave it blank to query every service at once**. Set the usual conditions — trace id, status, order, duration bounds, tags, window — and **Run query**. A resolved-query line spells out the exact call sent to OAP, and the res [...] + + +Figure 3: Trace inspect — layer-less: leave Target blank to query every service (or pick/type one), then Run query. Here one trace crosses five services (`agent::ui` → `frontend` → `app` → `gateway` → `songs`); the resolved-query line shows the exact OAP call (`native · queryTraces`).</br> + +## Log inspect: one query, three log sources + +**Log inspect** does the same for logs — *"query any service across layers, pick it, type its name, or leave it blank"* — and folds three different log worlds into one place via a **Source** switch: + +- **Raw** — the stored service logs, streamed across services with tag and trace-id conditions, each row opening the same payload popout as the per-layer [Log Explorer](/blog/2026-06-23-horizon-ui-log-explorer/); +- **Browser** — the BROWSER layer's JS errors by category, with the same source-map de-obfuscation from the Browser Errors post; +- **Kubernetes Pod logs** — an on-demand live tail of a pod's container logs, with Start / Pause and Include/Exclude regex filters, never persisted. + + +Figure 4: Log inspect — "query any service across layers, or leave it blank," across three sources (Raw stored logs, Browser JS errors, Kubernetes Pod logs). Here raw logs stream from several services at once.</br> + +## Where it runs + +All three live under **Operate** and share one permission, `inspect:read`. They split on the backend, though. **Trace inspect** and **Log inspect** ride OAP's standard query protocol — the same one the dashboards and per-layer explorers use — so they're always on and work on any OAP, including 10.x. **Metrics inspect** is the exception: it reads OAP's metric catalog and entity enumerator through the **admin host**'s `inspect` module, so it needs OAP 11; when that module is absent it show [...] + +## Where to go next + +For the field reference — the metric catalog, entity enumeration, foreign metrics, and MQE execution — see the [Inspect docs](https://skywalking.apache.org/docs/skywalking-horizon-ui/next/operate/inspect/). + +Next up: **Platform & Cluster Introspection** — Cluster Status, OAP configuration, and data-retention, the last stop in Act 3 before we turn to governing and securing the console. diff --git a/static/screenshots/horizon-0.7.0/p12-inspect-01-metrics-catalog.webp b/static/screenshots/horizon-0.7.0/p12-inspect-01-metrics-catalog.webp new file mode 100644 index 00000000000..79ef5679828 Binary files /dev/null and b/static/screenshots/horizon-0.7.0/p12-inspect-01-metrics-catalog.webp differ diff --git a/static/screenshots/horizon-0.7.0/p12-inspect-02-metrics-board.webp b/static/screenshots/horizon-0.7.0/p12-inspect-02-metrics-board.webp new file mode 100644 index 00000000000..a73ce41bd16 Binary files /dev/null and b/static/screenshots/horizon-0.7.0/p12-inspect-02-metrics-board.webp differ diff --git a/static/screenshots/horizon-0.7.0/p12-inspect-03-trace.webp b/static/screenshots/horizon-0.7.0/p12-inspect-03-trace.webp new file mode 100644 index 00000000000..27ea82c1795 Binary files /dev/null and b/static/screenshots/horizon-0.7.0/p12-inspect-03-trace.webp differ diff --git a/static/screenshots/horizon-0.7.0/p12-inspect-04-log-sources.webp b/static/screenshots/horizon-0.7.0/p12-inspect-04-log-sources.webp new file mode 100644 index 00000000000..26a09d5ec54 Binary files /dev/null and b/static/screenshots/horizon-0.7.0/p12-inspect-04-log-sources.webp differ
