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

   ### Add `SERVICE_INSTANCE_RELATION` MAL scope, the BanyanDB pod-to-pod 
deployment topology, and category-separated self-observability rules
   
   - [x] If this is non-trivial feature, paste the links/URLs to the design 
doc. — SWIP-15 (`docs/en/swip/SWIP-15.md`), §7 intra-cluster instance topology.
   - [x] Update the documentation to include this new feature. — 
`docs/en/changes/changes.md`.
   - [x] Tests (including UT, IT, E2E) are added to verify the new feature. — 
MAL execution test (1350/0), boot-check (1/0), banyandb e2e (28/28, live 
cluster).
   - [ ] If it's UI related, attach the screenshots below. — UI consumes these 
via a paired `skywalking-horizon-ui` PR (panel selection by role/type); no UI 
change in this repo.
   
   #### What this adds
   
   **1. `SERVICE_INSTANCE_RELATION` MAL scope + deployment topology**
   - New `SERVICE_INSTANCE_RELATION` scope in the MAL engine and a 
`serviceInstanceRelation(...)` builder, so MAL rules can emit intra-cluster 
(same-service) instance topology. The meter `Analyzer` bridges these to the 
`ServiceInstanceRelation` server/client-side topology metrics, so 
`getServiceInstanceTopology` renders the edges.
   - `otel-rules/banyandb/banyandb-instance-relation.yaml`: the pod-to-pod flow 
graph (the Horizon UI "deployment" component) with per-edge, per-operation 
metrics — write distribution (liaison↔data via `publish_*` / `queue_sub_*`) and 
tier migration (lifecycle→data via `migration_*`), each carrying throughput / 
p99 latency / error rate / bytes rate. Mirrors BanyanDB's own FODC-proxy 
Grafana "Flows" panel.
   
   **2. Category-separated BanyanDB self-observability rules**
   - `banyandb-instance.yaml` → role-separated: a role prefix on the rule name 
(`node_*` shared resource/runtime, `liaison_*` front-door gRPC/publish, 
`data_*` storage/index/subscribe-queue/retention, `lifecycle_*` migration 
health).
   - `banyandb-endpoint.yaml` → data-type-separated (`measure_*` / `stream_*` / 
`stream_tst_*` / `trace_*` / `property_*`, with operation-keyed `queue_*` / 
`publish_bytes` staying type-agnostic). Adds the previously-unmodeled 
**property** data type (so `sw_property` groups stop rendering all-empty) and 
the trace storage inverted-index series (previously silently dropped).
   - A metric now reads only the families that genuinely exist for its 
category, instead of one unified rule that left empty panels. Scope and entity 
keys are unchanged.
   
   #### Follow-ups (tracked, out of scope here)
   - Horizon UI layer-template panel selection by role/type (the rules give 
clean metrics; the UI must pick the per-role/per-type panel set to hide 
empties).
   - Lifecycle last-migration timestamp/status as a relation metric (pending 
BanyanDB stamping per-destination labels on those gauges).
   
   - [ ] If this pull request closes/resolves/fixes an existing issue, replace 
the issue number. Closes #<issue number>.
   - [x] Update the [`CHANGES` 
log](https://github.com/apache/skywalking/blob/master/docs/en/changes/changes.md).
   
   🤖 Generated with [Claude Code](https://claude.com/claude-code)


-- 
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