SkyWalking GraalVM Distro 0.5.0 is released. Go to downloads page to find release tars.
This release is built on the Apache SkyWalking v11.1.0 release tag.
Upstream Sync
- Sync SkyWalking submodule to the upstream v11.1.0 release tag (
d34eff29ba). - TAL (Trace Analysis Language) on the native image. Wire upstream’s new
trace-analyzermodule (on by default,SW_TRACE_ANALYZER=-removes it) and pre-compile its rules like LAL: the precompiler compilestal/otlp-general.yaml(otlp-general,otlp-slow-sql) and generates the 28otlp_*meter classes at build time; the replacementTalDSLloads the pre-compiled class and creates its metrics, and upstream’sSpanFilterListener, pairing and receiver path run unchanged. - TAL rules are user-editable, so the pre-compilation is generic: every
tal/*.yamlis compiled, whatever it declares (any metric function, labeled metrics with theirlabelLimit, percentilebuckets/ranks, inlinelayerDefinitionsused across files, alias or class-name input and output types), and files are installed in upstream’s order, which decides which rule runs first on a span. - Wire the two new analyzer modules:
ai-evaluation(SWIP-16 LLM-as-judge over sampled GenAI spans; disabled by default, configured through the newconfig/ai-evaluation.yml) andai-agent-conversation(AI agent conversations landed by the AI Sessionizer; on by default because the GraphQL query module requires it, turned off with itsnoneprovider). - Server clusters (apache/skywalking#14183).
server-clusters.yml, and its dynamic configuration itemcore.default.serverClusters, name a message broker, database or cache that clients reach at several addresses as one service. The native trace analysis renames such peers, and on the OTLP path the new TAL functionfindServerClusterName(address[, kind])does, which the shippedotlp-generalandotlp-slow-sqlrules call. - The shipped
otlp-generalrule counts a CONSUMERreceivespan that has a parent (the .NET Kafka instrumentation’s only record of a message) as the consumer’s request, readsmessaging.system.namebeforemessaging.system, readsaws_sqs/aws_snsasaws.sqs/aws.sns, and drops a CLIENTsettlespan as it drops a CLIENTreceive. - HTTP alarm hook delivery self-observability:
alarm_http_delivery_total,alarm_http_delivery_status_totalandalarm_http_delivery_latency_secondsontelemetry.prometheus, with three newotel-rules/oap.yamlrules. TraceQL accepts theAllwildcard onstatusandkind. - Adopt every rule file upstream added or changed, all enabled with the upstream defaults:
lal/ai-agent.yaml,meter-analyzer-config/gen-ai-model.yaml(judge scores),otel-rules/ai-agent/runtime-{instance,service}.yamlandmcp_endpoint.yaml,otel-rules/banyandb/banyandb-trace-sampling.yaml, OpenTelemetry-native host and process monitoring (otel-rules/process-hostmetrics-{linux,windows}.yaml, reworkedvm.yaml/windows.yaml), the Kafka, RabbitMQ, PostgreSQL, MySQL, Kong, APISIX, Zabbix and AI agent rule fixes, the AI-evaluation and alarm-delivery counters inotel-rules/oap.yaml, andoal/mesh.oal. - Mirror the new
application.ymloptions: native OTLP trace storage (otlpTraceStorage: otlpis the new default;zipkinkeeps the converted path), OTLP service grouping, searchable tags, head sampling and rate cap, the TraceQL/otlpdatasource, the Kubernetes metadata read settings, the alarm hooks’httpTimeout, theai-agent-conversationread windows andhide, BanyanDB credential / trust-CA hot reload (secretsManagementFile), therecordsAIAgentBanyanDB group, the Zipkin cold-stage query, and the ports opening once boot completes.
GraalVM Native Image Compatibility
- Embed every
query-protocol/*.graphqlsschema with one glob instead of a per-file list; upstream’s newgen-ai-evaluation-recordandai-agent-conversationschemas were missing and the native OAP died at boot. - The precompiler’s Armeria scan collects
@Decoratortargets (the AI agent conversation view’sCompressResponse): without the metadata the native OAP died at boot with “cannot inject the dependency”. - Register the admin-server family’s Jackson response POJOs for reflection:
/inspect/*answered HTTP 400 (No serializer found for class ...MetricsResponse) in the native image since 0.4.0. - Register the protobuf descriptor closure of the OTLP/HTTP JSON receivers’ requests and of
LogData: OTLP/HTTP JSON requests failed natively withGenerated message class ... missing method getResourceLogsList. The same forExportTraceServiceResponse(now JSON-printed by the OTLP/HTTP trace receiver) and Tempo’sTraceByIDResponse(the TraceQL/otlptrace-by-id route). - Register the
ConversationFileLAL output builder for reflection, and packageai-evaluation.ymlandserver-clusters.ymlin both distributions. - Register for reflection the TAL expression and meter classes, their configs, every input type, input provider and output builder the TAL rules resolve through, and
PairingFact(TAL pairing halves cross OAP nodes as stream data) andSpanMetadata; a native rule callingtoJson(meta)andtoJson(span)returns the same JSON as the JVM OAP. - Register the status module’s
Debugging*RspDTOs (trace, OTLP, Zipkin, log, MQE, topology):/debugging/*serializes them to YAML through Jackson, and none were covered since the 11.0.0 relocation. - Bundle
ios-analyzer: the distro never shipped it, so the iOS HTTP and MetricKit span listeners (SWIP-11) did not run and an iOS app’sservice_cpm, endpoint and instance traffic stayed empty. - Reflection metadata for three JSON paths: the admin
/status/cluster/nodesanswer (HTTP 500 without it), the/status/alarm/*answers ({}without them) and the AWS Firehose receiver’s request and answer (every post answered 400 without them). - Register the UI template REST bodies (
DashboardSetting,DashboardConfiguration,TemplateChangeStatus) for reflection: on 0.4.0POST/PUT /ui-management/templatesfailed natively.
Documentation
- Document the new
ai-evaluation,ai-agent-conversation,trace-analyzerandtraceQLmodules and TAL indistro-policy.md,configuration.mdandinternals/dsl-immigration.md(TAL rules are not live-debuggable because upstream emits no TAL probes), listserver-clusters.ymlamong theconfig/files, and refresh the build-time counts. - Correct the TLS docs:
supported-features.mdand the FAQ still called gRPC TLS unsupported, which 0.3.0 fixed. They now list what the native image serves: agent gRPC TLS, receiver gRPC TLS and mTLS, REST HTTPS, OAP-to-BanyanDB TLS.
All issues and pull requests are here