apache/skywalking
75.0
Strong · 24 September 2026
248.2k
lines of production code
Java
primary language
4
measurements over time
What this system is
This system is the Apache SkyWalking Observability Analysis Platform (OAP) server, a backend service that ingests, analyzes, and stores distributed telemetry data including traces, metrics, logs, and events. It provides comprehensive observability capabilities by supporting diverse data sources such as OpenTelemetry, Zipkin, and iOS telemetry, while offering advanced analysis features like AI-driven anomaly detection, GenAI evaluation, and continuous profiling via eBPF and async-profiler. The platform enables dynamic rule management for log and metric analysis, cluster coordination through various backends, and flexible data export to systems like Kafka and gRPC endpoints.
How it got here
2015–2019 — OAP server modularization and v11 architecture
99 changes.
This period focused on the foundational restructuring of the SkyWalking OAP server into a modular, plugin-based architecture, introducing a new core framework for component lifecycle management. It established the v11 infrastructure with native support for OTLP, Envoy v3, and multiple cluster coordination backends, while refactoring the storage, alarm, and metrics processing pipelines for improved performance and extensibility.
2020–2021 — OAP server observability expansion
79 changes.
This period focused on significantly expanding the OAP server's data ingestion and analysis capabilities by introducing new receivers for browser telemetry, events, Zabbix metrics, and native OTLP traces. The core metrics engine was enhanced with histogram, percentile, and latest-value aggregations, while the storage layer adopted a new buffered concurrency model and unified endpoint/instance traffic models. Additionally, the infrastructure was modernized with a new OAL V2 engine, dynamic configuration support via Kubernetes ConfigMaps, and a rewritten Elasticsearch client.
2022–2026 — eBPF profiling and DSL v2 migration
97 changes.
This period focused on integrating eBPF-based continuous profiling and expanding agentless telemetry ingestion through new receiver plugins. It also involved a major architectural shift by migrating the Log and Metric Analysis Languages to a high-performance ANTLR4 and Javassist compilation engine, enabling runtime rule hot-updates and live debugging capabilities.
Features
Add AWS Firehose receiver for OpenTelemetry metrics
Introduces a new \aws-firehose-receiver\ module that allows SkyWalking to ingest metrics from AWS Kinesis Firehose in OpenTelemetry format. The receiver exposes an HTTP POST endpoint at \/aws/firehose/metrics\ that accepts JSON payloads containing base64-encoded, delimited OpenTelemetry protocol buffers. It validates an optional \X-Amz-Firehose-Access-Key\ header for authentication and converts the incoming Firehose-specific OTLP metric structures into the standard OTLP v1 format for processing by the existing metric pipeline.
oap-server/server-receiver-plugin/aws-firehose-receiver · high confidence
Add Apollo dynamic configuration support
The OAP server now supports Apollo as a dynamic configuration center. This change introduces the Apollo configuration module, allowing users to configure the Apollo connection details (such as meta address, app ID, cluster, and environment) via the \ApolloConfigurationCenterSettings\. The implementation includes a watcher register that listens for changes in both single keys and grouped namespaces, enabling real-time configuration updates without restarting the server.
oap-server/server-configuration/configuration-apollo/src/main · high confidence
Add Async Profiler receiver plugin for JFR data ingestion
The OA server now includes a new \receiver-async-profiler\ plugin that enables the ingestion of Java Flight Recorder (JFR) profiling data collected by Async Profiler. This feature introduces a gRPC service handler that accepts profiling streams and supports two collection modes: in-memory parsing via \AsyncProfilerByteBufCollectionObserver\ (default) and file-based parsing via \AsyncProfilerFileCollectionObserver\, configurable through the \memoryParserEnabled\ setting. The plugin parses incoming JFR files, extracts frame trees, and forwards the resulting \JFRProfilingData\ to the core source receiver for storage and analysis.
oap-server/server-receiver-plugin/skywalking-async-profiler-receiver-plugin · high confidence
Add CLR receiver plugin for .NET runtime metrics
The OAP server now includes a new CLR receiver plugin that enables ingestion of .NET Common Language Runtime metrics. This plugin registers a gRPC handler to receive CLR metric collections from agents and dispatches them into three specific metric types: CPU usage, Garbage Collection statistics (Gen0/1/2 collection counts and heap memory), and Thread pool availability (worker and completion port threads). It also loads a dedicated OAL script to define the corresponding metrics and indicators for analysis.
oap-server/server-receiver-plugin/skywalking-clr-receiver-plugin · high confidence
Add Configuration Discovery receiver plugin for agent dynamic settings
The OAP server now includes a new \configuration-discovery\ receiver plugin that allows agents to query and receive dynamic configuration updates (such as trace sampling rates and ignored paths) via gRPC. This plugin introduces a new module that registers a gRPC handler to serve configuration requests, a watcher to manage configuration changes from the dynamic configuration service, and a YAML-based reader to parse agent-specific settings. Administrators can control whether the server uses SHA512 message digests to detect configuration changes or always returns the latest configuration via the \disableMessageDigest\ setting.
oap-server/server-receiver-plugin/configuration-discovery-receiver-plugin · high confidence
Add Consul as a dynamic configuration center
Users can now configure SkyWalking to retrieve dynamic configurations from HashiCorp Consul. This change introduces the Consul configuration module, allowing administrators to specify the Consul host, port, and ACL token in the settings. The implementation supports both single-node and multi-node Consul clusters, enables watching for configuration changes via key-value listeners, and includes support for grouped configuration keys.
oap-server/server-configuration/configuration-consul/src/main · high confidence
Add Envoy v3 and OpenTelemetry protocol definitions for receiver support
The receiver-proto module now includes the protobuf definitions for Envoy AccessLogService and MetricsService v3 APIs, alongside the OpenTelemetry Collector v1 services for traces, metrics, and logs. This addition enables the server to natively receive and process telemetry data using these standardized protocols. Additionally, a Java utility class (OTLPValues) is introduced to standardize how OTLP attribute values are rendered as strings, ensuring consistent indexing and searchability across the Zipkin conversion, native span index, and TraceQL plugin.
oap-server/server-receiver-plugin/receiver-proto · high confidence
Add Go language support to trace profiling
The trace profiling module now supports Go applications in addition to Java. This change introduces a new \ProfileLanguageType\ enum to distinguish between Java and Go profiles, updates the \ProfileThreadSnapshotRecord\ to store the language type, and adds a \GoProfileAnalyzer\ to parse and analyze Go pprof data. The main \ProfileAnalyzer\ has been updated to attempt Java analysis first, then fall back to Go analysis if no Java data is found, allowing users to view flame graphs for Go services.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/trace · high confidence
Add Kubernetes cluster manager plugin
Introduces a new Kubernetes-based cluster manager for the SkyWalking OAP server, allowing instances to discover and coordinate with each other within a Kubernetes cluster. The plugin registers a \ClusterModuleKubernetesProvider\ that uses the Fabric8 Kubernetes client to watch Pods matching a configurable label selector and namespace. It identifies cluster members by their Pod IP and port, supports self-discovery via a configurable environment variable for the Pod UID, and ensures only Ready, Running Pods are included in the cluster view to maintain stability.
oap-server/server-cluster-plugin/cluster-kubernetes-plugin/src/main · high confidence
Add Nacos as a dynamic configuration center option
The OAP server now supports Nacos as a backend for dynamic configuration management. Users can configure the Nacos server address, port, namespace, and group, and choose between username/password or AccessKey/SecretKey authentication. The implementation registers listeners to automatically detect and apply configuration changes in real-time.
oap-server/server-configuration/configuration-nacos/src/main · high confidence
Add Zabbix receiver plugin
Introduces a new receiver plugin that allows the OAP server to ingest metrics from Zabbix agents. The plugin registers a new module (receiver-zabbix) and provider that starts a TCP server (default port 10051) to listen for Zabbix protocol traffic. It handles both active checks and agent data pushes, converting incoming Zabbix metrics into the OAP MeterSystem using configurable YAML rule files.
oap-server/server-receiver-plugin/skywalking-zabbix-receiver-plugin · high confidence
Add Zipkin source entity definitions for trace data ingestion
The server now includes core source model classes (ZipkinSpan, ZipkinService, ZipkinServiceSpan, and ZipkinServiceRelation) in the zipkin source package. These classes define the data structures and serialization logic required to ingest and process Zipkin-format trace data, enabling the platform to accept and analyze traces from Zipkin-compatible clients.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/zipkin/source · high confidence
Add Zookeeper as a dynamic configuration source
Users can now configure the OAP server to fetch dynamic configuration from an Apache Zookeeper cluster. This change introduces the Zookeeper configuration module, which includes a provider (\ZookeeperConfigurationProvider\) and a watcher register (\ZookeeperConfigWatcherRegister\) that connects to Zookeeper using Curator, reads configuration items and groups from a specified namespace, and handles null data safely to prevent runtime errors.
oap-server/server-configuration/configuration-etcd/src/main/java, oap-server/server-configuration/configuration-zookeeper/src/main · high confidence
Add browser error log recording and dispatching
The OAP server now captures and stores browser error logs. This change introduces the \BrowserErrorLogRecord\ data model and its dispatcher, which routes incoming \BrowserErrorLog\ source events into the storage pipeline. The record includes fields for unique ID, service ID, service version, page path, timestamp, error category, and binary data, enabling users to analyze frontend errors within SkyWalking.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/browser/manual/errorlog · high confidence
Add eBPF process profiling storage and dispatching
The server now includes storage models and dispatchers for eBPF process profiling data. This change introduces new record classes (EBPFProfilingDataRecord, EBPFProfilingScheduleRecord, EBPFProfilingTaskRecord) and dispatcher components to ingest, store, and manage eBPF profiling tasks, schedules, and stack data. It also adds supporting enums for profiling target types (On-CPU, Off-CPU, Network) and stack types (Kernel, User), enabling the backend to persist and process continuous profiling information from eBPF agents.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/ebpf/storage · high confidence
Add etcd-based cluster coordination plugin
The etcd cluster plugin is now available, allowing SkyWalking OAP servers to use etcd as the underlying storage for cluster node registration, discovery, and health checking. This new module introduces configuration options for etcd endpoints, service names, namespaces, and authentication, and registers the etcd coordinator to handle cluster membership and remote instance queries.
oap-server/server-cluster-plugin/cluster-etcd-plugin/src/main · high confidence
Add gRPC-based dynamic configuration synchronization
Introduces a new gRPC module that allows the SkyWalking OAP server to fetch dynamic configurations from a remote configuration center. This includes a new protobuf service definition for configuration requests and responses, a provider to initialize the gRPC client, and a watcher register that polls for config changes using UUID-based change detection to minimize data transfer.
oap-server/server-configuration/grpc-configuration-sync/src/main · high confidence
Add instance traffic metrics for service instances
The server now collects and stores instance-level traffic metrics via a new \InstanceTraffic\ model and a set of dispatchers (for standard, Kubernetes, TCP, and Cilium/Hubble service instances). This enables visibility into instance activity and last-seen timestamps, supporting features like on-demand Pod logs and instance health monitoring.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/instance · high confidence
Add library-util utility classes
The library-util module now includes a set of new utility classes to support configuration parsing, file monitoring, and data handling. This includes a file change detection mechanism via MultipleFilesChangeMonitor, a connection string parser in ConnectUtils, and a property placeholder helper for resolving configuration values. Additional utilities cover boolean conversions, collection checks, protobuf JSON serialization, and resource loading.
oap-server/server-library/library-util · high confidence
Add pprof profile data parsing and analysis library
The \library-pprof-parser\ module now provides the core infrastructure to ingest, parse, and analyze Go pprof profile data. This includes a \PprofParser\ to decode gzip-compressed protobuf profiles into internal frame trees, a \FrameTreeBuilder\ to aggregate sample data into hierarchical call stacks, and a \PprofSegmentParser\ to extract distributed tracing context (such as segment IDs, trace IDs, and span IDs) from profile labels. A \profile.proto\ definition is also included to support the parsing of the standard pprof format.
oap-server/server-library/library-pprof-parser · high confidence
Add pprof profiling receiver plugin
The SkyWalking OAP server now includes a new receiver plugin that enables the ingestion of pprof profiling data. This feature introduces a gRPC service handler that accepts profiling streams, supporting both in-memory buffering and temporary file storage based on the \memoryParserEnabled\ configuration. Administrators can control the maximum accepted file size via the \pprofMaxSize\ setting (defaulting to 30 MB), and the plugin automatically parses the incoming data into frame trees for storage and analysis.
oap-server/server-receiver-plugin/skywalking-pprof-receiver-plugin · high confidence
Add process-level client and server side metrics for service topology
The server now captures detailed process-to-process communication metrics by introducing \ProcessRelationClientSideMetrics\ and \ProcessRelationServerSideMetrics\ classes, along with a \ProcessRelationDispatcher\ to route incoming \ProcessRelation\ source data. This enables the service topology view to distinguish between client-side and server-side interactions at the process level, storing these relations with specific index names (\process\_relation\_client\_side\ and \process\_relation\_server\_side\) and supporting storage in both ElasticSearch and BanyanDB.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/relation/process · high confidence
Add server-side endpoint call relation metrics for Cilium/Hubble observability
The server now processes Cilium endpoint relation data to populate server-side endpoint call metrics. New dispatcher classes (EndpointCallRelationDispatcher and HubbleEndpointCallRelationDispatcher) route EndpointRelation and CiliumEndpointRelation sources into a new EndpointRelationServerSideMetrics entity, enabling visibility into service-to-endpoint call relationships specifically for Cilium-based network traffic monitoring.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/relation/endpoint · high confidence
Add service call relation metrics and dispatchers for TLS, TCP, K8s, and Cilium
The server now captures and stores service-to-service call relations with support for multiple component IDs and TLS status tracking. New dispatcher classes (ServiceCallRelationDispatcher, TCPServiceCallRelationDispatcher, K8SServiceCallRelationDispatcher, HubbleServiceCallRelationDispatcher) route relation data from standard, TCP, Kubernetes, and Cilium sources into new metrics entities (ServiceRelationServerSideMetrics, ServiceRelationClientSideMetrics). These metrics record source/destination service IDs, a list of component IDs, and TLS mode (MTLS/TLS/NON-TLS) as component IDs 142/130, enabling users to observe service dependencies, component diversity, and encryption status in topology and metrics views.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/relation/service · high confidence
Add service instance call relation metrics and dispatchers
The server now captures and stores service-to-service instance communication topology by introducing dedicated metrics classes (ServiceInstanceRelationClientSideMetrics and ServiceInstanceRelationServerSideMetrics) and their corresponding dispatchers for standard, Kubernetes, TCP, and Cilium/Hubble sources. These metrics record source and destination service/instance IDs with a 250-character ID length limit, enabling users to visualize and analyze direct instance-level dependencies and call patterns across different networking environments.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/relation/instance · high confidence
Add service-dimension aggregation for slow database statements
The server now supports aggregating slow database statement records by service dimension. This change introduces new data models (TopNServiceDatabaseStatement, TopNDatabaseStatement) and their corresponding dispatchers to capture and process slow SQL, MongoDB, and Redis commands at the service level, enabling users to identify and analyze the most impactful database operations per service.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/database · high confidence
Add slow cache command analysis for read and write operations
The server now analyzes cache-related spans to provide metrics and identify slow commands for cache services. This change introduces new data models (TopNCacheReadCommand and TopNCacheWriteCommand) and a dispatcher (CacheSlowAccessDispatcher) to process slow access events, enabling visibility into the performance of cache read and write operations.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/cache · high confidence
Add standalone cluster plugin for single-node deployments
Introduces a new standalone cluster implementation for the SkyWalking OAP server, enabling single-node deployments without requiring an external cluster coordinator. The \ClusterModuleStandaloneProvider\ registers the \StandaloneManager\ to implement cluster coordination services, which manages cluster state in memory and notifies watchers upon startup.
oap-server/server-cluster-plugin/cluster-standalone-plugin/src/main · high confidence
Add sumPerMin and sumPerMinLabeled meter functions
The server now supports two new meter aggregation functions: \sumPerMin\ and \sumPerMinLabeled\. These functions accumulate metric values over time and calculate the average per minute. The \sumPerMin\ function handles simple numeric values, while \sumPerMinLabeled\ supports labeled metrics using a DataTable structure, allowing for more granular metric breakdowns. Both functions include support for time-bucketing (hourly/daily) and serialization for remote data handling.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/sumpermin · high confidence
Add support for latest and labeled latest meter functions
The server now includes \LatestFunction\ and \LatestLabeledFunction\ meter functions, enabling the collection and storage of the most recent metric value for an entity rather than aggregated statistics. \LatestFunction\ stores a single long value, while \LatestLabeledFunction\ supports complex labeled data via \DataTable\. Both implementations include serialization, deserialization, and time-bucketing logic (hourly/daily) and are configured for storage in BanyanDB (using \SeriesID\) and ElasticSearch (with doc values enabled).
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/latest · high confidence
Added SQL query model classes for grouping and filtering
The server-core module introduces new data model classes (GroupBy, KeyValues, and Where) within the org.apache.skywalking.oap.server.core.query.sql package to support structured SQL query construction. These classes provide the foundational structures for defining grouping columns, key-value pairs for filtering, and where-clause conditions, enabling more complex metric and topology queries.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/sql · high confidence
Added max and min aggregation functions for meter metrics
The server now supports max and min aggregation for meter metrics, introducing four new function types: max, min, maxLabeled, and minLabeled. These implementations allow users to track the highest and lowest recorded values for metrics, including support for labeled (DataTable) values, and are integrated into the existing down-sampling and storage pipeline.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/max, oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/min · high confidence
Added storage interfaces for runtime rules and UI templates
The server core now includes dedicated DAO interfaces for persisting runtime-managed MAL/LAL rules and UI dashboard templates. RuntimeRuleManagementDAO provides upsert and delete operations for rule files to ensure correct persistence semantics across backends, while UITemplateManagementDAO exposes CRUD methods for managing dashboard configurations. These interfaces enable the backend to store and retrieve these management entities, supporting the hot-update of runtime rules and the management of UI templates.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/management · high confidence
Browser traffic is now dispatched to service instance metrics
A new dispatcher class, BrowserAppSingleVersionTrafficDispatcher, has been added to route browser telemetry data into the core instance metrics pipeline. This change ensures that browser application traffic is processed and aggregated alongside other service instance data, enabling unified visibility into service health and performance from browser sources.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/browser/manual/instance · high confidence
Browser traffic metrics are now dispatched to the Service layer
The OAP server now processes browser telemetry data by routing it through a new BrowserAppTrafficDispatcher. This component takes incoming BrowserAppTraffic sources and forwards them as ServiceTraffic metrics with the layer explicitly set to BROWSER, ensuring that browser performance data is integrated into the standard service-level metrics pipeline.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/browser/manual/service · high confidence
Centralized command factory for profiling task distribution
The server now provides a unified CommandService in the core module to generate and dispatch profiling commands to agents. This service creates specific command objects for async profiling, pprof (Go agents), eBPF network profiling (including dynamic sampling strategies and extension configs), and continuous profiling policies, ensuring that task details like triggers, durations, and sampling rules are correctly serialized and sent downstream.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/command · high confidence
Dynamic logging configuration support
The server now supports loading and applying logging configuration changes dynamically. A new LoggingConfigWatcher monitors configuration updates (including deletions) and applies them to the active Log4j context without requiring a restart, while supporting classes (OapConfiguration, OapConfigurationFactory) ensure proper handling of XML-based log4j configurations.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/logging · high confidence
Envoy metrics receiver plugin restructured with v3 protocol support and LAL integration
The envoy-metrics-receiver-plugin has been reorganized to support Envoy Access Log Service (ALS) and Metrics Service API v3. This includes new gRPC handlers (AccessLogServiceGRPCHandlerV3, MetricServiceGRPCHandlerV3) that delegate to v2 implementations, enabling compatibility with newer Envoy versions. The plugin now integrates with the LAL (Log Analysis Language) framework via EnvoyHTTPLALSourceTypeProvider, allowing HTTP access log entries to be processed through the LAL compiler for direct proto getter calls. Configuration is centralized in EnvoyMetricReceiverConfig, supporting separate HTTP and TCP analysis chains, MAL rule loading, and Istio ServiceEntry namespace filtering. The module provider registers both v2 and v3 handlers, along with a SatelliteAccessLogServiceGRPCHandlerV3 for satellite-specific access log processing.
oap-server/server-receiver-plugin/envoy-metrics-receiver-plugin · high confidence
Etcd configuration module registration restored
The etcd configuration module is now properly registered with the SkyWalking server runtime. A new service provider file has been added to declare the EtcdConfigurationProvider, ensuring the system can locate and initialize the etcd-based configuration support during startup.
oap-server/server-configuration/configuration-etcd/src/main/resources · high confidence
Initial exporter provider implementation with gRPC and Kafka support
This change introduces the core provider logic for the SkyWalking exporter module, establishing the wiring for metric, trace, and log export services. It registers a gRPC-based exporter for metrics and Kafka-based exporters for traces and logs, controlled by configuration flags in ExporterSetting (e.g., enableGRPCMetrics, enableKafkaTrace). The provider also includes a MetricFormatter that resolves entity names for various scopes (service, instance, endpoint, and their relations) to ensure exported data is human-readable.
oap-server/exporter/src/main/java/org/apache/skywalking/oap/server/exporter/provider · high confidence
Initial implementation of Consul-based cluster coordination
The Consul cluster plugin now provides a complete implementation for managing SkyWalking OAP server clusters using HashiCorp Consul. This includes a new configuration model (\ClusterModuleConsulConfig\) supporting service name, host/port, internal communication endpoints, and ACL tokens, alongside a provider (\ClusterModuleConsulProvider\) that initializes the Consul client and registers the \ClusterCoordinator\ service. The coordinator (\ConsulCoordinator\) handles service registration with health checks, discovers healthy remote nodes, and maintains cluster state via Consul's caching mechanism, enabling users to leverage Consul as the backend for cluster discovery and health monitoring.
oap-server/server-cluster-plugin/cluster-consul-plugin/src/main · high confidence
Initial repository scaffolding and project configuration
Establishes the foundational project structure and configuration files for Apache SkyWalking, including the main README, CONTRIBUTING guidelines, and the CLAUDE.md AI assistant guide. Adds standard Apache artifacts such as the LICENSE, NOTICE, and HEADER files, alongside build tooling like the Maven Wrapper (mvnw/mvnw.cmd) and a Makefile for building backend and Docker images. Configures development standards through .asf.yaml (GitHub merge settings, branch protection, Dependabot disablement), .licenserc.yaml (license header enforcement), codeStyle.xml, and lombok.config, while also defining .gitmodules for protocol submodules and .dlc.json for dead-link checking.
(repo-wide) · high confidence
Initial service mesh telemetry receiver plugin
This change introduces the \skywalking-mesh-receiver-plugin\, a new module that enables the OAP server to receive and process service mesh telemetry data. It registers a gRPC handler (\MeshGRPCHandler\) to accept \ServiceMeshMetrics\ streams, which are then dispatched by \TelemetryDataDispatcher\ into internal source objects for HTTP and TCP metrics. The plugin also loads the \mesh.oal\ analysis definition to support mesh-specific data processing and registers itself as the \service-mesh\ module within the OAP server lifecycle.
oap-server/server-receiver-plugin/skywalking-mesh-receiver-plugin · high confidence
Internal OAP query execution tracing infrastructure
The server core now includes internal classes (DebuggingSpan, DebuggingTrace, DebuggingTraceContext) that enable tracing of OAP internal query execution. This infrastructure allows developers to capture and inspect the execution flow of internal operations, such as BanyanDB debugging traces, by creating spans and tracking their timing and hierarchy during query processing.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/type/debugging · high confidence
Introduce AI Evaluation module for LLM-as-Judge assessment of GenAI traces
The new \ai-evaluation\ module enables automated evaluation of GenAI observability data using an external LLM judge. It introduces a configurable pipeline that samples spans (via \AIEvaluationSpanListener\), extracts input/output messages, and sends them to an OpenAI-compatible provider for scoring. Users can configure the judge endpoint, model, and sampling rate in \ai-evaluation.yml\, and define custom evaluation tasks with specific instructions and value types. The module resolves evaluation levels (e.g., 'excellent', 'fail') based on configurable score ranges and boolean outcomes, providing a structured way to assess AI model performance directly within the OAP server.
oap-server/analyzer/ai-evaluation · high confidence
Introduce AI Pipeline module for HTTP URI recognition and baseline prediction
A new \ai-pipeline\ module has been added to the OAP server to support AI-driven observability features. This module introduces an HTTP URI recognition service that synchronizes pattern dictionaries and feeds raw URI data to a remote AI server via gRPC, enabling automatic endpoint grouping. Additionally, it provides a baseline query service that connects to a baseline prediction server to retrieve predicted metric values (including single and labeled values) for anomaly detection, with local caching to optimize performance. The module is configured via \AIPipelineConfig\ for server addresses and ports, and includes the necessary gRPC protocol definitions and service implementations.
oap-server/ai-pipeline · high confidence
Introduce AI agent conversation analysis module
The OAP server now includes a new 'ai-agent-conversation' module that ingests and stores long-lived AI agent conversations (Session Data and Session Flow files) landed by the AI Sessionizer. This module provides HTTP endpoints to retrieve conversation views and individual provider body files, and exposes a query service for retrieving conversation data. It includes configuration options for controlling read windows, response sizes, and file size limits, and supports a 'none' provider to disable the feature entirely if needed.
oap-server/analyzer/ai-agent-conversation · high confidence
Introduce BatchQueue library for metrics pipeline
A new partitioned, self-draining queue library (BatchQueue) is added to replace the previous DataCarrier implementation in the metrics pipeline. It provides type-based dispatch, adaptive partitioning that scales with registered handlers, configurable thread policies (including ioBound for blocking consumers), and a throughput-weighted drain balancer to optimize load distribution. This change improves back-pressure handling and reduces noisy logging in the health checker and batch queue components.
oap-server/server-library/library-batch-queue · high confidence
Introduce Event data model and query support
This change adds the core data structures for the new Event concept within the server-core query layer. It introduces the \Event\ class, which now includes a \layer\ field to distinguish event scope, and defines \EventType\ (Normal, Error) and \Source\ (service, instance, endpoint) to provide richer context for each event. Additionally, \EventQueryCondition\ is added to enable filtering events by these attributes, and \Events\ serves as the container for query results, laying the groundwork for event collection and retrieval.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/type/event · high confidence
Introduce GenAI Analyzer module for virtual GenAI observability
This change adds the \gen-ai-analyzer\ module to the OAP server, enabling virtual GenAI monitoring by extracting metrics from both native OTLP and Zipkin traces. The module registers a \GenAISpanListener\ that processes spans to identify GenAI providers and models (using prefix matching and aliases), calculates estimated token costs based on configurable pricing, and emits \GenAIMetrics\ sources. It includes configuration loading for provider/model definitions and an OAL definition for the virtual GenAI layer, allowing users to observe GenAI usage and costs alongside standard service traces.
oap-server/analyzer/gen-ai-analyzer · high confidence
Introduce GenAI evaluation record model and query service
The core module now includes a new data model, GenAIEvaluationRecord, and a corresponding GenAIEvaluationRecordQueryService. This enables the OAP server to persist and query GenAI evaluation results, including metrics like scores, boolean values, and string-based reasons, linked to trace IDs and span indices. This change supports the new GenAI observability capabilities by providing the backend storage and query infrastructure for evaluation data.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core · high confidence
Introduce Kafka Fetcher Plugin for Telemetry Ingestion
The OAP server now includes a new \kafka-fetcher-plugin\ that enables the ingestion of telemetry data (traces, metrics, logs, profiling, and service management) from Apache Kafka. This plugin registers dedicated handlers for each data type, automatically creates missing Kafka topics with configurable partitions and replication factors, and processes incoming records using a configurable thread pool. It supports both native protobuf and JSON log formats, allows topic name customization via configuration, and integrates with the existing analyzer modules for data processing.
oap-server/server-fetcher-plugin/kafka-fetcher-plugin · high confidence
Introduce LAL V2 engine with ANTLR4 code generation and live debugging
The Log Analysis Language (LAL) engine has been replaced with a V2 implementation that compiles LAL rules into Java classes using ANTLR4 and Javassist at startup, improving performance and type safety over the previous runtime. This change introduces a new DSL execution model where rules are compiled into {@code LalExpression} objects, managed via a new {@code DSL} class that handles input/output type routing and filter specifications. A significant addition is the integration of a live debugger for LAL rules, allowing operators to inspect rule execution stages (text, parser, extractor, output) and drop reasons in real-time via {@code GateHolder} and {@code LALDebug} probes. The engine now supports structured metadata decoupling via {@code LogMetadata}, JSON parsing from text bodies, and runtime rule hot-updates with isolated class loading.
oap-server/analyzer/log-analyzer/src/main/java/org/apache/skywalking/oap/log/analyzer/v2/dsl · high confidence
Introduce LAL v2 compiler with ANTLR4 parsing and Javassist bytecode generation
The Log Analysis Language (LAL) compiler has been replaced with a new v2 engine that uses ANTLR4 for parsing DSL scripts into an AST and Javassist for generating Java bytecode at runtime. This change introduces new compiler components (LALScriptParser, LALClassGenerator, LALBlockCodegen, LALValueCodegen, LALDefCodegen) that handle parsing, AST modeling, and code generation for LAL blocks (extractor, sink, sampler) and expressions. The new compiler supports local variables via the \def\ keyword with type inference and casting, JSON/YAML/text parser blocks, and unified arithmetic operators with JLS-style type promotion. Generated classes are now defined in a dedicated runtime package and can be loaded via custom ClassLoaders to support runtime rule hot-updates.
oap-server/analyzer/log-analyzer/src/main/java/org/apache/skywalking/oap/log/analyzer/v2/compiler · high confidence
Introduce LogQL HTTP query API support
This change adds a new LogQL query plugin that exposes HTTP endpoints compatible with the Loki API, enabling users to query logs using LogQL syntax. The implementation includes ANTLR grammar definitions for the LogQL lexer and parser, a module provider that starts an HTTP server, and API handlers for label discovery and log range queries. This allows users to integrate with tools that support the Loki protocol for log retrieval.
oap-server/server-query-plugin/promql-plugin · high confidence
Introduce MAL-based meter processing with hot-swappable rule support
The agent-analyzer module now processes meter data using the MeterProcessService, which implements the MalConverterRegistry to allow runtime-rule hot-swapping of meter-analyzer-config rules without restarting the OAP server. This replaces the previous OAL-based meter analysis with a new MAL (Meter Analysis Language) engine that compiles and installs rules at startup and supports live updates via the runtime-rule plugin. The module also registers new services for segment parsing and meter processing, and includes configuration watchers for dynamic thresholds (DB, cache read/write) and trace sampling policies.
oap-server/analyzer/agent-analyzer/src/main · high confidence
Introduce MQE runtime engine for metrics and trace querying
The \oap-server/mqe-rt\ module now provides the runtime execution engine for the Metrics Query Engine (MQE). This change adds the core visitor infrastructure and operation implementations that allow users to query metrics and traces using a new expression language. Specifically, it enables arithmetic and comparison binary operations, logical boolean operators (AND/OR), aggregation functions (AVG, SUM, MAX, MIN, COUNT, LATEST), and sorting capabilities. It also introduces specialized functions for debugging and data inspection, including \view\_as\_seq\ for prioritized metric listing, \is\_present\ to check metric existence, and \top\_n\_of\ for merging top-N queries. The runtime integrates with the \ai-pipeline\ module to support baseline queries and includes tracing support for debugging SkyWalking and Zipkin trace queries.
oap-server/mqe-rt · high confidence
Introduce NetworkAddressAlias metric model and storage mapping
The server now defines a dedicated \NetworkAddressAlias\ metric entity to track network address aliases, including the associated service and instance identifiers. This change adds the core data model (\NetworkAddressAlias.java\) with storage annotations for BanyanDB indexing and a setup dispatcher (\NetworkAddressAliasSetupDispatcher.java\) that routes incoming \NetworkAddressAliasSetup\ source events into the metrics stream processor, enabling the system to persist and query these alias relationships.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/networkalias · high confidence
Introduce Prometheus telemetry exporter with SSL support
The Prometheus telemetry module now provides a new HTTP-based exporter for exposing metrics in Prometheus format. This implementation includes a configurable HTTP server (defaulting to port 1234) that supports optional SSL/TLS encryption via configurable key and certificate paths. The module registers Counter, Gauge, and Histogram metric types, automatically attaching backend instance labels, and exposes JVM memory metrics (heap and direct) alongside standard application metrics.
oap-server/server-telemetry/telemetry-prometheus · high confidence
Introduce ServiceTraffic metrics and dedicated dispatchers for service traffic analysis
The server now introduces a new \ServiceTraffic\ metrics model and a set of dedicated dispatchers (\ServiceTrafficDispatcher\, \K8SServiceTrafficDispatcher\, \HubbleServiceTrafficDispatcher\, \TCPServiceTrafficDispatcher\, \ServiceMetaDispatcher\) to process traffic data from various sources including standard services, Kubernetes services, Cilium/Hubble, and TCP. These dispatchers normalize incoming source data into the new \ServiceTraffic\ entity, which tracks service name, layer, and group information, enabling more granular and consistent service traffic monitoring across different infrastructure types.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/service · high confidence
Introduce TopN record model with storage annotations
Added the TopN abstract record class in the core analysis module to support TopN data structures. This class defines fields for latency, trace ID, entity ID, and timestamp, and applies storage-specific annotations such as @ElasticSearch.EnableDocValues and @BanyanDB.EnableSort to enable efficient sorting and aggregation in the underlying storage backends.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/topn · high confidence
Introduce TraceQL plugin with Tempo API compatibility and native OTLP support
This change introduces the TraceQL plugin, providing a new HTTP server that implements the Grafana Tempo API for querying traces. The plugin adds ANTLR grammar files (TraceQLLexer.g4, TraceQLParser.g4) to define the TraceQL query language, enabling users to filter traces using attributes, scopes, and operators. It includes handlers for Zipkin, SkyWalking, and native OTLP data sources, allowing users to query traces stored in these formats via a unified Tempo-compatible interface. The plugin also adds configuration options for enabling specific data sources, setting REST endpoints, and enabling TLS with certificate hot-reload. Additionally, it introduces converters and matchers for transforming and filtering OTLP and SkyWalking trace data to align with Tempo's response format and search behavior.
oap-server/server-query-plugin/traceql-plugin · high confidence
Introduce Zipkin Query plugin with TLS support and cold-stage query capability
This change adds the \query-zipkin\ module to the SkyWalking OAP server, providing a new HTTP REST API for querying Zipkin-format traces. The plugin introduces a dedicated HTTP server (configurable via \restHost\, \restPort\, and \restContextPath\) that supports server-side TLS with certificate hot-reload, allowing secure trace queries without service restarts. It implements the Zipkin V2 API endpoints (e.g., \/api/v2/trace/{traceId}\, \/api/v2/traces\) and extends them with SkyWalking-specific parameters like \coldStage\ to query data from the BanyanDB cold storage tier. The implementation includes a new \ZipkinQueryConfig\ for module settings, a \ZipkinQueryProvider\ for initialization, and an exception handler to return clear error messages for illegal arguments. This enables users to query traces using the standard Zipkin protocol while leveraging SkyWalking's storage backend features.
oap-server/server-query-plugin/zipkin-query-plugin · high confidence
Introduce continuous profiling policy management and validation
The server now supports configuring continuous profiling policies via the new ContinuousProfilingMutationService and ContinuousProfilingQueryService. Users can define policies targeting services, instances, or processes with specific check items (such as CPU, thread count, system load, HTTP error rate, and response time) and associated thresholds. The mutation service enforces strict validation rules, rejecting policies with zero or invalid thresholds, duplicate target or monitor types, and ensuring count does not exceed the period, while the query service retrieves these policies and recent trigger summaries.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/continuous · high confidence
Introduce core alarm module with recovery notifications and metrics snapshots
The alarm subsystem now supports alarm recovery notifications, allowing users to receive alerts when an issue resolves, and captures a snapshot of the metrics that triggered the alarm for better context during investigation. Additionally, alarm records now include entity layer information (e.g., GENERAL, K8S\_SERVICE) to improve filtering and identification in the UI.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm · high confidence
Introduce core exporter module and service interfaces
The server core now includes a new \exporter\ module that defines the foundational interfaces for exporting telemetry data. This change introduces the \ExporterModule\ and a generic \ExporterService\ interface, along with specific services for metrics (\MetricValuesExportService\), traces (\TraceExportService\), and logs (\LogExportService\). It also adds data models like \ExportData\ and \ExportEvent\ (supporting increment and total modes) to structure the data passed to these export pipelines.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/exporter · high confidence
Introduce dedicated Event record and LongText storage support
The server now includes a new \Event\ record type in the core analysis module, allowing event data (such as service, endpoint, and message details) to be persisted and queried independently. This change also introduces a \LongText\ wrapper class to support the storage of string fields exceeding standard length limits, ensuring that longer log data or parameters can be saved without truncation.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/record · high confidence
Introduce dedicated JVM receiver plugin with v3 protocol support
The JVM receiver functionality is now packaged as a standalone plugin (\skywalking-jvm-receiver-plugin\) that registers a \JVMModule\ and \JVMModuleProvider\. This provider loads the JVM-specific OAL analysis script (\oal/java-agent.oal\) and registers gRPC handlers (\JVMMetricReportServiceHandler\ and a compatibility wrapper) to receive JVM metrics via the v3 protocol. The handler applies naming control rules to service and instance names before dispatching metrics, ensuring consistent naming and supporting the new protocol version while maintaining backward compatibility through the compat handler.
oap-server/server-receiver-plugin/skywalking-jvm-receiver-plugin · high confidence
Introduce dynamic configuration API and module
The OAP server now includes a new configuration module that supports dynamic configuration changes at runtime. This change introduces the \DynamicConfigurationService\ interface, allowing modules to register watchers for configuration items that can be updated without a server restart. The API supports both single and group configuration items, with implementations for polling-based (\FetchingConfigWatcherRegister\) and listening-based (\ListeningConfigWatcherRegister\) change detection. A default \NoneConfigurationProvider\ is provided as a fallback, and the module is registered via Java SPI.
oap-server/server-configuration/configuration-api/src/main · high confidence
Introduce eBPF Profiling mutation and query services
The server core now includes dedicated Java services for managing eBPF profiling tasks. The new EBPFProfilingMutationService handles the creation of profiling tasks (including network profiling with specific duration and sampling configurations) and the extension of active network profiling sessions. The EBPFProfilingQueryService provides the ability to query existing profiling tasks, check if a service supports eBPF profiling by analyzing process labels and traffic, and retrieve task details. These services act as the backend logic layer for the eBPF profiling feature, interacting with storage DAOs and metadata query services.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/ebpf · high confidence
Introduce eBPF Receiver plugin for access logs and profiling
This change introduces the new \skywalking-ebpf-receiver-plugin\ module, which enables the SkyWalking OAP server to receive telemetry data directly from eBPF agents. The plugin registers a dedicated gRPC service (or shares the existing one) to handle three main data streams: eBPF Access Logs (including Kubernetes process addresses and ztunnel mTLS analysis), eBPF Process data (host and Kubernetes process metadata), and eBPF Profiling data (both on-CPU and off-CPU profiling tasks and reports). It also includes a continuous profiling policy handler with a configurable cache timeout, allowing users to monitor network traffic and application performance at the kernel level without traditional agents.
oap-server/server-receiver-plugin/skywalking-ebpf-receiver-plugin · high confidence
Introduce eBPF profiling data storage interfaces
The server core now exposes new DAO interfaces to support eBPF profiling capabilities. These interfaces allow querying eBPF profiling tasks by service or target type, retrieving profiling schedules associated with a task, fetching profiling data records within a time range, and listing service labels. This provides the underlying storage access layer required for the new eBPF profiling features.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/profiling/ebpf · high confidence
Introduce granular TTL configuration and status query for storage backends
The core module now includes a new TTL subsystem that supports fine-grained, per-data-type expiration policies (separating metrics from records like traces, logs, and alarms) and exposes a \StorageTTLStatusQuery\ service. This allows storage implementations (such as BanyanDB) to define custom TTL definitions including hot/warm/cold stages, while the \DataTTLKeeperTimer\ orchestrates the actual deletion of expired data based on these configurations.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/ttl · high confidence
Introduce histogram and percentile support in the meter system
The meter analysis module now supports histogram and percentile metrics. New classes including HistogramFunction, BucketedValues, and PercentileArgument enable the ingestion and aggregation of bucketed data, allowing users to visualize distribution graphs and calculate percentile values from meter sources such as Prometheus.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function · high confidence
Introduce library-server with Armeria HTTP and gRPC server implementations
The new library-server module provides the foundational server implementations for the OAP server, replacing previous Jetty-based components. It introduces an Armeria-based HTTP server that supports TLS with automatic certificate hot-reload and shared event loops, alongside a gRPC server backed by Netty that supports mTLS and virtual threads on JDK 25+. This change establishes the core networking infrastructure for telemetry ingestion and HTTP endpoints.
oap-server/server-library/library-server · high confidence
Introduce new Meter Receiver plugin for gRPC meter data ingestion
This change adds the \skywalking-meter-receiver-plugin\, a new module that enables the OAP server to receive meter metrics via gRPC. It registers a \MeterReceiverModule\ and \MeterReceiverProvider\ that wire up \MeterServiceHandler\ and \MeterServiceHandlerCompat\ to the shared gRPC handler registry, allowing agents to stream \MeterData\ and \MeterDataCollection\ payloads. The receiver processes incoming meters through the existing \IMeterProcessService\, exposes latency and error metrics via telemetry, and includes a test configuration demonstrating meter analysis rules.
oap-server/server-receiver-plugin/skywalking-meter-receiver-plugin · high confidence
Introduce new Zipkin receiver module with HTTP and Kafka support
The OAP server now includes a dedicated \receiver-zipkin\ module that enables the ingestion of Zipkin-format traces via both HTTP endpoints (supporting JSON V1/V2, Protobuf, and Thrift payloads at \/api/v1/spans\ and \/api/v2/spans\) and Apache Kafka topics. This module provides configurable HTTP server settings (including TLS), Kafka consumer parameters, sampling rates, and rate limiting, while exposing telemetry metrics for trace ingestion latency, dropped spans, and analysis errors.
oap-server/server-receiver-plugin/zipkin-receiver-plugin · high confidence
Introduce new log record model and dispatching infrastructure
The server core now defines a dedicated \LogRecord\ model and its dispatcher to handle log ingestion. This change introduces \AbstractLogRecord\ and \LogRecord\ classes that map log data (service, trace, content, tags) to storage, utilizing new annotations like \@SQLDatabase.AdditionalEntity\ to support additional tag tables and \@BanyanDB.TimestampColumn\ for timestamp handling. The \LogRecordDispatcher\ bridges incoming \Log\ source events to the new record stream processor, establishing the foundation for the new log collecting and query implementation.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/log · high confidence
Introduce optional dedicated sharing server for receiver traffic
This change adds a new, opt-in sharing server module that provides separate gRPC and REST endpoints for receiver traffic, allowing users to isolate external agent requests from internal OAP traffic to improve security and resource management. When enabled via configuration (e.g., setting \restPort\ or \gRPCPort\), the module starts independent Armeria-based HTTP and gRPC servers with support for TLS (including hot-reload for certificates), token-based authentication, and configurable thread pools and header sizes. If the sharing server is not activated, the module delegates to the core server's existing handlers, maintaining backward compatibility.
oap-server/server-receiver-plugin/skywalking-sharing-server-plugin · high confidence
Introduce pprof profiling support in the server core
This change adds the core backend components for the new pprof profiling feature. It introduces the PprofMutationService and PprofQueryService to handle the creation, validation, and querying of profiling tasks, alongside storage record definitions (PprofTaskRecord, PprofProfilingDataRecord, PprofTaskLogRecord) and their corresponding DAO interfaces. These files provide the internal data models and persistence abstractions required to manage pprof task lifecycles and store profiling data.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/pprof, oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/profiling/pprof · high confidence
Introduce process detection type and service label tracking
The server now distinguishes how processes are discovered by adding a new \ProcessDetectType\ enum with a \VIRTUAL\ option for network-profiled processes that are not directly profileable. Additionally, a new \ServiceLabelRecord\ metric and its dispatcher are introduced to aggregate and store service-level labels, enabling faster identification of similar processes. These changes enhance the process analysis model by providing clearer context on process origins and grouping.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/process · high confidence
Introduce server-side async profiler task management and JFR data storage
The server now supports the async profiler feature by introducing core services and storage models for managing profiling tasks and persisting Java Flight Recorder (JFR) data. The new AsyncProfilerMutationService allows users to create profiling tasks with specific durations, event types, and execution arguments, while enforcing a constraint that only one task can run per service at a time. The AsyncProfilerQueryService provides the ability to query these tasks and retrieve merged JFR stack trace data. Additionally, new storage records (AsyncProfilerTaskRecord, AsyncProfilerTaskLogRecord, and JFRProfilingDataRecord) and a dispatcher are added to handle the persistence and indexing of task metadata and profiling results in the backend storage.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/asyncprofiler · high confidence
Introduce tag autocomplete data storage model
The server now includes a dedicated data model for storing tag autocomplete information, enabling faster tag suggestions in queries. This change adds the \Tag\ class to represent key-value pairs, the \TagType\ enum to categorize tags by source (TRACE, LOG, ZIPKIN, ALARM, OTLP), the \TagAutocompleteData\ class to persist autocomplete records with specific storage annotations, and the \TagAutocompleteDispatcher\ to route source data into this new storage stream.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/searchtag · high confidence
Introduce telemetry API module with metrics and health check interfaces
The telemetry-api module now provides the core abstractions for server-side observability, defining interfaces for Counter, Gauge, and Histogram metrics, along with a MetricsCreator to instantiate them and a MetricsCollector to retrieve them. It also introduces a HealthCheckMetrics implementation that exposes health status via a gauge (1 for healthy, 0 for unhealthy, -1 for unknown), and includes a no-op provider to allow the system to run without an active telemetry backend.
oap-server/server-telemetry/telemetry-api · high confidence
Introduce unified client library with health checks and new request abstractions
The \library-client\ module now provides a standardized \Client\ interface and a \HealthCheckable\ contract, implemented by \ElasticSearchClient\, \GRPCClient\, and \JDBCClient\. These clients support configurable connection and socket timeouts, SSL/TLS settings, and integrated health checking with a \DelegatedHealthChecker\. Additionally, new \InsertRequest\ and \UpdateRequest\ interfaces are introduced to standardize data persistence operations, and an \ElasticSearchScroller\ is added to handle large result sets with automatic scroll context cleanup.
oap-server/server-library/library-client · high confidence
Introduces MQE query result data models
The server-core module adds a new set of Java classes in the \org.apache.skywalking.oap.server.core.query.mqe\ package to structure Metric Query Engine (MQE) responses. These new types—\ExpressionResult\, \ExpressionResultType\, \MQEMetric\, \MQEValue\, \MQEValues\, and \Metadata\—define the schema for returning query outcomes, including support for various result types like single values, time-series data, and sorted lists, as well as associated metadata and labels.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/mqe · high confidence
Introduces OAL V2 engine with ANTLR4 parsing and Javassist code generation
The OAL runtime now includes a new V2 engine implementation that replaces the previous Groovy-based DSL runtime. This engine parses OAL scripts using ANTLR4, enriches metric definitions with metadata, and generates Java classes at runtime using Javassist and FreeMarker templates. The new architecture provides immutable data models, type-safe filter values, and improved source location tracking for better error messages and debugging capabilities.
oap-server/oal-rt/src/main · high confidence
Introduces core server interfaces and gRPC token authentication
This change adds the foundational server-core components for the OAP server, including the GRPCHandlerRegister and HTTPHandlerRegister interfaces and their implementations to manage service and interceptor registration. It also introduces an AuthenticationInterceptor for gRPC that enforces token-based authentication between agents and the OAP receiver, verifying the token against a configured expected value and denying access if it does not match.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/server · high confidence
Introduces custom gRPC health check handler for OAP server
The OAP server now includes a dedicated gRPC health check service handler (HealthCheckServiceHandler) that implements the standard gRPC health checking protocol. This component allows external systems, such as Consul, to verify the server's availability by sending health check requests, which the server responds to with a 'SERVING' status.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/remote/health · high confidence
Introduction of StreamData base class for cross-node aggregation
A new abstract base class, StreamData, has been added to the remote data package to support L1 and L2 aggregation across OAP nodes. This class implements Serializable and Deserializable interfaces and defines a remoteHashCode method, providing a standardized contract for data objects involved in distributed aggregation processes.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/remote/data · high confidence
Live DSL debugging support for MAL and LAL rules with cluster-wide session management
The admin server now includes a live debugger for MAL (Meter Analyzer Language) and LAL (Log Analyzer Language) rules, allowing operators to inspect rule execution in real time. This change introduces cluster-aware session management via gRPC fan-out, enabling debug sessions to be installed, collected, and stopped across all OAP nodes in a cluster. For MAL rules, the debugger captures the full pipeline including input, filters, stages, downsampling, and meter emission, with support for multi-family metric payloads. For LAL rules, it provides both block-level and statement-level granularity, capturing text parsing, extraction, and output records. The implementation includes dedicated holder registries for both MAL and LAL catalogs, ensuring proper binding of debug sessions to live rule instances even during hot-updates.
oap-server/server-admin/dsl-debugging · high confidence
Mock core module provider for the profile exporter tool
The profile-exporter tool now includes a mock implementation of the OAP core module provider (MockCoreModuleProvider) to support standalone operation without a full OAP backend. This mock replaces real services with no-op or simplified versions, including GRPC and HTTP handler registrations, source receivers, remote client management, worker instance services, and component library catalog lookups, enabling the tool to function independently for profile snapshot export.
oap-server/server-tools/profile-exporter/tool-profile-snapshot-server-mock · high confidence
Nacos cluster plugin adds internal communication and authentication configuration
The Nacos cluster plugin now supports configuring internal communication endpoints via \internalComHost\ and \internalComPort\, allowing cluster nodes to use specific internal addresses for communication. Additionally, the plugin now supports Nacos authentication, enabling users to configure either username/password or accessKey/secretKey for secure connections, as well as a custom \contextPath\ for Nacos server routing.
oap-server/server-cluster-plugin/cluster-nacos-plugin/src/main · high confidence
Native OTLP trace storage and cataloging
The server now stores OpenTelemetry Protocol (OTLP) traces natively, preserving the original binary payload and attribute types instead of converting them to the legacy Zipkin format. This change introduces new core data models (OTLPSpanRecord, OTLPServiceTraffic, OTLPServiceSpanTraffic, OTLPServiceRelationTraffic) and their corresponding source/dispatcher classes to index and store these traces. These catalogs feed the TraceQL value lists for service names, span names, and remote services, enabling more precise debugging and query capabilities for OTLP data.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query · high confidence
Native OTLP trace storage and unified OTLP receiver architecture
The OTLP receiver plugin now supports native storage of OpenTelemetry traces, allowing spans to be stored directly in the \otlp\_span\ table rather than being converted to Zipkin format. This introduces a new \otlpTraceStorage\ configuration option (defaulting to \otlp\, with \zipkin\ as a legacy fallback) and adds head sampling and rate-limiting controls (\otlpTraceSampleRate\, \otlpTraceMaxSpansPerSecond\) for the native path. The receiver module has been refactored to use an SPI-based \Handler\ interface, enabling extensible support for traces, logs, and metrics via dedicated handlers (\OpenTelemetryTraceHandler\, \OpenTelemetryLogHandler\, \OpenTelemetryMetricHandler\) that register gRPC and HTTP endpoints. Configuration validation ensures that native mode uses properly scoped searchable tags, and the module system now correctly orders dependencies to guarantee storage initialization before rule loading.
oap-server/server-receiver-plugin/otel-receiver-plugin · high confidence
New Cilium network traffic fetcher plugin
A new fetcher plugin has been added to ingest observability data from Cilium Service network traffic. This plugin connects to a Cilium peer service via gRPC to stream flow data, which is then processed to generate metrics for L3/L4 and L7 traffic, DNS resolutions, and Kafka interactions. It supports configurable SSL connections, allows excluding specific namespaces or labels via YAML rules, and maps Cilium endpoint metadata to SkyWalking service instances for visibility into service-to-service communication.
oap-server/server-fetcher-plugin/cilium-fetcher-plugin · high confidence
New DAO interfaces for trace profiling data access
The server-core module introduces three new Data Access Object interfaces to support trace profiling queries: IProfileTaskLogQueryDAO for retrieving task logs, IProfileTaskQueryDAO for searching and fetching profile tasks by service, endpoint, and time range, and IProfileThreadSnapshotQueryDAO for querying thread snapshot records and their sequence ranges. These interfaces define the contract for accessing profiling data stored in the backend, enabling the retrieval of task metadata and detailed thread-level snapshot information required for cross-thread trace profiling.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/profiling/trace · high confidence
New DSL and module testing utilities for LAL, MAL, and Hierarchy rules
The server-testing module now includes a comprehensive set of utilities for testing DSL rule engines. This adds loaders for LAL, MAL, and Hierarchy rules from YAML configurations, along with companion data builders for LAL log data and MAL mock samples. It also introduces mock implementations for the module manager and provider, enabling isolated unit testing of server components without requiring a full runtime environment.
oap-server/server-testing · high confidence
New Docker image for the OAP server
This change introduces a new Dockerfile, entrypoint script, and log configuration for the SkyWalking OAP (Observability Analysis Platform) server. The image is based on Eclipse Temurin JDK 25 JRE and exposes ports 12800, 11800, and 1234. The entrypoint script handles classpath construction by including configuration files, OAP libraries, and any user-provided extensions from ext-libs and ext-config directories, then launches the OAP server. The default log level is set to INFO, with specific formatting for ERROR logs that includes the SkyWalking version.
docker/oap · high confidence
New JFR parser library for async-profiler data
The \library-async-profiler-jfr-parser\ module now includes a new Java-based parser for JFR files generated by async-profiler. This library introduces classes like \JFRConverter\, \JFRParser\, and \JFRToFrameTree\ to read JFR events (such as execution samples, allocations, and locks) and convert them into structured \FrameTree\ objects. It also provides utilities for classifying stack frames (e.g., GC, JIT, Native) and merging frame trees, enabling the server to process and analyze async-profiler profiling data.
oap-server/server-library/library-async-profiler-jfr-parser · high confidence
New Kubernetes ConfigMap configuration provider
Skywalking OAP server now supports loading configuration dynamically from Kubernetes ConfigMaps. This new module allows users to specify a namespace and label selector to watch for ConfigMap changes, enabling runtime configuration updates without restarting the server. The implementation uses the Fabric8 Kubernetes client to inform on ConfigMap data and supports both individual key retrieval and grouped configuration items.
oap-server/server-configuration/configuration-k8s-configmap/src/main · high confidence
New OAL engine annotation definitions for metrics and filtering
The OAL (Observability Analysis Language) engine now uses a new set of Java annotations to define metrics functions and filter logic. This location introduces the \@MetricsFunction\ annotation to mark metric functions, \@Entrance\ to identify entry points, and parameter-level annotations (\@Arg\, \@Expression\, \@SourceFrom\, \@ConstOne\, \@DefaultValue\) to configure function inputs. Additionally, \@FilterMatcher\ and \@BooleanValueFilterMatcher\ are added to define how filter expressions are processed, enabling the engine to support new filtering capabilities like \!=\ and \like\.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/annotation · high confidence
New OAL expression matchers for boolean, numeric, and string filtering
The OAL runtime engine in the server-core module now includes a comprehensive set of new expression matchers to support richer filtering logic. BooleanMatch and BooleanNotEqualMatch enable precise boolean comparisons, while NumberMatch, GreaterMatch, GreaterEqualMatch, LessMatch, and LessEqualMatch provide robust numeric comparisons across int, long, float, and double types. String filtering is enhanced with StringMatch for equality, LikeMatch for pattern matching (including %wildcards%), and InMatch for checking membership in a list of values. Additionally, ContainMatch and NotContainMatch allow filtering based on whether list fields contain or exclude specific items, and NotEqualMatch handles general inequality checks. These additions expand the capabilities of the OAL query language for more complex metric analysis.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/expression · high confidence
New SPIs for typed LAL input handling and debug rendering
The Log Analysis Language (LAL) v2 engine introduces two new Service Provider Interfaces (SPIs) to support typed log analysis. LALSourceTypeProvider allows receiver plugins to declare the specific Java or Protobuf input types and default output types for each Layer, enabling the compiler to generate optimized direct getter calls and validate output field assignments at compile time. LalInputDebugRenderer provides a mechanism for receiver plugins (such as Envoy ALS) to render operator-readable JSON for complex input types that generic Protobuf printers cannot handle meaningfully, improving debuggability for features like Istio metadata-exchange peer decoding.
oap-server/analyzer/log-analyzer/src/main/java/org/apache/skywalking/oap/log/analyzer/v2/spi · high confidence
New SpanListener SPI for intercepting and modifying trace spans
The trace processing pipeline now exposes a Service Provider Interface (SPI) called SpanListener, allowing external modules to intercept spans at two distinct points: before Zipkin conversion (for OTLP sources) and after conversion (for all sources). This new core component enables listeners to veto span persistence entirely or inject additional tags into the trace data, providing a standardized hook for custom trace processing logic without modifying the core receiver code.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/trace · high confidence
New Telegraf receiver plugin for ingesting metrics via HTTP
A new \skywalking-telegraf-receiver-plugin\ module has been added to the SkyWalking OAP server, enabling the ingestion of metrics from Telegraf agents over HTTP. The plugin registers a POST handler at \/telegraf\ that accepts JSON payloads containing metric data, converts them into SkyWalking meter samples, and stores them using the existing MeterSystem. It supports configuration via a \telegraf-rules\ directory and includes a default set of rules for common system metrics (CPU, memory, disk, network) in \vm.yaml\. The implementation relies on the new MAL/LAL V2 engine for rule processing and includes unit tests to verify the data conversion and ingestion pipeline.
oap-server/server-receiver-plugin/skywalking-telegraf-receiver-plugin · high confidence
New admin-only Inspect API for browsing metrics and entities
A new admin-only Inspect module has been added to the admin server, exposing private REST endpoints to browse the metric catalog and inspect entity data. The \GET /inspect/metrics\ endpoint lists all registered metrics (filtering out internal and deprecated entries), while \GET /inspect/entities\ enumerates the entities holding values for a specific metric in a time range, decoding them into a human-readable format and providing an MQE-ready payload for further querying. The module also includes an \EntityDecoder\ to handle various service scopes and a test suite to verify the decoding logic.
oap-server/server-admin/inspect · high confidence
New admin-server module with internal gRPC and TLS support
A new admin-server module is introduced, providing a dedicated HTTP host (default port 17128) and an internal gRPC port (default 17129) for privileged admin operations like DSL debugging and runtime rule management. This internal gRPC channel is isolated from the public agent port to prevent blast radius exposure and now supports TLS with certificate hot-reload for both the HTTP and gRPC interfaces, ensuring secure peer-to-peer cluster communication.
oap-server/server-admin/admin-server · high confidence
New browser performance and traffic data models
The OAP server now supports a new browser data upload protocol by introducing a comprehensive set of source data models in the browser source package. This includes dedicated classes for application-level and page-level performance metrics (such as redirect, DNS, TTFB, and Core Web Vitals like CLS and LCP), traffic counts categorized by normal or error types, resource loading details, and web interaction timings. Additionally, the server can now ingest and store raw browser error logs with specific error categories (AJAX, resource, Vue, Promise, JS), enabling more granular visibility into frontend user experience and errors.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/browser/source · high confidence
New browser receiver plugin for collecting performance data and error logs
A new \skywalking-browser-receiver-plugin\ module has been added to the OAP server, enabling the ingestion of browser-side telemetry. This plugin registers gRPC and HTTP (POST) handlers to receive browser performance data (including web vitals, resources, and interactions) and error logs. It implements server-side sampling for error logs, generates unique IDs for logs to ensure global uniqueness, and forwards the processed data to the core source receiver for persistence.
oap-server/server-receiver-plugin/skywalking-browser-receiver-plugin · high confidence
New caching layer for async and pprof profiling tasks
The OAP server now includes dedicated in-memory caches (AsyncProfilerTaskCache, PprofTaskCache) and a unified CacheUpdateTimer to manage async and pprof profiling task data. These components cache task lists per service with a 1-minute write expiration and a 10-minute rolling window for database queries, reducing storage load and improving the responsiveness of profiling task lookups for users.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/cache · high confidence
New cluster core framework and health checking logic
The OAP server introduces a new core cluster module that provides the foundational interfaces and logic for cluster management. This includes a \ClusterCoordinator\ with a watch mechanism to notify listeners of node changes, a \ClusterHealthStatus\ model, and an \OAPNodeChecker\ that validates cluster health by ensuring instances are reachable, excluding illegal addresses like localhost, and handling receiver-specific checks. These components define the contract for cluster registration, node querying, and health monitoring within the server core.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/cluster · high confidence
New core configuration services for component mapping, hierarchy, and naming
The server core now introduces several new configuration services in the \oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/config\ package. \ComponentLibraryCatalogService\ loads component definitions and server mappings from \component-libraries.yml\, enabling the server to resolve client component names to their corresponding server-side types. \HierarchyDefinitionService\ reads \hierarchy-definition.yml\ and compiles auto-matching rules (via a pluggable \HierarchyRuleProvider\) to build service and instance hierarchies. \NamingControl\ enforces length limits on service, instance, and endpoint names and applies endpoint grouping. \SearchableTracesTagsWatcher\ allows the set of searchable trace tags to be updated dynamically at runtime. \DownSamplingConfigService\ configures data down-sampling to hourly or daily granularities, and \ConfigService\ centralizes access to core module settings like gRPC ports and data TTLs.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/config · high confidence
New data models for AI agent session and conversation flow records
The server now includes \AIAgentSessionDataRecord\ and \AIAgentSessionFlowRecord\ classes to store AI agent conversation data. These new record types define the storage schema for session data files and conversation flow rounds, including fields for service identification, session/conversation IDs, sequence numbers, timestamps, and conversation metadata such as title, talk counts, and LLM call statistics. This enables the backend to persist and query AI agent interaction history.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/aiagent · high confidence
New data-generator Docker image for testing
A new Docker image has been added to generate mock data for testing purposes. The image is based on Eclipse Temurin 11 JRE, exposes ports 12800, 11800, and 1234, and runs the DataGeneratorStartUp class via a custom entrypoint script that configures the classpath and applies specific logging and configuration overrides.
docker/data-generator · high confidence
New data-generator module for creating mock telemetry data
A new data-generator module has been added to the server-tools, providing a standalone OAP instance designed to generate mock telemetry data for testing purposes. This tool introduces a suite of configurable data generators—including random and fixed strings, integers, booleans, UUIDs, timestamps, and sequences—that can be composed into templates for logs and distributed traces (segments). Users can drive this generation via new REST API endpoints (e.g., /mock-data/logs/tasks and /mock-data/segments/tasks), allowing them to specify generation volume or target QPS, and manage or cancel these background tasks programmatically.
oap-server/server-tools/data-generator · high confidence
New endpoint traffic metrics and dispatchers for unified endpoint analysis
The server now introduces a dedicated \EndpointTraffic\ metrics model and a set of new source dispatchers (\EndpointMetaDispatcher\, \EndpointTrafficDispatcher\, \HubbleEndpointDispatcher\, \K8SEndpointTrafficDispatcher\) to process endpoint data. This change centralizes the ingestion of endpoint traffic metrics from various sources—including standard endpoints, Cilium/Hubble observability data, and Kubernetes endpoints—into a single \EndpointTraffic\ stream, enabling unified storage and analysis of endpoint performance data.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/endpoint · high confidence
New enumeration types for GenAI, profiling, and query sorting
The server-core query layer introduces several new enumeration types to support expanded observability capabilities. GenAI Observability is supported by new enums for evaluation record sorting (GenAIEvaluationRecordSortBy), evaluation value types (GenAIEvaluationValueType), and trace reference types (GenAITraceRefType). eBPF profiling support is enabled via the ProfilingSupportStatus enum. Query flexibility is improved with new enums for metrics types (MetricsType), language identification (Language), sort order (Order), and time granularity (Step). Additionally, the Scope enum is updated to deprecate the 'All' scope in favor of specific scope categories, and the Finder logic is refined to map scope IDs to these specific categories.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/enumeration · high confidence
New event receiver plugin for collecting application events
This change introduces the \receiver-event\ plugin, enabling the SkyWalking OAP server to receive application events via both gRPC and HTTP (REST) endpoints. The plugin registers \EventGrpcServiceHandler\ for gRPC streaming and \EventRestServiceHandler\ for POST requests to \/v3/events\, both of which validate that the required \layer\ field is present in the event data before passing it to the event analyzer. This allows users to instrument and report custom application events alongside traces, logs, and metrics.
oap-server/server-receiver-plugin/skywalking-event-receiver-plugin · high confidence
New event-analyzer module for processing event data
The OAP server now includes a new \event-analyzer\ module that provides the infrastructure to analyze and persist collected event data. This change introduces the \EventAnalyzer\ entry point, a listener-based architecture (\EventAnalyzerListener\) for extensible event processing, and a default \EventRecordAnalyzerListener\ that parses incoming event payloads (including layer, service, and timing information) and forwards them to the record persistence layer. The module is registered via standard service provider interfaces and depends on the CoreModule.
oap-server/analyzer/event-analyzer · high confidence
New gRPC metric exporter protocol definition
A new protobuf definition for the gRPC metric exporter service has been added, establishing the contract for exporting metric values. This includes the \MetricExportService\ with \export\ and \subscription\ RPCs, and defines message structures for \ExportMetricValue\ (containing metric name, entity details, time bucket, event type, and repeated metric values with optional labels) and \MetricValue\ (supporting long values and key-value labels). This change introduces the foundational schema for labeled metrics and streaming export capabilities.
oap-server/exporter/src/main/proto · high confidence
New health-checker module exposes OAP server status via HTTP
A new health-checker module has been added to the OAP server, providing an HTTP endpoint at /healthcheck that returns HTTP 200 OK when the server is healthy and HTTP 503 Service Unavailable when issues are detected. The module periodically collects health metrics from the Telemetry module, calculates a health score, and exposes this status through the HealthQueryService, allowing external systems to monitor the server's operational state.
oap-server/server-health-checker · high confidence
New modular core framework for OAP server initialization
The OAP server library introduces a new modularization framework that manages the lifecycle of server components. This change adds the core infrastructure for module definitions, providers, and service registration, along with a bootstrap flow that handles dependency resolution, startup sequencing, and boot-completion notifications. It also includes configuration management via \ApplicationConfiguration\ and specific error handling for issues like duplicate providers, missing modules, and cyclic dependencies, ensuring a structured and robust initialization process for the collector.
oap-server/server-library/library-module · high confidence
New network protocol commands for profiling and configuration discovery
The network protocol layer now supports new command types for profiling and configuration management. This includes commands for async-profiler, eBPF, pprof, and continuous profiling tasks, along with a configuration discovery command. These additions enable the server to send profiling tasks to agents and receive configuration updates, expanding the capabilities for network and application performance monitoring.
apm-protocol/apm-network/src/main/java · high confidence
New profile exporter tool and TLS key generation utility
This change introduces two new utilities in the tools directory. The profile exporter tool (profile\_exporter.sh, application.yml, log4j2.xml) allows users to export profiling data by connecting to the OAP server, accepting task and trace IDs as arguments, and packaging the results into a compressed archive. Additionally, a new script (tls\_key\_generate.sh) is provided to automate the generation of CA, server, and client keys and certificates, facilitating the setup of mutual TLS for secure agent-to-server communication.
tools · high confidence
New profile snapshot exporter tool for offline analysis
A new standalone command-line tool is introduced in the \tool-profile-snapshot-bootstrap\ module to export and analyze thread profile snapshots. The tool bootstraps a minimal OAP environment to query profiled segments and their thread snapshots from storage, then dumps the data into local files (\basic.yml\ and \snapshot.data\). This enables users to perform offline analysis of profiling data without requiring a running OAP server, with the exported data being compatible with the \ProfileExportedAnalyze\ utility for stack tree visualization.
oap-server/server-tools/profile-exporter/tool-profile-snapshot-bootstrap · high confidence
New profile task receiver plugin for OAP server
This change introduces the \skywalking-profile-receiver-plugin\, a new module that enables the OAP server to receive and process profile tasks from language agents. The plugin registers a gRPC handler (\ProfileTaskServiceHandler\) to accept profile task commands, collect thread snapshots, and report Go profile data, while a compatibility layer (\ProfileTaskServiceHandlerCompat\) ensures interoperability with existing agent protocols. This allows users to initiate and manage profiling sessions directly through the OAP server infrastructure.
oap-server/server-receiver-plugin/skywalking-profile-receiver-plugin · high confidence
New query DAO interfaces for AI agent conversations, GenAI evaluation, and alarm entity filtering
The server-core module introduces new query DAO interfaces to support emerging observability capabilities. IAIAgentConversationQueryDAO and IGenAIEvaluationRecordQueryDAO provide the backend storage access for querying AI agent conversation rounds/files and GenAI evaluation records, respectively. IAlarmQueryDAO adds a new queryAlarms method and resolveEntityFilters logic, enabling the 11.0.0 GraphQL queryAlarms endpoint to filter alarms by complex entity and relation scopes. IHierarchyQueryDAO exposes service and instance hierarchy relations for topology queries.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/query · high confidence
New query input models for alarms, profiling, and GenAI evaluation
The server-core module introduces a suite of new input classes to support expanded query and configuration capabilities. Alarm queries now use AlarmQueryCondition with precise entity and tag filtering. Continuous and async profiling features are supported by new request models for task creation, analysis, and policy definitions. Browser error logs, GenAI evaluation records, and log queries by name are now handled by dedicated condition classes. Additionally, eBPF network profiling and sampling rules are defined via new input structures, and a generic attribute condition model supports not-equal filtering.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/input · high confidence
New query types for async profiling, continuous profiling, and alarms
The server-core query types now include data models for async profiling (AsyncProfilerTask, AsyncProfilerStackTree, AsyncProfilerEventType), continuous profiling policies and monitoring instances, and alarm messages with snapshots. These additions enable the OAP server to query and return detailed profiling task states, stack traces, and alarm context data to clients.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/type · high confidence
New remote client selection strategies
The server now supports configurable strategies for selecting remote clients when sending stream data. A new \RemoteClientSelector\ interface and \Selector\ enum introduce three distinct selection behaviors: \HashCode\ (distributes load based on data hash), \Rolling\ (round-robin distribution), and \ForeverFirst\ (always selects the first available client). This allows users to control how telemetry data is distributed across multiple remote endpoints.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/remote/selector · high confidence
New sampled trace record models for slow, 4xx, and 5xx traces
The server now persists sampled traces for slow requests, HTTP 4xx errors, and HTTP 5xx errors as distinct data models. These new record types (SampledSlowTraceRecord, SampledStatus4xxTraceRecord, and SampledStatus5xxTraceRecord) enable the system to store and query latency and error-specific trace data separately, supporting more granular network profiling and analysis.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/trace · high confidence
New segment record model and dispatcher for trace data
The server now introduces a dedicated \SegmentRecord\ model and \SegmentDispatcher\ to handle trace segment data. This change adds a new storage entity that captures segment-level metadata (such as service, endpoint, and instance IDs) and binary span data, routing it through the \RecordStreamProcessor\. The model is configured with specific storage annotations for BanyanDB (including trace ID/span ID columns and index rules) and ElasticSearch (routing and doc values), and it supports an additional tag table for storing segment tags separately.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/segment · high confidence
New server status service with booting, cluster, and config-dump extension capabilities
The core module now includes a new ServerStatusService that exposes server lifecycle states (booting status with uptime and cluster rebalance time) via a watcher mechanism, allowing modules to react to startup and cluster changes. Additionally, it introduces a ConfigDumpExtension SPI that enables modules (such as BanyanDB) to contribute their effective runtime configurations to the /debugging/config/dump API, ensuring secondary configuration files are included in the debug output alongside the main application configuration.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/status · high confidence
New source models for Cilium, cache, database, and eBPF profiling
The server core now includes dedicated source classes to ingest and model new observability signals. Cilium network traffic is captured via CiliumMetrics and its service/endpoint/relation variants, exposing verdicts, protocol types, and layer details. Cache and database performance are tracked through CacheAccess, CacheSlowAccess, DatabaseAccess, and DatabaseSlowStatement sources, recording latency, operation status, and slow queries. eBPF-based continuous profiling is supported by EBPFProcessProfilingSchedule and EBPFProfilingData sources, which handle task scheduling and raw profiling data uploads. These additions expand the OAP server's ability to process and store metrics from these specific infrastructure and application layers.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source · high confidence
New standalone log receiver plugin with gRPC and HTTP endpoints
A new \skywalking-log-receiver-plugin\ module has been added to the server, providing dedicated handlers for receiving log data via both gRPC (\LogReportServiceGrpcHandler\) and HTTP POST (\/v3/logs\ via \LogReportServiceHTTPHandler\). This plugin registers itself with the shared server infrastructure and delegates log analysis to the V2 \LogAnalyzerModule\, enabling users to ingest logs through standard OTLP-compatible protocols without relying on the previous monolithic receiver setup.
oap-server/server-receiver-plugin/skywalking-log-receiver-plugin · high confidence
New status module provides admin-endpoint debugging and cluster status queries
The \oap-server/server-admin/status\ module introduces a new set of HTTP handlers that expose cluster topology, alarm rule configurations, and per-query debugging capabilities on the admin-server REST port. Users can now query the list of cluster nodes via \/status/cluster/nodes\, retrieve alarm rules and their running contexts via \/status/alarm/\*\, and inspect TTL configurations via \/status/config/ttl\. Additionally, the \DebuggingHTTPHandler\ provides diagnostic endpoints for querying traces, logs, metrics expressions (MQE), and service/endpoint/instance/process topologies, returning detailed debugging traces alongside the results to aid in troubleshooting. The \/status/config/ttl\ endpoint is also exposed on the public REST host for backward compatibility with ecosystem tools.
oap-server/server-admin/status · high confidence
New storage query interfaces for Async Profiler data
The server core now exposes dedicated DAO interfaces to query Async Profiler artifacts: \IAsyncProfilerTaskLogQueryDAO\ retrieves task logs by task ID, \IAsyncProfilerTaskQueryDAO\ lists tasks within a time range and fetches individual tasks by ID, and \IJFRDataQueryDAO\ retrieves JFR profiling data records filtered by task ID, instance IDs, and event type. These interfaces provide the storage-layer contracts required to support the Async Profiler feature.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/profiling/asyncprofiler · high confidence
New sum-based meter functions for labeled and histogram metrics
The metering engine now includes three new aggregation functions—\sum\, \sumLabeled\, and \sumHistogramPercentile\—allowing users to aggregate metrics by summing raw values rather than relying solely on averages or histograms. \sum\ provides a basic counter-style aggregation, \sumLabeled\ supports labeled metrics for more granular breakdowns, and \sumHistogramPercentile\ enables calculating percentiles based on the sum of raw values over time intervals (minute, hour, or day). These functions are implemented in the core analysis module and include full serialization, storage, and downsampling support.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/sum · high confidence
New thread-analysis benchmark for OAP thread dump diagnostics
Added a new benchmark case that automates the collection and analysis of thread dumps from SkyWalking OAP pods. The setup script provisions a Kind cluster with an Istio-enabled OAP environment backed by BanyanDB, while the benchmark runner periodically captures thread dumps (using jstack, jcmd, or SIGQUIT fallbacks) and generates a report analyzing thread pool usage, excluding JVM internal threads to highlight application-level contention.
benchmarks · high confidence
New v8 management receiver plugin for instance registration
This change introduces a new receiver plugin that enables agents to register service instances and report properties via the v8 management protocol. The plugin registers gRPC and HTTP handlers (using Armeria) to process \reportInstanceProperties\ and \keepAlive\ requests, mapping incoming data to internal \ServiceInstanceUpdate\ and \ServiceMeta\ sources for downstream processing.
oap-server/server-receiver-plugin/skywalking-management-receiver-plugin · high confidence
New v8 trace receiver plugin with span attached event support
The trace receiver module has been restructured into a new plugin (receiver-trace) that registers handlers for the v8 gRPC and REST protocols. This update introduces a new SpanAttachedEventReportServiceHandler to capture span-attached events alongside the existing TraceSegmentReportServiceHandler for standard trace segments. A compatibility handler is also provided to support legacy clients, while the REST handler exposes POST endpoints at /v3/segment and /v3/segments for HTTP-based trace ingestion.
oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin · high confidence
Persisted storage for runtime-managed MAL and LAL rules
The server now persists runtime-updated MAL (Metric Analysis Language) and LAL (Log Analysis Language) rule files into the \runtimerule\ storage index. This change introduces a new \RuntimeRule\ entity that stores the rule's catalog, name, raw content, and active/inactive status, allowing the system to track and reconcile these dynamic rules across nodes using content-hash comparison rather than version counters. Users can now have their hot-updated rules survive server restarts and be consistently managed alongside static configurations.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/runtimerule · high confidence
Runtime MAL/LAL rules can declare dynamic layers
Operators can now define custom runtime layers in MAL and LAL rule files. The runtime-rule module introduces a new classification pipeline (DeltaClassifier) that detects structural changes, including new or modified layer definitions, and applies them atomically via the RuntimeLayerRegistry before compiling the rules. This ensures that rules referencing these dynamic layers are registered correctly and that alarm windows are reset only for the affected metrics, avoiding unnecessary data loss during hot-updates.
oap-server/server-admin/runtime-rule · high confidence
Server-side eBPF profiling analysis engine
The server now includes a new analysis pipeline for eBPF profiling data, enabling the generation of flame graphs from collected stack traces. This change introduces the \EBPFProfilingAnalyzer\ and supporting classes (\EBPFProfilingStack\, \EBPFProfilingStackNode\, \EBPFProfilingAnalyzeCollector\) within the \oap-server/server-core\ module. The analyzer queries raw profiling records, deserializes them into stack structures, and aggregates them into tree structures suitable for visualization. It supports both ON-CPU and OFF-CPU profiling types, handling duration and switch count metrics for OFF-CPU data, and processes queries in parallel batches to manage large time ranges efficiently.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/ebpf/analyze · high confidence
Server-side support for UI template management
The server now includes core infrastructure to manage UI templates, introducing a new \UITemplate\ data model and \UITemplateManagementService\. This enables the storage, retrieval, creation, modification, and disabling of dashboard configurations via a dedicated DAO, laying the groundwork for dynamic UI customization and template initialization features.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui · high confidence
Service and Instance Hierarchy auto-matching support
The server now automatically builds and maintains service and instance hierarchy relations (e.g., mapping MESH services to K8S services) using configurable matching rules. This is achieved through a new \HierarchyService\ that runs a background task every 20 seconds to match known services against compiled rules, alongside explicit relation creation from agent telemetry. The implementation introduces new data models (\ServiceHierarchyRelation\, \InstanceHierarchyRelation\) and their corresponding traffic metrics (\ServiceHierarchyRelationTraffic\, \InstanceHierarchyRelationTraffic\) to persist and query these hierarchical relationships.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/hierarchy · high confidence
Service provider configuration for core modules and providers
The server now registers its core components via Java Service Provider Interface (SPI) files. Specifically, the \ModuleDefine\ file declares the storage, cluster, core, query, alarm, and exporter modules, while the \ModuleProvider\ file registers the core module provider, enabling the framework to discover and initialize these parts of the system.
oap-server/server-core/src/main/resources · high confidence
Support exporting Trace and Log data to Kafka
Users can now export distributed traces and log records to Apache Kafka. This change introduces the Kafka exporter implementation, including \KafkaLogExporter\ for persisting logs (supporting JSON, YAML, and Text content types) and \KafkaTraceExporter\ for sending trace segment data. The trace exporter includes a configuration option to export only traces with error status segments. Both exporters utilize a batch queue for efficient processing and expose success/error metrics for monitoring.
oap-server/exporter/src/main/java/org/apache/skywalking/oap/server/exporter/provider/kafka · high confidence
Support for SkyWalking and Zipkin span-attached events
The server now records span-attached events for both SkyWalking and Zipkin traces. New data models (SWSpanAttachedEventRecord and SpanAttachedEventRecord) store event details such as start/end times, event type, and binary payload, linking them to their respective trace contexts. This enables users to view and analyze custom events attached to spans within their trace visualizations.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/spanattach · high confidence
Support for browser app page traffic metrics
The OAP server now processes browser application page traffic data. A new dispatcher component routes incoming page traffic metrics to the standard endpoint traffic processing pipeline, enabling the aggregation and analysis of browser-side page performance data alongside other endpoint metrics.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/browser/manual/endpoint · high confidence
Support for endpoint name grouping based on OpenAPI definitions
The server now automatically groups and normalizes endpoint names by parsing OpenAPI specification files (YAML) or dynamic configuration entries. This feature introduces a new configuration watcher that reads OpenAPI definitions to extract service names and path patterns, applying configurable formatting rules (defaulting to ${METHOD}:${PATH}) to create consistent endpoint names. It supports both static file-based definitions and dynamic updates, allowing users to reduce metric cardinality by grouping similar API endpoints defined in their OpenAPI specs.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/config/group/openapi · high confidence
Zipkin module adds BanyanDB IndexMode metrics and span record models
The Zipkin module introduces new data models to support BanyanDB's IndexMode, enabling more efficient storage and querying of trace data. This includes \ZipkinServiceTraffic\, \ZipkinServiceSpanTraffic\, and \ZipkinServiceRelationTraffic\ metrics classes, which track service-level traffic, span counts, and service-to-service relations respectively. Additionally, \ZipkinSpanRecord\ is added to store detailed span information, utilizing BanyanDB-specific annotations like \@BanyanDB.IndexMode\ and \@BanyanDB.Trace\ for optimized indexing and trace grouping. Corresponding dispatchers are implemented to route incoming Zipkin source data to these new models, ensuring that Zipkin traces are processed and stored using the new IndexMode structure.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/zipkin · high confidence
Zookeeper cluster plugin adds namespace and ACL support
The Zookeeper cluster plugin now supports configuring a namespace to isolate cluster data and enables Zookeeper ACLs for authentication, allowing users to secure their cluster coordination with digest-based credentials.
oap-server/server-cluster-plugin/cluster-zookeeper-plugin/src/main · high confidence
iOS and iPadOS app monitoring support via OpenTelemetry Swift SDK
The iOS analyzer module now ingests telemetry from iOS and iPadOS applications instrumented with the OpenTelemetry Swift SDK. It introduces two new span listeners: IOSHTTPSpanListener extracts HTTP traffic metrics (latency, status codes, CPM) from URLSession spans and emits them as Service, ServiceInstance, and Endpoint sources under the IOS layer, while IOSMetricKitSpanListener converts daily MetricKit aggregates (app launch time, hangs, CPU/GPU/memory usage, network transfers, and abnormal exits) into metrics via the Metering Analysis Language (MAL) pipeline without persisting them as traces. The listeners are registered via the standard Java Service Provider Interface (SPI) mechanism.
oap-server/analyzer/ios-analyzer · high confidence
Architecture
Elasticsearch storage plugin restructured with new configuration and base DAO classes
The Elasticsearch storage plugin has been reorganized into a new modular structure. A new \StorageModuleElasticsearchConfig\ class centralizes all configuration options, including connection settings (timeout, protocol), index management (shards, replicas, day steps, specific index settings), and bulk processing parameters (bulk actions, flush interval, batch size). New base classes in the \base\ package provide foundational functionality: \BatchProcessEsDAO\ handles asynchronous bulk indexing with configurable flush policies, \AnalyzerSetting\ manages custom Elasticsearch analyzers for OAP and log queries, \ColumnTypeEsMapping\ defines the mapping between Java types and Elasticsearch field types, \ElasticSearchConverter\ handles data serialization/deserialization with physical column name resolution, \EsDAO\ provides debuggable search and scroll operations, and \HistoryDeleteEsDAO\ manages TTL-based index deletion. The \StorageModuleElasticsearchProvider\ wires these components together, initializing the Elasticsearch client and registering all DAO implementations.
oap-server/server-storage-plugin/storage-elasticsearch-plugin · high confidence
Behavioural changes
BanyanDB storage plugin rewritten with native client and new data access layer
The BanyanDB storage plugin has been replaced with a native Java implementation, removing the previous Java client dependency. This change introduces a new data access architecture featuring dedicated DAOs for aggregation queries and batched writes, a new configuration loader that reads from separate YAML files, and a comprehensive index installer that manages schema creation and drift detection. For users, this means the storage backend now handles metrics, traces, and logs through a more direct and configurable native path, with configuration options now exposed via the debugging config dump.
oap-server/server-storage-plugin/storage-banyandb-plugin · high confidence
Centralized integration test version management and BanyanDB container configuration
Integration tests now use a centralized utility (ITVersions) to read version information from the environment file, ensuring consistent version management across tests. Additionally, a new BanyanDBTestContainer class provides a single source of truth for the BanyanDB container image and port configuration, including optimized settings for testing such as reduced cache wait durations and flush timeouts to improve test reliability and speed.
oap-server/server-library/library-integration-test · high confidence
Core analysis framework refactoring and extensibility improvements
The core analysis module has been refactored to improve extensibility and maintainability. A new Layer registry system has been introduced, allowing custom layers to be registered via YAML configuration or Java SPI without modifying OAP source code, with support for runtime dynamic layer definitions. The IDManager has been updated to support service hierarchy relations and improved entity identification. A new DispatcherManager centralizes source event routing, enabling better debugging and metric analysis. Additionally, new annotations (@Disable, @MetricsExtension) and configuration dictionaries (ApdexThresholdConfig) have been added to support more flexible metric configuration and entity disabling.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis · high confidence
Endpoint names are grouped using a new quick-match URI pattern engine and dynamic configuration
The server now groups endpoint names using a new \QuickUriGroupingRule\ engine that matches URIs against a tree of string and variable tokens, replacing the previous regex-based \EndpointGroupingRule\ (now deprecated). This change introduces support for grouping by OpenAPI definitions and AI/ML-powered HTTP URI recognition, while also ensuring that unformatted endpoints with high cardinality are grouped into \\_abandoned\ to reduce storage load. Configuration is managed via a new \EndpointNameGroupingRuleWatcher\ that applies rules dynamically from the \endpoint-name-grouping\ configuration source.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/config/group · high confidence
GraphQL query engine now supports asynchronous execution and query complexity limits
The GraphQL query plugin now executes queries asynchronously using a shared ForkJoinPool, which improves server responsiveness by preventing long-running queries from blocking the main thread. Additionally, a configurable maximum query complexity limit (defaulting to 1000) is enforced to protect the server from malicious or overly complex queries that could degrade performance.
oap-server/server-query-plugin/query-graphql-plugin · high confidence
Hierarchy rules now use a high-performance ANTLR4 and Javassist compiler instead of the Groovy runtime
The hierarchy matching engine has replaced the previous Groovy-based DSL execution with a new v2 compiler that parses rule expressions using ANTLR4 and generates optimized Java bytecode via Javassist at startup. This change significantly improves the performance and stability of service hierarchy matching by compiling rules into native \BiFunction\ classes rather than interpreting them at runtime. The new compiler supports the same rule syntax (including property access, comparisons, and logical operators) but provides better error reporting and debugging capabilities through precise source file and line number attribution in generated stack traces. Existing hierarchy definitions in \hierarchy-definition.yml\ will be processed by this new engine, ensuring consistent and faster service matching behavior.
oap-server/analyzer/hierarchy · high confidence
Introduce MQE-based alarm kernel with dynamic rule management and multi-channel notification support
The alarm system has been rewritten to use the MQE (Metric Query Expression) language for defining alarm rules, replacing the previous expression engine. This change introduces a new \AlarmKernel\ that manages rule evaluation windows and supports dynamic configuration updates via the configuration center. The core now handles firing and recovery notifications through a unified \NotifyHandler\ that dispatches to multiple webhook channels including Webhook, gRPC, Slack, DingTalk, Feishu, WeLink, Discord, and PagerDuty. The implementation includes new classes for rule parsing (\AlarmRule\, \AlarmRulesWatcher\), state management (\AlarmCore\, \RunningRule\), and status monitoring (\AlarmStatusWatcher\), providing a more robust and extensible alarm infrastructure.
oap-server/server-alarm-plugin/src/main · high confidence
Introduce new OAP server startup and configuration bootstrap mechanism
The OAP server now uses a new bootstrap entry point (OAPServerBootstrap) that initializes the module manager, loads the primary application.yml configuration, and applies system property overrides. This change introduces a dedicated ApplicationConfigLoader to handle YAML parsing, provider selection via selectors, and environment variable substitution, while also adding default configuration files for AI evaluation (ai-evaluation.yml) and alarm rules (alarm-settings.yml).
oap-server/server-starter · high confidence
Introduce new gRPC-based remote streaming protocol for OAP cluster communication
The OAP server core now uses a new internal gRPC protocol for inter-node data streaming, replacing the previous mechanism. This change introduces new interfaces (Serializable, Deserializable) and services (RemoteSenderService, RemoteServiceHandler) to handle serialization, routing (via HashCode, Rolling, or ForeverFirst selectors), and reception of streaming data. Users benefit from improved reliability and observability, including specific metrics for remote in-count, errors, target-not-found events, and latency, as well as better handling of stream cancellations without logging them as errors.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/remote · high confidence
Introduces new storage type conversion interfaces
The storage layer now uses new \Convert2Entity\ and \Convert2Storage\ interfaces to handle data transformation between OAP entities and database structures, replacing previous ad-hoc conversion logic. A \HashMapConverter\ implementation is provided as the default converter, which encodes binary fields as BASE64 strings when storing data and decodes them when reading. Additionally, a \StorageBuilder\ interface is introduced to standardize how storage implementations build entities from raw data and vice versa, and a \StorageDataComplexObject\ interface is added to support serialization of complex objects as strings.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/type · high confidence
Introduction of the OAL V2 Runtime Engine
The OAL (Observability Analysis Language) engine has been upgraded to version 2, introducing a new runtime architecture in the server-core module. This change replaces the previous engine implementation with OALEngineV2, loaded via reflection to maintain module separation. The new engine supports multiple OAL configurations through the OALDefine abstraction, allowing receivers to register specific script files and source packages. It also introduces a dedicated disable mechanism via DisableOALDefine and improves the compilation error handling with a specific OALCompileException, ensuring that OAL scripts are processed and validated by the new V2 runtime.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/oal · high confidence
JDBC storage plugin refactored with new batch execution and table management infrastructure
The JDBC storage plugin has been restructured to improve performance and maintainability. A new batch SQL execution engine (BatchSQLExecutor) now handles bulk inserts and updates, configurable via the new JDBCStorageConfig settings for batch size and async pool size. Table management is centralized in TableHelper and JDBCTableInstaller, which handle day-based table rolling, index creation, and existence checks. The plugin also introduces TableMetaInfo to track local models and JDBCEntityConverters for result set mapping, providing a more robust foundation for all JDBC-backed data persistence.
oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin · high confidence
Log Analysis Language (LAL) grammar redefined with new syntax features
The Log Analysis Language grammar has been replaced with a new ANTLR4-based definition (LALLexer.g4 and LALParser.g4), introducing support for local variables via the 'def' keyword, explicit type casting using 'as', and unified arithmetic operators (+, -, \*, /) with Java-like type promotion. This change updates the core syntax rules for parsing log analysis scripts, enabling more complex data manipulation and type handling within the analyzer.
oap-server/analyzer/log-analyzer/src/main/antlr4 · high confidence
Log Analyzer V2 module registration
The log analyzer V2 engine is now registered with the application's module system via new META-INF/services files. This wiring connects the \LogAnalyzerModule\ and \LogAnalyzerModuleProvider\ implementations, enabling the new ANTLR4-based parsing engine to be loaded and used for log analysis instead of the previous Groovy DSL runtime.
oap-server/analyzer/log-analyzer/src/main/resources · high confidence
Log analysis pipeline refactored to layer-based listener architecture
The log analysis engine has been restructured to route incoming logs through a layer-based listener system. The new \LogAnalyzer\ entry point validates logs and dispatches them to specific \LogAnalysisListener\ instances (such as \LogFilterListener\) based on the telemetry layer (e.g., GENERAL, MESH). This allows for more precise rule matching, including auto-layer detection and source-type filtering. Processed results are then handled by dedicated sink listeners like \RecordSinkListener\ for persistence or \TrafficSinkListener\ for generating service and endpoint traffic metrics.
oap-server/analyzer/log-analyzer/src/main/java/org/apache/skywalking/oap/log/analyzer/v2/provider/log · high confidence
Log-analyzer v2 engine introduces hot-updatable LAL/MAL rules and dynamic layer support
The log-analyzer module now uses a v2 engine that replaces the previous Groovy-based runtime with an ANTLR4 + Javassist compilation pipeline. This change enables runtime hot-updates for both LAL (Log Analysis Language) and MAL (Metric Analysis Language) rules, allowing operators to modify or replace rules without restarting the OAP server. LAL rules now support a dynamic 'auto' layer mode, where the script determines the service layer at runtime, and can register custom layers inline. The module provider manages a volatile registry of metric converters and LAL filter factories, ensuring that static boot-time rules and dynamic runtime updates share the same key scheme for seamless replacement.
oap-server/analyzer/log-analyzer/src/main/java/org/apache/skywalking/oap/log/analyzer/v2/provider · high confidence
MQE query language grammar expanded with new functions and operators
The MQE (Metric Query Expression) grammar now supports a broader set of query capabilities, including trend functions (\increase\, \rate\), boolean logic (\&&\, \\|\|\), and advanced aggregation features like \top\_n\_of\, \view\_as\_seq\, \is\_present\, \sort\_values\, and \sort\_label\_values\. Users can also utilize comparison operators, baseline queries, and additional attribute filters (\attr0\–\attr5\) within their metric queries.
oap-server/mqe-grammar · high confidence
Meter Analysis Language (MAL) engine upgraded to v2 with ANTLR4 and Javassist
The Meter Analysis Language (MAL) engine has been replaced with a new v2 implementation that uses ANTLR4 for parsing and Javassist for bytecode generation, replacing the previous Groovy-based runtime. This change introduces new grammar definitions (MALLexer.g4, MALParser.g4) and a dedicated compilation pipeline (MALClassGenerator, MALBytecodeHelper) that compiles MAL expressions into optimized Java classes at runtime. The new engine supports hot-updates for MAL and LAL rules via a per-file classloader strategy, allowing rules to be added, replaced, or removed without restarting the OAP server. It also improves debugging by providing accurate source attribution (file and line numbers) in generated bytecode and stack traces, and introduces a MalConverterRegistry to manage rule converters dynamically.
oap-server/analyzer/meter-analyzer/src/main · high confidence
Meter system now supports service-level metrics with additional attributes
The Meter system in the OAP server core has been updated to support adding up to six additional attributes (attr0 through attr5) for service-level metrics. This change is implemented in the Meter and MeterEntity classes, which now include fields for these attributes and methods to decorate metrics with entity attributes. This enhancement allows for more detailed and flexible metric data collection and analysis at the service level.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter · high confidence
Migrate Kubernetes client library to Fabric8 with optimized resource caching
The Kubernetes support library has switched from the kubernetes-client/java library to the Fabric8 Kubernetes client. This change introduces a shared singleton client to reduce thread overhead and implements new caching wrappers for Kubernetes resources (Pods, Services, Endpoints) and Istio ServiceEntries. These components use Guava loading caches with short expiration times (3–5 minutes) to fetch and store resource lists, enabling more efficient lookups for cluster coordination and service discovery without repeatedly hitting the API server.
oap-server/server-library/library-kubernetes-support · high confidence
New OAL Runtime Engine grammar with expanded sources and filter capabilities
The OAL grammar has been replaced with a new runtime engine definition (OALLexer.g4 and OALParser.g4). This update introduces support for new data sources including Browser metrics, eBPF events, GenAI provider/model access, Cilium service network traffic, and K8s entities. It also adds new filter expressions such as IN, NOT\_EQUAL, and LIKE, along with type cast functions like (str-\>long) and (str-\>int), enabling more complex metric aggregation and filtering rules in OAL scripts.
oap-server/oal-grammar · high confidence
New buffered data caching and concurrency model
The server introduces a new buffering architecture for metrics and TopN data to improve concurrency and aggregation. A new \ReadWriteSafeCache\ provides thread-safe, isolated read/write access by swapping between two underlying buffers, allowing concurrent reads while writes are in progress. This cache hosts two specific buffer implementations: \MergableBufferedData\, which combines metrics with identical IDs using their \combine\ method, and \LimitedSizeBufferedData\, which maintains a fixed-size TopN list grouped by entity ID and time bucket, discarding lower-value entries when the limit is reached. This change replaces previous aggregation and caching logic with a more structured, thread-aware approach.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/data · high confidence
New internal gRPC protocols for remote service communication and span storage
The server introduces two new Protocol Buffers definitions to handle internal data exchange. RemoteService.proto defines a gRPC service for cluster-wide remote calls, including a syncStatus RPC that allows querying the running status of the alarm subsystem across the cluster. SpanWrapper.proto defines a message structure for storing trace spans, introducing a Source enum that explicitly supports OTLP (OpenTelemetry Protocol) alongside existing SkyWalking and Zipkin sources, enabling native storage of OTLP traces.
oap-server/server-core/src/main/proto · high confidence
OAP startup scripts updated for version 11.0.0 with increased default memory and UI removal
The OAP backend startup scripts (startup.sh, startup.bat, and oapService variants) have been updated for version 11.0.0. The default maximum heap size for the OAP process has been increased to 4096M (from 512M on Windows and lower limits previously) to help avoid OutOfMemory errors. Additionally, the bundled web UI has been removed from the distribution; the startup scripts now launch only the OAP backend process, with comments directing users to the separate skywalking-horizon-ui project for the frontend.
dist-material/bin · high confidence
OAP version information is now exposed via logs and a new query
The OAP server now exposes its version details (build version and commit ID) through a new \Version\ enum and a Log4j pattern converter (\%swversion\). This allows the version to be displayed in startup messages and error logs, and supports a GraphQL query to retrieve the OAP version programmatically, replacing the previous build-time version format.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/version · high confidence
Rebuilt Elasticsearch client on top of Armeria REST API
The Elasticsearch storage client has been completely rewritten to use the Armeria HTTP client instead of the previous Java High-Level REST Client. This new implementation introduces a version-aware architecture that automatically selects the correct request factory and codec for Elasticsearch 6.x, 7.x (including 7.8+), 8.x, 9.x, and OpenSearch, ensuring compatibility with modern APIs like composable index templates and typeless documents. The update also adds support for mutual TLS (client certificate authentication) via configurable trust and key stores, exposes configurable response and socket timeouts, and introduces a new bulk processor with byte-size limits to optimize data persistence performance.
oap-server/server-library/library-elasticsearch-client · high confidence
Refactor OAP cluster communication with new RemoteClient architecture
The internal cluster communication layer has been refactored to use a new \RemoteClient\ interface and \RemoteClientManager\. This introduces a dedicated \Address\ model for server endpoints, a \SelfRemoteClient\ for local data aggregation (fixing self-observing metrics), and a \GRPCRemoteClient\ that utilizes a \BatchQueue\ for buffered, batched message sending. The manager now automatically refreshes connections based on cluster node queries and supports SSL context configuration, improving reliability and observability of inter-server data flow.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/remote/client · high confidence
Refactored core metrics classes and introduced new metric types
The core metrics analysis classes in the \oap-server/server-core\ module have been refactored to improve structure and performance. This change introduces new abstract metric classes including \ApdexMetrics\, \CPMMetrics\, \CountMetrics\, \HistogramMetrics\, \LabelAvgMetrics\, and \LabelCountMetrics\, alongside supporting data structures like \DataLabel\ and \DataTable\. The refactoring standardizes how metrics are combined, calculated, and stored, with specific attention to storage annotations for Elasticsearch and BanyanDB. Additionally, value holder interfaces (\IntValueHolder\, \LongValueHolder\, \DoubleValueHolder\, \LabeledValueHolder\) have been introduced to provide a consistent way to access metric values across different metric types.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics · high confidence
Refactored meter function storage and serialization to use DataTable and StorageID
The average-based meter functions (AvgFunction, AvgHistogramFunction, AvgHistogramPercentileFunction, and AvgLabeledFunction) have been refactored to replace primitive accumulation fields with \DataTable\ objects for storing summation, count, and value data. This change, combined with the adoption of the new \StorageID\ object for entity identification, ensures that metric data is correctly serialized and deserialized across storage backends like Elasticsearch and BanyanDB. For users, this resolves issues where meter metrics were reported incorrectly (such as the smallest finite bucket boundary being returned) and ensures that labeled and histogram percentile metrics are persisted and retrieved accurately.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/avg · high confidence
Refactored metrics pipeline to use BatchQueue with adaptive partitioning and separated OAL/MAL processing
The metrics processing pipeline in the OAP server has been refactored to replace the previous DataCarrier mechanism with a new BatchQueue-based architecture. This change introduces adaptive partitioning to the L1 aggregation and L2 persistence queues, ensuring that metrics of the same type are processed by the same thread to improve cache locality and reduce contention. The system now distinguishes between OAL (native SkyWalking) and MAL (meter/Prometheus) metrics, applying different partition weights to optimize resource usage for high-throughput OAL data versus lower-throughput MAL data. Additionally, new worker classes such as MetricsAggregateWorker, MetricsPersistentMinWorker, and ManagementStreamProcessor have been introduced to handle specific stages of the pipeline, including in-memory merging, minute-level persistence, and management data handling, while also exposing queue usage metrics for better observability.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/worker · high confidence
Refactored storage annotations and added foreign metric metadata support
The storage annotation package has been reorganized into dedicated holders for each backend: \BanyanDB\ (with \SeriesID\, \ShardingKey\, \IndexRule\, and \TimestampColumn\), \ElasticSearch\ (with \MatchQuery\, \Keyword\, and \EnableDocValues\), and \SQLDatabase\ (with \CompositeIndex\ and \AdditionalEntity\). The generic \Column\ annotation was updated to include \indexOnly\ and \LABELED\_VALUE\ support, while the \Storage\ class now explicitly exposes model name, time-relative ID, and downsampling settings. Additionally, a new \ForeignMetricMeta\ and \InspectQueryContext\ mechanism allows the admin inspect API to read metric values for metrics not locally defined by OAP, filling metadata gaps on a per-request basis.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/annotation · high confidence
Refactored storage model metadata and installation policy
The storage model layer has been restructured to centralize metadata and installation logic. New extension classes (BanyanDBExtension, ElasticSearchExtension, SQLDatabaseExtension) now hold storage-specific column and model settings, replacing scattered annotation-based configuration. The core Model and ModelColumn classes have been updated to include these extensions, along with new capabilities like BanyanDB trace model support (traceId/spanId columns) and boot-time reshape flags. A new ModelInstaller abstract class and StorageManipulationOpt policy system now govern schema installation, introducing strict modes for schema verification, peer-node reconciliation, and deferred DDL to the init node, ensuring consistent and safe schema evolution across different storage backends.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/model · high confidence
Refactored storage persistence layer with new DAO interfaces and batch processing
The OAP server's core storage module has been refactored to introduce a new set of specialized DAO interfaces (such as IBatchDAO, IMetricsDAO, and IRecordDAO) and a new StorageID object to replace the previous string-based ID system. This change introduces a structured batch persistence mechanism via the PersistenceTimer, which coordinates concurrent flush operations and ensures data integrity by waiting for storage acknowledgments before completing a round. Additionally, the module now exposes a StorageBuilderFactory to allow storage implementations to provide native data builders, and registers a comprehensive set of query and management services (including AI agent conversations, profiling, and metadata queries) within the StorageModule.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage · high confidence
Refactored worker instance management with hot-update support
The core worker module has been refactored to introduce a dedicated service layer for managing worker instances, enabling runtime rule hot-updates for MAL and LAL metrics. This change adds an abstract base worker class and a new service that handles registration, retrieval, and removal of workers. Crucially, the new service now supports removing worker registrations, which prevents duplicate-name errors and allows metrics to be re-registered during hot-update scenarios, fixing previous malfunctions in the alarm feature.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/worker · high confidence
Register Exporter module provider for service discovery
The exporter module is now registered with the framework's service loader mechanism, allowing the system to automatically discover and initialize the ExporterProvider. This enables the core infrastructure to load the exporter components required for sending telemetry data.
oap-server/exporter/src/main/resources · high confidence
Replace BanyanDB Java client with native implementation
The BanyanDB client library in the server-library module has been replaced with a new native Java implementation. This change introduces a complete rewrite of the client-side API, including new classes for building queries (AbstractQuery, MeasureQuery), handling write operations (AbstractWrite, MeasureWrite), and managing logical criteria (AbstractCriteria, And, Or). The new client supports gRPC communication with BanyanDB, including features like tag projections, field projections, aggregations, and ordering. It also includes support for TLS, authentication, and connection management through the Options class and ChannelManager.
oap-server/server-library/library-banyandb-client · high confidence
Runtime rule hot-update for MAL and LAL via dynamic layer overrides
Operators can now modify MAL and LAL rules at runtime without restarting the server. The server-core module introduces a new extension mechanism where disk-based rule definitions are merged with overrides from pluggable resolvers (such as the runtime-rule plugin) based on priority. This allows rules to be activated, deactivated, or updated dynamically via the REST API, with the system tracking original disk content to support delta-based updates and ensuring that purely runtime rules remain removable by operators.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/rule · high confidence
Unified DSL class naming, source attribution, and loader lifecycle management
The DSL compilation pipeline has been refactored to share a single, deterministic naming scheme and source-attribute model across OAL, MAL, LAL, and Hierarchy. Generated class names now consistently follow the \{sanitizedRuleFile}\L{line}\{hint}\ pattern, and source coordinates (file and line) are reliably resolved from YAML, ensuring stack traces and debugging output point to the correct rule location. A new \Catalog\ enum replaces string literals for rule types, and a dedicated \DSLClassLoaderManager\ now handles the creation, retirement, and garbage-collection monitoring of per-file class loaders, preventing silent memory leaks by detecting when retired loaders are not collected.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/dsl · high confidence
Unified gRPC metrics exporter with labeled metric support
The gRPC metrics exporter has been updated to unify metric value types and introduce support for labeled metrics. This change replaces the previous internal queue mechanism with a new BatchQueue implementation for the metrics pipeline and ensures that metrics carrying labels (LabeledValueHolder) are correctly serialized and exported alongside standard long and integer values, providing a consistent interface for downstream consumers.
oap-server/exporter/src/main/java/org/apache/skywalking/oap/server/exporter/provider/grpc · high confidence
Updated release documentation with current license and notice files
The release distribution now includes a comprehensive LICENSE file, a LICENSE.tpl template for generating subcomponent license lists, a NOTICE file with third-party attributions, and a README.txt. Additionally, individual license text files for dependencies such as H2, ANTLR4, ASM, Bouncy Castle, and others are included in the licenses directory to ensure full compliance and transparency for users.
dist-material/release-docs · high confidence
Watermark-based circuit breaking for gRPC requests
The server now monitors heap and direct memory usage to detect overload conditions. When memory thresholds are exceeded, a new watermark mechanism triggers circuit breaking, causing the gRPC interceptor to reject incoming requests with a RESOURCE\_EXHAUSTED status. This protects the system from further strain during high-load scenarios, and includes metrics to track break and recovery events for self-observability.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/watermark · high confidence
Test coverage
Add ActiveMQ monitoring E2E tests; Add e2e-protocol submodule for Java test service; Added LAL v2 feature-case tests for execution, variable handling, and source attribution; Added Nacos MySQL schema initialization script for tests; Added benchmark tests for EBPF profiling, OpenAPI endpoint grouping, and URI matching performance; Added integration and unit tests for the Consul configuration module; Added integration and unit tests for the gRPC remote client module; Added integration tests for ZooKeeper dynamic configuration; Added integration tests for the etcd cluster plugin; Added mock LLM server and Spring AI client for GenAI e2e testing; Added test SPI configuration for LAL V2 source type provider; Added test for gRPC connection failure handling; Added test resources for Zookeeper configuration module integration tests; Added test resources for etcd configuration module; Added test service provider configuration for LayerExtension; Added test service provider files for Nacos configuration module; Added tests for DSL rule loading, line attribution, and debug gate logic; Added tests for EndpointTraffic serialization and persistence; Added tests for Feishu webhook alarm integration; Added tests for HTTP alarm callback status handling; Added tests for LAL rule loading, layer registration, and input-type routing; Added tests for LimitedSizeBufferedData; Added tests for OpenAPI-based endpoint name grouping; Added tests for PagerDuty alarm hook callback; Added tests for ServerStatusService config dump masking and extension handling; Added tests for ServiceTraffic grouping logic; Added tests for URI endpoint grouping and quick-match performance; Added tests for WeChat webhook alarm notifications and recovery messages; Added tests for eBPF profiling analysis; Added tests for endpoint grouping rule reading and dynamic configuration watching; Added tests for remote service handlers and HTTP server; Added tests for storage concurrency, persistence timing, and ID handling; Added tests for the MAL v2 compiler and runtime behavior; Added tests for trace sampling policy and uninstrumented gateway configuration; Added unit and integration tests for the Nacos cluster plugin; Added unit tests for ConfigmapConfigurationWatcherRegister; Added unit tests for DingTalk alarm webhook integration; Added unit tests for HistogramFunction; Added unit tests for Kubernetes cluster plugin provider and coordinator; Added unit tests for LatestFunction and LatestLabeledFunction meter analysis; Added unit tests for MeterEntity and MeterSystem; Added unit tests for MetricsQueryUtil label value composition; Added unit tests for OAL expression matchers; Added unit tests for OAPNodeChecker cluster health validation; Added unit tests for StandaloneManager; Added unit tests for SumPerMin and SumPerMinLabeled meter functions; Added unit tests for Tag equality logic; Added unit tests for UI template serialization; Added unit tests for WeLink alarm hook callback; Added unit tests for WebhookCallback alarm and recovery handling; Added unit tests for Zookeeper configuration watcher registration; Added unit tests for average meter functions; Added unit tests for component library catalog and searchable traces tags watcher; Added unit tests for configuration watcher registers; Added unit tests for core analysis components; Added unit tests for core metrics calculation logic; Added unit tests for core module configuration and infrastructure; Added unit tests for gRPC configuration synchronization; Added unit tests for max and min meter functions; Added unit tests for meter processing and converter registry; Added unit tests for query service utilities and hierarchy logic; Added unit tests for relation metrics equality logic; Added unit tests for runtime rule hot-update and worker suspension logic; Added unit tests for storage model definitions and installer behavior; Added unit tests for sum-based meter functions; Added unit tests for the LAL v2 class generator and compiler; Added unit tests for the OAL V2 engine generator and model components; Added unit tests for the alarm plugin core and notification hooks; Added unit tests for the gRPC metric exporter; Added unit tests for trace analyzer processors and segment status logic; Added unit tests for trace profiling query and stack analysis; Added v2-only MAL DSL execution tests; Enable inline mocking for tests; New Java e2e-service-provider fixture for end-to-end testing; New e2e-mock-sender service for E2E testing infrastructure.
Dependencies
Introduce OAP Server BOM and modularize build artifacts
The build system now centralizes dependency management through a new \oap-server-bom\ module, which defines versions for core libraries such as GraphQL, Armeria, and SnakeYAML. This BOM is imported by the new \apm-dist\ module to assemble the final distribution package. Additionally, the project structure has been modularized with the introduction of \apm-protocol\ and \apm-network\ for shared protocol definitions, alongside new analyzer modules for AI pipelines, agent conversations, and event analysis.
(dependencies) · high confidence
Stabilized build environment with Maven Wrapper 3.1.0 and Maven 3.8.4
The project now uses the Maven Wrapper (version 3.1.0) to enforce a consistent build environment across all developers and CI systems. This change pins the underlying Apache Maven version to 3.8.4, ensuring that builds rely on a specific, tested version of the build tool rather than whatever is installed locally. This improves build reproducibility and performance while providing better native support for ARM architectures.
.mvn · high confidence
Update protocol submodule to commit 07882d5
The protocol definitions in this module have been updated by syncing the underlying git submodule to commit 07882d5. This change pulls in the latest protocol schema changes defined in the external submodule repository, ensuring that the network data structures and service definitions used by this component remain consistent with the upstream protocol version.
apm-protocol/apm-network/src/main · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 70 → 75 (+4.6)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 77 → 86 (+8.9)
- Architecture 100 → 98 (-1.6)
- Maturity 78 → 78 (-0.0)
- Readiness 67 → 68 (+0.9)
- Security 66 → 80 (+13.6)
Resolved (526)
- Coverage not included — suite not readable by the collector
- DSLClassLoaderManager.sweepInternal (cognitive 23) (oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/classloader/DSLClassLoaderManager.java)
- Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
- Duplicated block (10 lines × 2) (oap-server/analyzer/agent-analyzer/src/main/java/org/apache/skywalking/oap/server/analyzer/provider/trace/parser/listener/EndpointDepFromCrossThreadAnalysisListener.java)
- Duplicated block (10 lines × 2) (oap-server/analyzer/agent-analyzer/src/main/java/org/apache/skywalking/oap/server/analyzer/provider/trace/parser/listener/EndpointSourceBuilder.java)
- Duplicated block (10 lines × 2) (oap-server/analyzer/agent-analyzer/src/main/java/org/apache/skywalking/oap/server/analyzer/provider/trace/parser/listener/RPCTrafficSourceBuilder.java)
- Duplicated block (10 lines × 2) (oap-server/analyzer/log-analyzer/src/main/java/org/apache/skywalking/oap/log/analyzer/v2/compiler/LALClassGenerator.java)
- Duplicated block (10 lines × 2) (oap-server/exporter/src/main/java/org/apache/skywalking/oap/server/exporter/provider/kafka/log/KafkaLogExporter.java)
- Duplicated block (10 lines × 2) (oap-server/mqe-rt/src/main/java/org/apache/skywalking/mqe/rt/operation/LROp.java)
- Duplicated block (10 lines × 2) (oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/v2/generator/OALClassGeneratorV2.java)
- Duplicated block (10 lines × 2) (oap-server/server-admin/runtime-rule/src/main/java/org/apache/skywalking/oap/server/receiver/runtimerule/rest/RuntimeRuleService.java)
- Duplicated block (10 lines × 2) (oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/expr/rt/AlarmMQEVisitor.java)
- Duplicated block (10 lines × 2) (oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/MeterSystem.java)
- Duplicated block (10 lines × 2) (oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/avg/AvgHistogramFunction.java)
- Duplicated block (10 lines × 2) (oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/avg/AvgHistogramPercentileFunction.java)
- Duplicated block (10 lines × 2) (oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/avg/AvgLabeledFunction.java)
- Duplicated block (10 lines × 2) (oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/worker/MetricsAggregateWorker.java)
- Duplicated block (10 lines × 2) (oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/dsldebug/DslContentHash.java)
- Duplicated block (10 lines × 2) (oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/remote/client/RemoteClientManager.java)
- Duplicated block (10 lines × 2) (oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/CiliumServiceInstanceRelation.java)
- …and 506 more
New (1075)
- AbstractBanyanDBDAO.topNQueryDebuggable (cyclomatic 16) (oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/AbstractBanyanDBDAO.java)
- Analyzer.analyse (cognitive 29) (oap-server/analyzer/meter-analyzer/src/main/java/org/apache/skywalking/oap/meter/analyzer/v2/Analyzer.java)
- Analyzer.analyse (cyclomatic 23) (oap-server/analyzer/meter-analyzer/src/main/java/org/apache/skywalking/oap/meter/analyzer/v2/Analyzer.java)
- BanyanDBGenAIEvaluationRecordQueryDAO.queryGenAIEvaluationRecord (cognitive 37) (oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBGenAIEvaluationRecordQueryDAO.java)
- BanyanDBGenAIEvaluationRecordQueryDAO.queryGenAIEvaluationRecord (cyclomatic 29) (oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBGenAIEvaluationRecordQueryDAO.java)
- BanyanDBOTLPTraceQueryDAO.queryTraces (cognitive 27) (oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/trace/BanyanDBOTLPTraceQueryDAO.java)
- BanyanDBOTLPTraceQueryDAO.queryTraces (cyclomatic 19) (oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/trace/BanyanDBOTLPTraceQueryDAO.java)
- ClassTooLong: AccessLogServiceHandler (oap-server/server-receiver-plugin/skywalking-ebpf-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/ebpf/provider/handler/AccessLogServiceHandler.java)
- ClassTooLong: BanyanDBClient (oap-server/server-library/library-banyandb-client/src/main/java/org/apache/skywalking/library/banyandb/v1/client/BanyanDBClient.java)
- ClassTooLong: BanyanDBIndexInstaller (oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBIndexInstaller.java)
- ClassTooLong: DebuggingHTTPHandler (oap-server/server-admin/status/src/main/java/org/apache/skywalking/oap/server/admin/status/DebuggingHTTPHandler.java)
- ClassTooLong: LALValueCodegen (oap-server/analyzer/log-analyzer/src/main/java/org/apache/skywalking/oap/log/analyzer/v2/compiler/LALValueCodegen.java)
- ClassTooLong: MALClosureCodegen (oap-server/analyzer/meter-analyzer/src/main/java/org/apache/skywalking/oap/meter/analyzer/v2/compiler/MALClosureCodegen.java)
- ClassTooLong: MALScriptParser (oap-server/analyzer/meter-analyzer/src/main/java/org/apache/skywalking/oap/meter/analyzer/v2/compiler/MALScriptParser.java)
- ClassTooLong: MQEVisitorBase (oap-server/mqe-rt/src/main/java/org/apache/skywalking/mqe/rt/MQEVisitorBase.java)
- ClassTooLong: MetadataRegistry (oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/MetadataRegistry.java)
- ClassTooLong: PromQLApiHandler (oap-server/server-query-plugin/promql-plugin/src/main/java/org/apache/skywalking/oap/query/promql/handler/PromQLApiHandler.java)
- ClassTooLong: PromQLExprQueryVisitor (oap-server/server-query-plugin/promql-plugin/src/main/java/org/apache/skywalking/oap/query/promql/rt/PromQLExprQueryVisitor.java)
- ClassTooLong: RunningRule (oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/RunningRule.java)
- ClassTooLong: SampleFamily (oap-server/analyzer/meter-analyzer/src/main/java/org/apache/skywalking/oap/meter/analyzer/v2/dsl/SampleFamily.java)
- …and 1055 more
Changes since last survey
- 36 commits — 28 feature/other, 8 fixes
By area
- oap-server/analyzer — 11 commits
- docs/en — 8 commits
- test/e2e-v2 — 6 commits
- oap-server/server-library — 3 commits
- oap-server/server-storage-plugin — 3 commits
- oap-server/server-admin — 2 commits
- oap-server/server-core — 1 commit
- oap-server/server-query-plugin — 1 commit
- oap-server/server-receiver-plugin — 1 commit
Notable commits
- fix: Add ThreadPolicy.ioBound for blocking consumers, fix BatchQueue shutdown (#13979)
- fix: Fix APISIX monitoring guide configuration and metrics (#13976)
- fix: Fix JDBC reads missing the second day of a range shorter than a day that crosses midnight (#14061)
- fix: Fix LAL segmentId/spanId extractor statements; delete dead DSL code and correct the kernel's docs (#13973)
- fix: Fix a persistence round ending before the storage answered (#14060)
- fix: Fix filtering events by layer on the Elasticsearch storage (#14087)
- fix: Fix generated-class source attribution in MAL, LAL and OAL (#13971)
- fix: Fix the OTLP TraceQL search result types and the BanyanDB name catalogs' time bound (#14099)
- change: SWIP-16 Support LLM-as-Judge on Top of GenAI Observability (#13943)
- change: AI agent conversations: provider bodies in the view, and files over HTTP (#14084)
- change: Add AI agent conversations landed by the AI Sessionizer (#14057)
- change: Add BanyanDB trace tail sampling monitoring (#14052)
- change: Add OpenTelemetry-native host and process monitoring (#14051)
- change: Add Spring LDAP component definitions (#13984)
- change: Add a none provider to the ai-agent-conversation module (#14064)
- change: Adopt AI Sessionizer workspace changes and agent runtime metrics (#14063)
- change: Apply max request header size config to HTTP/2 as well (#14062)
- change: Bump the default BanyanDB compatible server API version (SW_STORAGE_BANYANDB_COMPATIBLE_SERVER_API_VERSIONS) from 0.10 to 0.11. (#13997)
- change: Drop runtime-rule's retired-IT dependencies and declare server-testing at test scope (#13977)
- change: Fail fast when the e2e docker targets run on a JDK older than 17 (#14072)
- …and 16 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
apache/skywalking was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 24 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 0a01d89d333ff08535b3630a38ef45fc0dcbca10 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-ae95d6cad036.