Required OAP Modules
Horizon UI talks to OAP through two ports:
:12800— GraphQL query port (always required).:17128— admin REST port (required for Cluster Status, Inspect, DSL Management, Live Debugger).
The admin-port endpoints are gated by per-module selectors on the OAP side. Horizon detects which modules are on by parsing GET /debugging/config/dump and using a prefix match against the flat key map it returns.
Module table
| Module | OAP env-var | Min OAP | Endpoints Horizon hits | What breaks if disabled |
|---|---|---|---|---|
| admin-server | SW_ADMIN_SERVER=default |
11.x | GET /debugging/config/dump, /ui-management/templates* |
Everything on the admin port. With admin-server off, all other admin-port selectors report enabled: false regardless of their actual state. The template-sync admin pages fall back to bundled read-only. |
| receiver-runtime-rule | SW_RECEIVER_RUNTIME_RULE=default |
11.x | GET /runtime/rule/list, GET /runtime/rule, POST /runtime/rule/addOrUpdate, POST /runtime/rule/delete, GET /runtime/rule/bundled |
DSL Management page; alarm rule editor save/load; cluster-status rule matrix; Live Debugger rule picker; Inspect page source attribution. |
| dsl-debugging | SW_DSL_DEBUGGING=default |
11.x | GET /dsl-debugging/status, GET /status/alarm/* |
Live Debugger (MAL / LAL / OAL session start, poll, stop); cluster-status DSL health pane; alarm rule diagnostics. |
| inspect | SW_INSPECT=default |
11.x | GET /inspect/metrics, GET /inspect/entities |
Inspect page (returns 404 from OAP). |
All four are recommended on v11. admin-server is non-optional for the v11 admin surface; the rest can be left off if you do not need the corresponding feature, but the Cluster Status page will surface warnings.
The entire admin-port surface (all four modules) is OAP 11.x only. On OAP 10.x the data-plane stack — dashboards, traces, logs, topology, alarms, profiling — works fine; the admin-port features (DSL Management, Live Debugger, Alarm Rule editor, Cluster Status → Admin pane, Inspect, OAP UI-template sync) are unavailable and the corresponding sidebar entries are hidden. See OAP Version for the full feature-vs-version matrix.
How Horizon detects module state
Source: apps/bff/src/logic/preflight/preflight.ts.
-
BFF fires
GET <adminUrl>/debugging/config/dump(polled every 60 seconds from the UI). -
OAP returns a flat key/value map in
module.provider.propertyform, e.g.:admin-server.default.host=0.0.0.0 admin-server.default.port=17128 receiver-runtime-rule.default.notifyConfigChange=true inspect.default.cacheTimeoutInMinutes=10 -
For each required module, Horizon checks whether any key with that module’s prefix appears in the dump. A single match means the module is loaded.
-
The result is exposed via
GET /api/preflightto the UI, which renders:- Green badge — module is on.
- Yellow badge — module is off; corresponding pages are disabled with a hint mentioning the env-var.
- Red banner — admin-server itself is off / unreachable; every dependent module reports off.
Recommended OAP environment for Horizon
The minimum set:
SW_CORE_GRPC_SSL_ENABLED=false # if applicable to your deployment
SW_ADMIN_SERVER=default
SW_RECEIVER_RUNTIME_RULE=default
SW_DSL_DEBUGGING=default
SW_INSPECT=default
Without these four selectors active, Horizon falls back to a “query-only” mode: dashboards and triage screens work, but the entire Operate section of the sidebar (Cluster, Inspect, DSL Management, Live Debugger) is degraded.
What if the admin port is unreachable but selectors are on?
A common state in Kubernetes deployments: the OAP container has SW_INSPECT=default but the Service does not expose port 17128. Horizon cannot distinguish “module off” from “port not exposed” — both produce a failed GET /debugging/config/dump.
The Cluster Status → Admin pane shows this case as “admin host unreachable” with a hint:
Confirm the
admin-servermodule is on (SW_ADMIN_SERVER=default) and the admin port (default 17128) is exposed by your Kubernetes Service / firewall / load balancer.
See Cluster Status Check Sequence for the detailed per-pane behavior.