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]
