skywalking

apacheApache-2.0活跃维护

分布式系统的应用性能监控平台,支持链路追踪、指标采集和日志分析,帮你在微服务架构下快速定位性能瓶颈。

APM, Application Performance Monitoring System

v11.1.0发布于 2026-11-06 12:01 UTC24,996star +2 / 7 天6,628fork同步于 2026-11-10 05:21 UTC

怎么上手

由 README 提炼,执行前请确认
README 未说明
硬件要求按 README 说明

README 未说明

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

面向微服务与云原生架构的开源 APM 系统,提供分布式追踪、监控与诊断能力

分布式系统的应用性能监控平台,支持链路追踪、指标采集和日志分析,帮你在微服务架构下快速定位性能瓶颈。

核心能力

  • 端到端分布式追踪,提供服务拓扑分析与 API 仪表盘
  • 覆盖 Java、Go、Python、Rust 等多语言探针
  • 基于 eBPF 的 Rover 探针监控 K8s 并诊断 CPU 与网络
  • 兼容 Zipkin、OpenTelemetry、Prometheus、Zabbix 等生态
  • 内置 BanyanDB 可观测性数据库,单集群可采集百亿级遥测数据

容易踩的坑

README 未给出安装命令,需前往官方文档与 releases 页面下载发行版;编译项目需参考 docs/en/guides/How-to-build.md

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README
这个条目还没有人工点评。如果它对你很有用,欢迎到 提交仓库 页写下你的使用经验。

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    最近发版

    5 个版本v11.1.0
    1. v11.1.011.1.0 - Metrics and Topology from OTLP Traces最新正式版2026-11-06 · 2026-11-06 12:01 UTC
      Download

      https://skywalking.apache.org/downloads/

      Notice

      Don't download source codes from this page. Please follow build document, if you want to build source codes by yourself.

      Metrics and Topology from OTLP Traces

      Applications instrumented with the OpenTelemetry SDKs no longer need a SkyWalking agent for service dashboards, topology and trace search. OAP stores OTLP traces as they arrive, and the new Trace Analysis Language (TAL) turns every span into service, instance and endpoint metrics, a topology, and dashboards for the databases, caches and message queues the services call. Read OpenTelemetry Traces in SkyWalking for a one-command quick start with the OpenTelemetry Astronomy Shop.

      OTLP Service dashboard of the cart service

      Topology of the OTLP services

      Project
      • Update the e2e mock sender's OTLP proto to v1.11.1. A current OpenTelemetry Collector adds fields the old copy lacked, such as a metric's metadata, and the sender's strict JSON parser refused a recording that carries them. The Windows e2e now also replays such a recording, of windows_exporter 0.31.8 through OpenTelemetry Collector 0.158.0 taken on a GitHub-hosted Windows runner, and asserts its memory metrics.
      • Replace the GenAI e2e cases' Spring AI application with an in-repo e2e-spring-ai-service module pinned to the released Spring AI 2.0.1, and move the mock LLM endpoints out of e2e-service-provider into a dedicated e2e-mock-llm-server module that all three GenAI cases share. The Spring AI application was previously built at test time by cloning spring-projects/spring-ai-examples and running Maven inside the image build, which resolved spring-ai:2.0.0-SNAPSHOT: a line that has since been abandoned, whose surviving builds all predate the 2.0.0 GA by a day and whose older builds have been pruned, so the fixture was pinned to nothing released and could no longer be rebuilt from the same bytes. Both modules are built by the existing e2e reactor and published to ghcr.io/apache/skywalking alongside the other e2e service images; e2e-spring-ai-service needs Java 17 and Spring Boot 4, so it is gated behind a new jdk-17 profile in the e2e reactor and the jobs that build it now pin JDK 17 explicitly; make -C test docker refuses up front on an older JDK rather than packaging a missing or stale jar, since clean never reaches a module the profile excluded and compose would turn the absent jar into a directory.
      • Add the Envoy project's NOTICE to NOTICE and to the binary distribution's NOTICE, for the Envoy proto files SkyWalking bundles in receiver-proto.
      • The BanyanDB CA rotation e2e rotates the way an operator does: once the topology shows the consumer's calls to the provider, the OAP trusts the old and the new CA, BanyanDB reloads a certificate the new CA signed, and the OAP then trusts the new CA only, before the storage assertions run. Each step writes its file once, and the OAP's trust file is renamed into place, so the file monitor never reads it half-written. The rotation to an unrelated CA, which proves a rebuilt channel uses the trust file, moves to the end. It used to run first, and when the writes it fails included a network address alias's first write, the alias stayed out of storage until its next refresh five minutes later, so the topology assertions timed out.
      • The BanyanDB credentials rotation e2e waits for the topology to show the consumer's calls to the provider before it rotates, as the CA rotation e2e does. The incomplete credentials it applies fail the writes in that window, and when they included a network address alias
    2. v11.0.011.0.0 - Horizon Ready, Runtime Rule Hot-Update and Live DSL Debugger2026-08-28 · 2026-08-28 02:40 UTC
      查看更新说明
      Download

      https://skywalking.apache.org/downloads/

      Notice

      Don't download source codes from this page. Please follow build document, if you want to build source codes by yourself.

      Project
      • Move the DSL class-loading machinery under core/dsl. core/classloader held only DSL types — RuleClassLoader, DSLClassLoaderManager, ClassLoaderGc, UnloadProbePayload and BytecodeClassDefiner — so it is now core/dsl/classloader, and Catalog moves to core/dsl because a rule-file taxonomy is not a class-loading concern. Three copies of the "define a generated class into the right loader" dispatch (MAL, LAL, MeterSystem) collapse into a static BytecodeClassDefiner.define, which also gives the JDK 17 --add-opens rationale one home instead of four. Three of the four copies of the generated-class dump-directory lookup become DslGeneratedFileWriter.resolveClassDumpDir; OAL keeps its own, because its debug flag is settable independently of the environment variable and two tests rely on that. No behaviour change.
      • Extend the GET /inspect/entities admin API to inspect a metric persisted by any OAP, even one this node does not define locally. When the metric is unknown to the local registry, the caller supplies valueColumn + valueType and the storage backend resolves the physical index/table/group from its own running config (no DB schema/table-metadata read): ES uses the merged metrics-all index + metric_table discriminator, JDBC probes the node's function tables by the table_name discriminator, and BanyanDB synthesizes a read-only measure schema. Scope is no longer required — the entity_id is decoded structurally (service / 2nd-level / relations) with a generic name leaf. Locally-defined metrics keep the exact field names, scope, and mqeEntity as before.
      • Add the POST /inspect/values admin API — read the value series of a metric persisted by another OAP (one this node does not define locally) by supplying its {valueColumn, valueType}. The real MQE engine runs over a request-scoped InspectQueryContext overlay (provide-if-absent — the local catalog always wins) that makes the foreign metric look registered to every read path: ValueColumnMetadata resolves its value column / type / scope, and the storage location registries resolve where it lives (MetadataRegistry synthesizes a BanyanDB measure schema, IndexController resolves the ES metrics-all index, TableHelper probes the JDBC function tables), so the read returns the native MQE ExpressionResult with no per-DAO special-casing. Admin-only (a forced read this OAP cannot validate); not mirrored onto the public REST / GraphQL surface. See the Inspect API.
      • Remove the always-on alarm-to-event conversion (EventHookCallback). A triggered alarm is no longer synthesized into the events pipeline as an Alarm/AlarmRecovery event; events now originate only from real event sources (agents, SkyWalking CLI, Kubernetes Event Exporter). Alarms remain available through the alarm store (getAlarm/queryAlarms) and the configured alarm hooks. This drops a documented "Known Event" and removes 1-2 synthetic event records per alarm fire.
      • TLS for all OAP HTTP/REST servers, with cert hot-reload. Adds the restSSLEnabled / restSSLKeyPath / restSSLCertChainPath config structure to every OAP HTTP server — core REST, sharing-server, admin, PromQL, LogQL, TraceQL and Zipkin query/receiver — each with its own dedicated environment variables (SW_CORE_REST_SSL_*, SW_RECEIVER_SHARING_REST_SSL_*, SW_ADMIN_SERVER_REST_SSL_*, SW_PROMQL_REST_SSL_*, SW_LOGQL_REST_SSL_*, SW_TRACEQL_REST_SSL_*, SW_QUERY_ZIPKIN_REST_SSL_*, SW_RECEIVER_ZIPKIN_REST_SSL_*). The shared Armeria HTTPServer reloads the key pair from disk on rotation (via TlsProvider.ofScheduled) so refreshed cer
    3. v10.4.010.4.0 - GenAI Observability, Groovy-Free Runtime and Grafana Tempo Compatible2026-04-01 · 2026-04-01 12:51 UTC
      查看更新说明
      Download

      https://skywalking.apache.org/downloads/

      Notice

      Don't download source codes from this page. Please follow build document, if you want to build source codes by yourself.

      Project
      • Introduce OAL V2 engine:
        • Immutable AST models for thread safety and predictable behavior
        • Type-safe enums replacing string-based filter operators
        • Precise error location reporting with file, line, and column numbers
        • Clean separation between parsing and code generation phases
        • Enhanced testability with models that can be constructed without parsing
      • Introduce MAL/LAL/Hierarchy V2 engine — replace Groovy-based DSL runtime with ANTLR4 parser + Javassist bytecode generation:
        • Remove Groovy runtime dependency from OAP backend
        • Fail-fast compilation at startup — syntax and type errors are caught immediately instead of at first execution
        • Thread-safe generated classes with no ThreadLocal or shared mutable state
        • Immutable AST models for all three DSLs (MAL, LAL, Hierarchy rules)
        • Explicit context passing replaces Groovy binding/closure capture
        • v1 (Groovy) and v2 (ANTLR4+Javassist) cross-version checker validates behavioral equivalence across 1,290+ expressions
        • JMH benchmarks confirm v2 runtime speedups: MAL execute ~6.8x, LAL compile ~39x / execute ~2.8x, Hierarchy execute ~2.6x faster than Groovy v1
        • Generated class names follow {yamlFileName}_L{lineNo}_{ruleName} pattern for all DSLs (MAL/LAL/Hierarchy) for stack trace traceability
      • Breaking Change — LAL: remove slowSql {} and sampledTrace {} sub-DSLs from the grammar. These are replaced by the configurable outputType mechanism:
        • Set outputType at the rule level in YAML config to specify the output entity class. Use the short name registered by LALOutputBuilder SPI (e.g., outputType: SlowSQL, outputType: SampledTrace), or a fully qualified class name as fallback.
        • LALOutputBuilder implementations are discovered via ServiceLoader and expose a name() method for short name resolution. Built-in types: SlowSQL (DatabaseSlowStatementBuilder), SampledTrace (SampledTraceBuilder).
        • Output fields (e.g., id, statement, latency) are now regular field assignments in the extractor block, no longer wrapped in sub-DSL blocks.
        • Custom output fields are validated against the output type's setters at compile time.
        • An explicit sink {} block is now required for data to be persisted. Without sink {}, no data is saved — this applies to all LAL rules including those using outputType. In v1, slowSql {} and sampledTrace {} dispatched data as a side-effect inside the extractor; in v2, persistence is always handled by the sink pipeline.
        • Output type resolution order: per-rule YAML outputType (short name via SPI or FQCN) > LALSourceTypeProvider SPI default > Log.class.
        • All bundled LAL scripts (mysql-slowsql.yaml, pgsql-slowsql.yaml, redis-slowsql.yaml, envoy-als.yaml, k8s-service.yaml, mesh-dp.yaml) have been updated.
        • Users with custom LAL scripts using slowSql {} or sampledTrace {} must migrate to the new syntax. See LAL documentation.
        • Rename ExtractorSpec to MetricExtractor — now only handles LAL metrics {} blocks. Standard field setters (service, layer, timestamp, etc.) are compiled as direct setter calls on the output builder.
        • Add def local variable support in LAL extractor (and filter level). Supports toJson() and toJsonArray() built-in functions for converting strings, Maps, and protobuf Struct to Gson JSON objects. Variables support null-safe navigation (?.), method chaining with compile-time type inference, and explicit type cast via as (built-in types or fully qualified class names, e.g., `def resp = parsed?.response as io.envoyproxy.envoy.data.acc
    4. v10.3.010.3.0 - New Trace Model in BanyanDB2025-11-10 · 2025-11-10 11:40 UTC
      查看更新说明
      Download

      https://skywalking.apache.org/downloads/

      Notice

      Don't download source codes from this page. Please follow build document, if you want to build source codes by yourself.

      BanyanDB Storage Option is large-scale ready

      BanyanDB is a native-built SkyWalking database that focuses entirely on SkyWalking use cases. BanyanDB demonstrates significant potential in improving performance and optimizing resource utilization. In typical deployment scenarios involving around 200 services and 200+ calls per second, a cluster configured with 2 liaison nodes and 2 data nodes—each equipped with 4 vCPUs and 8 GB memory—delivers stable and efficient performance. BanyanDB also supports full tracing sampling, providing trace collection capabilities up to 100%, ensuring comprehensive observability without compromising system stability.

      New Trace Model in BanyanDB

      Optimized the Trace model implementation for BanyanDB 0.9.0, significantly reducing query frequency between OAP and BanyanDB. Introduced new query views based on the latest query features, greatly reducing page latency.

      Project
      • Bump up BanyanDB dependency version(server and java-client) to 0.9.0.
      • Fix CVE-2025-54057, restrict and validate url for widgets.
      • Fix MetricsPersistentWorker, remove DataCarrier queue from Hour/Day dimensions metrics persistent process. This is important to reduce memory cost and Hour/Day dimensions metrics persistent latency.
      • [Break Change] BanyanDB: support new Trace model.
      OAP Server
      • Implement self-monitoring for BanyanDB via OAP Server.
      • BanyanDB: Support hot/warm/cold stages configuration.
      • Fix query continues profiling policies error when the policy is already in the cache.
      • Support hot/warm/cold stages TTL query in the status API and graphQL API.
      • PromQL Service: traffic query support limit and regex match.
      • Fix an edge case of HashCodeSelector(Integer#MIN_VALUE causes ArrayIndexOutOfBoundsException).
      • Support Flink monitoring.
      • BanyanDB: Support @ShardingKey for Measure tags.
      • BanyanDB: Support cold stage data query for metrics/traces/logs.
      • Increase the idle check interval of the message queue to 200ms to reduce CPU usage under low load conditions.
      • Limit max attempts of DNS resolution of Istio ServiceEntry to 3, and do not wait for first resolution result in case the DNS is not resolvable at all.
      • Support analysis waypoint metrics in Envoy ALS receiver.
      • Add Ztunnel component in the topology.
      • [Break Change] Change componentId to componentIds in the K8SServiceRelation Scope.
      • Adapt the mesh metrics if detect the ambient mesh in the eBPF access log receiver.
      • Add JSON format support for the /debugging/config/dump status API.
      • Enhance status APIs to support multiple accept header values, e.g. Accept: application/json; charset=utf-8.
      • Storage: separate SpanAttachedEventRecord for SkyWalking trace and Zipkin trace.
      • [Break Change]BanyanDB: Setup new Group policy.
      • Bump up commons-beanutils to 1.11.0.
      • Refactor: simplify the Accept http header process.
      • [Break Change]Storage: Move event from metrics to records.
      • Remove string limitation in Jackson deserializer for ElasticSearch client.
      • Fix disable.oal does not work.
      • Enhance the stability of e2e PHP tests and update the PHP agent version.
      • Add component ID for the dameng JDBC driver.
      • BanyanDB: Support custom TopN pre-aggregation rules configuration in file bydb-topn.yml.
      • refactor: implement OTEL handler with SPI for extensibility.
      • chore: add toString implementa
    5. v10.2.010.2.0 - No H2, More BanyanDB2025-03-24 · 2025-03-24 11:52 UTC
      查看更新说明
      Download

      https://skywalking.apache.org/downloads/

      Notice

      Don't download source codes from this page. Please follow build document, if you want to build source codes by yourself.

      No H2, More BanyanDB

      • Add BanyanDB 0.8.0 support.
      • H2 storage option is removed permanently.
      Project
      • Add doc_values for fields that need to be sorted or aggregated in Elasticsearch, and disable all others.
        • This change would not impact the existing deployment and its feature for our official release users.
        • Warning If there are custom query plugins for our Elasticsearch indices, this change could break them as sort queries and aggregation queries which used the unexpected fields are being blocked.
      • [Breaking Change] Rename debugging-query module to status-query module. Relative exposed APIs are UNCHANGED.
      • [Breaking Change] All jars of the skywalking-oap-server are no longer published through maven central. We will only publish the source tar and binary tar to the website download page, and docker images to docker hub.
        • Warning If you are using the skywalking-oap-server as a dependency in your project, you need to download the source tar from the website and publish them to your private maven repository.
      • [Breaking Change] Remove H2 as storage option permanently. BanyanDB 0.8(OAP 10.2 required) is easy, stable and production-ready. Don't need H2 as default storage anymore.
      • [Breaking Change] Bump up BanyanDB server version to 0.8.0. This version is not compatible with the previous versions. Please upgrade the BanyanDB server to 0.8.0 before upgrading OAP to 10.2.0.
      • Bump up nodejs to v22.14.0 for the latest UI(booster-ui) compiling.
      • Migrate tj-actions/changed-files to dorny/paths-filter.
      OAP Server
      • Skip processing OTLP metrics data points with flag FLAG_NO_RECORDED_VALUE, which causes exceptional result.
      • Add self observability metrics for GraphQL query, graphql_query_latency.
      • Reduce the count of process index and adding time range when query process index.
      • Bump up Apache commons-io to 2.17.0.
      • Polish eBPF so11y metrics and add error count for query metrics.
      • Support query endpoint list with duration parameter(optional).
      • Change the endpoint_traffic to updatable for the additional column last_ping.
      • Add Component ID(5023) for the GoZero framework.
      • Support Kong monitoring.
      • Support adding additional attr[0-5] for service/endpoint level metrics.
      • Support async-profiler feature for performance analysis.
      • Add metrics value owner for metrics topN query result.
      • Add naming control for EndpointDependencyBuilder.
      • The index type BanyanDB.IndexRule.IndexType#TREE is removed. All indices are using IndexType#INVERTED now.
      • Add max query size settings to BanyanDB.
      • Fix "BanyanDBTraceQueryDAO.queryBasicTraces" doesn't support querying by "trace_id".
      • Polish mesh data dispatcher: don't generate Instance/Endpoint metrics if they are empty.
      • Adapt the new metadata standardization in Istio 1.24.
      • Bump up netty to 4.1.115, grpc to 1.68.1, boringssl to 2.0.69.
      • BanyanDB: Support update the Group settings when OAP starting.
      • BanyanDB: Introduce index mode and refactor banyandb group settings.
      • BanyanDB: Introduce the new Progressive TTL feature.
      • BanyanDB: Support update the Schema when OAP starting.
      • BanyanDB: Speed up OAP booting while initializing BanyanDB.
      • BanyanDB: Support @EnableSort on the column to enable sorting for IndexRule and set the default to false.
      • Support Get Effective TTL Configurations API.
      • Fix ServerStatusService.statusWatchers concurrent modification.
      • Add protection for dynamic config change propagate chain.
      • Add Ruby component IDs(HttpClient=2, Redis=7, Memcached=20, Elasticsea

    README 原文

    未翻译

    Apache SkyWalking

    SkyWalking: an APM (Application Performance Monitoring) system, especially designed for microservices, cloud native and container-based architectures.

    GitHub stars X Follow

    GitHub Release

    Abstract

    SkyWalking is an open-source APM system that provides monitoring, tracing and diagnosing capabilities for distributed systems in Cloud Native architectures.

    • Distributed Tracing
      • End-to-end distributed tracing. Service topology analysis, service-centric observability and APIs dashboards.
    • Agents for your stack
      • Java, .Net Core, PHP, NodeJS, Golang, Lua, Rust, C++, Client JavaScript and Python agents with active development and maintenance.
    • eBPF early adoption
      • Rover agent works as a monitor and profiler powered by eBPF to monitor Kubernetes deployments and diagnose CPU and network performance.
    • Scaling
      • 100+ billion telemetry data could be collected and analyzed from one SkyWalking cluster.
    • Mature Telemetry Ecosystems Supported
      • Metrics, Traces, and Logs from mature ecosystems are supported, e.g. Zipkin, OpenTelemetry, Prometheus, Zabbix, Fluentd
    • Native APM Database
      • BanyanDB, an observability database, created in 2022, aims to ingest, analyze and store telemetry/observability data.
    • Consistent Metrics Aggregation
      • SkyWalking native meter format and widely known metrics format (OpenTelemetry, Telegraf, Zabbix, e.g.) are processed through the same script pipeline.
    • Log Management Pipeline
      • Support log formatting, extract metrics, various sampling policies through script pipeline in high performance.
    • Alerting and Telemetry Pipelines
      • Support service-centric, deployment-centric, API-centric alarm rule setting. Support forwarding alarms and all telemetry data to 3rd party.
    • AI Power Enabled
      • Machine Learning (ML) and Artificial Intelligence (AI) analyze observability data to identify patterns and enhance capabilities, such as recognizing HTTP URI patterns and automatically calculating metric baselines for intelligent alerting, improving anomaly detection.

    Live Demo

    Documentation

    Downloads

    Please head to the releases page to download a release of Apache SkyWalking.

    Compiling project

    Follow this document.

    Code of conduct

    This project adheres to the Contributor Covenant code of conduct. By participating, you are expected to uphold this code. Please follow the REPORTING GUIDELINES to report unacceptable behavior.

    Contact Us

    Our Users

    Hundreds of companies and organizations use SkyWalking for research, production, and commercial purposes. Visit our website to find the user page.

    License

    Apache 2.0 License.