Supported Features

This distro packages the Apache SkyWalking OAP server as a GraalVM native image with a fixed module set. All modules and providers are selected at build time — there is no runtime SPI discovery or dynamic module loading.

What’s Included

Storage

Provider Status
BanyanDB Included (default)
Elasticsearch Not included
H2 / MySQL / PostgreSQL / OpenSearch Not included

Cluster

Provider Status
Standalone Included (default)
Kubernetes Included
ZooKeeper / Consul / Etcd / Nacos Not included

Configuration

Provider Status
none Included
k8s-configmap Included (default)
Apollo / Consul / Etcd / Nacos / ZooKeeper / gRPC Not included

Data Receivers

All receivers are included:

Receiver Protocol Notes
Trace (SkyWalking) gRPC Java, .NET, Go, Python, Node.js, PHP, Rust, Ruby agents
JVM Metrics gRPC Java agent JVM metrics
CLR Metrics gRPC .NET CLR metrics
Meter (SkyWalking) gRPC Custom meter protocol
Log gRPC / HTTP SkyWalking log protocol
Browser gRPC Browser JS agent
Event gRPC K8s events, custom events
Profile gRPC On-demand profiling
Async Profiler gRPC Java async-profiler
pprof gRPC Go pprof profiling
OpenTelemetry gRPC / HTTP (OTLP) Traces, metrics and logs. Traces are analyzed by TAL and stored natively (otlp_span, queried through TraceQL /otlp), or converted to Zipkin with SW_OTEL_TRACE_STORAGE=zipkin
Envoy / Istio ALS gRPC Access log service (HTTP and TCP entries), metrics
Zipkin HTTP Zipkin v2 spans (disabled by default)
Zabbix TCP Zabbix agent protocol (disabled by default)
Telegraf gRPC Telegraf metrics
AWS Firehose HTTP CloudWatch metrics via Firehose
Kafka Fetcher Kafka Traces, metrics, logs from Kafka (disabled by default)
Cilium Fetcher gRPC Hubble flow data (disabled by default)
eBPF gRPC eBPF profiling data (Rover)

Query APIs

API Port Notes
GraphQL 12800 Primary query API for SkyWalking UI
PromQL 9090 Prometheus-compatible query
LogQL 3100 Loki-compatible log query
Zipkin 9412 Zipkin v2 query API (disabled by default)
TraceQL 3200 Tempo-compatible trace query for Grafana; /otlp (native OTLP spans), /zipkin and /skywalking datasources (disabled by default)
Status 17128 Cluster / alarm / TTL status + /debugging/* debug-query trace, on the admin-server host (relocated from the query plugin in 11.0.0)
Inspect 17128 SWIP-14 metric catalog + entity enumeration (/inspect/*), on the admin-server host
UI Management 17128 Dashboard-template REST (/ui-management/*) consumed by the Horizon UI, on the admin-server host

Analyzers

Analyzer Included
Agent Analyzer (SkyWalking agent traces and meters, MAL) Yes
Log Analyzer (LAL) Yes
Trace Analyzer (TAL: OTLP spans into services, topology, metrics and slow statements) Yes — rules compiled at build time, see Configuration
iOS / iPadOS span analysis (OpenTelemetry Swift SDK) Yes
GenAI Analyzer (virtual GenAI services from LLM-call spans) Yes
AI Evaluation (SWIP-16 LLM-as-judge) Yes (disabled by default)
AI Agent Conversations (AI Sessionizer files) Yes
Event Analyzer Yes

Other Modules

Module Status
Alarm Included (webhook, gRPC hooks)
Telemetry Prometheus (self-monitoring metrics on port 1234)
Exporter Included (disabled by default)
Health Checker Included
AI Pipeline Included (baseline prediction)
DSL live debugger (SWIP-13) Included — sampling sessions over the bundled MAL/LAL/OAL rules, probes compiled in at build time

TLS

The same settings as upstream. gRPC TLS runs on the JDK TLS provider instead of OpenSSL (netty_tcnative): the distro replaces DynamicSslContext with a SslProvider.JDK copy.

Endpoint Settings Status
Agent gRPC (11800) SW_CORE_GRPC_SSL_* TLS (ssl e2e). As upstream, no client certificate is asked for: SW_CORE_GRPC_SSL_TRUSTED_CA_PATH is the CA OAP nodes trust when they call each other
Receiver gRPC (SW_RECEIVER_GRPC_PORT) SW_RECEIVER_GRPC_SSL_* TLS; mTLS with SW_RECEIVER_GRPC_SSL_TRUSTED_CAS_PATH (mtls e2e)
REST servers SW_*_REST_SSL_* HTTPS
OAP → BanyanDB SW_STORAGE_BANYANDB_SSL_TRUST_CA_PATH TLS, CA reloaded on rotation (banyandb-ca-rotation e2e)

Optional Modules

These modules are disabled by default. Enable them with environment variables:

Module Enable With
Zipkin Receiver SW_RECEIVER_ZIPKIN=default
Zipkin Query SW_QUERY_ZIPKIN=default
Zabbix Receiver SW_RECEIVER_ZABBIX=default
Kafka Fetcher SW_KAFKA_FETCHER=default
Cilium Fetcher SW_CILIUM_FETCHER=default
Exporter SW_EXPORTER=default
TraceQL SW_TRACEQL=default (plus SW_TRACEQL_ENABLE_DATASOURCE_OTLP=true etc. per datasource)
AI Evaluation SW_AI_EVALUATION=default

The Trace Analyzer (TAL) is on by default; SW_TRACE_ANALYZER=- removes it, and OTLP spans are then stored without analysis.

Known Limitations

DSL Rules Are Read-Only (Live Debugger Yes, Hot-Update No)

All MAL / LAL / OAL / TAL rules are pre-compiled at build time. The precompiler compiles the SWIP-13 debug probes into every MAL / LAL / OAL rule class (the same codegen switch the upstream OAP flips at boot), so the live debugger works on the bundled rules; only runtime-rule hot-update, which generates bytecode at runtime, is unavailable. TAL rules have no debug probes upstream either, and upstream has no runtime-rule catalog for them; to change them, edit the files under tal/ and rebuild (see Configuration):

Admin API Status
/dsl-debugging/* (SWIP-13 live debugger: sessions over MAL, LAL and OAL rules) Supported on the bundled rules
GET /runtime/oal/files, /runtime/oal/files/{name}, /runtime/oal/rules[/{source}] Supported (upstream handler)
GET /runtime/rule/list, /runtime/rule/bundled, GET /runtime/rule (YAML + X-Sw-* headers) Supported: every shipped rule, always BUNDLED
POST /runtime/rule/addOrUpdate, /inactivate, /delete, GET /runtime/rule/dump, /runtime/mal/*, /runtime/lal/* HTTP 501 (runtime-rule hot-update)

The Horizon UI’s DSL catalog, editor, OAL and live-debug pages therefore work against this distro; saving or deleting a rule is refused with a structured 501. SW_DSL_DEBUGGING_INJECTION_ENABLED only gates the debug API here — the probes are always compiled in. Use the upstream JVM OAP distribution if you need hot-update.

Differences from Upstream SkyWalking

Aspect Upstream This Distro
Runtime JVM (JDK 11+) GraalVM native image
Startup Compiles DSL rules at boot (~30s) Pre-compiled at build time (instant)
Binary ~200MB+ of JARs + JVM ~203MB self-contained binary
Storage ES, BanyanDB, H2, MySQL, PG, … BanyanDB only
Cluster ZK, K8s, Consul, Etcd, Nacos Standalone, K8s
Config All dynamic config providers K8s ConfigMap or none
Module loading SPI discovery at runtime Fixed at build time
DSL rules Hot-update + live debugger Live debugger on bundled rules; read-only catalogs; no hot-update
TLS/SSL gRPC TLS on OpenSSL (netty_tcnative) Same settings; gRPC TLS on the JDK TLS provider

Compatibility

  • SkyWalking agents: All official SkyWalking agents are compatible (Java, .NET, Go, Python, Node.js, PHP, Rust, Ruby, C++, Satellite)
  • SkyWalking UI: Fully compatible — use the Horizon UI, the official UI since SkyWalking 11.0.0
  • OpenTelemetry: OTLP traces, metrics and logs via gRPC and HTTP; traces analyzed by TAL
  • Grafana: TraceQL (Tempo) datasource when traceQL is enabled
  • Zipkin: Zipkin v2 API (receiver + query) when enabled
  • Prometheus: PromQL query API for Grafana integration
  • BanyanDB: Requires BanyanDB as the storage backend

Architecture

                    ┌──────────────────────────────────┐
                    │   SkyWalking GraalVM Native OAP  │
Agents ──gRPC──────►│                                  │
OTLP ──gRPC/HTTP───►│  Receivers → Analyzers → Storage │──► BanyanDB
Zipkin ──HTTP──────►│                                  │
                    │  Query APIs (GraphQL/PromQL/...)  │◄── SkyWalking UI
                    │  Alarm → Webhooks                │
                    └──────────────────────────────────┘