Convert Figma logo to code with AI

apache logoskywalking

APM, Application Performance Monitoring System

23,791
6,515
23,791
63

Top Related Projects

20,309

CNCF Jaeger, a Distributed Tracing Platform

16,970

Zipkin is a distributed tracing system

SeaTunnel is a next-generation super high-performance, distributed, massive data integration tool.

3,954

Grafana Tempo is a high volume, minimal dependency distributed tracing backend.

OpenTelemetry Collector

Quick Overview

Apache SkyWalking is an open-source application performance monitoring (APM) system designed for cloud-native architectures. It provides distributed tracing, service mesh telemetry analysis, metric aggregation, and visualization capabilities for modern complex systems, including microservices, cloud native, and container-based applications.

Pros

  • Comprehensive monitoring solution with support for various languages and frameworks
  • Powerful visualization and analysis tools for complex distributed systems
  • Low overhead and high performance due to its efficient design
  • Active community and regular updates

Cons

  • Steep learning curve for newcomers due to its extensive features
  • Configuration can be complex for large-scale deployments
  • Limited support for some legacy systems and technologies
  • Resource-intensive for very large deployments

Getting Started

To get started with Apache SkyWalking, follow these steps:

  1. Download the latest release from the official website.

  2. Extract the files and configure the config/application.yml file:

storage:
  selector: ${SW_STORAGE:h2}
  h2:
    driver: ${SW_STORAGE_H2_DRIVER:org.h2.jdbcx.JdbcDataSource}
    url: ${SW_STORAGE_H2_URL:jdbc:h2:mem:skywalking-oap-db}
    user: ${SW_STORAGE_H2_USER:sa}
  1. Start the OAP server:
bin/oapService.sh
  1. Start the UI:
bin/webappService.sh
  1. Access the SkyWalking UI at http://localhost:8080.

  2. Instrument your application using the appropriate agent for your programming language and framework. For example, for a Java application, add the following JVM argument:

-javaagent:/path/to/skywalking-agent.jar

For more detailed instructions and configuration options, refer to the official documentation.

Competitor Comparisons

Pros of apm-server

  • Tightly integrated with Elasticsearch and Kibana for seamless data analysis
  • Supports a wide range of programming languages and frameworks
  • Offers detailed performance metrics and distributed tracing capabilities

Cons of apm-server

  • Requires Elasticsearch as a backend, which can be resource-intensive
  • Less flexible in terms of storage options compared to SkyWalking
  • Steeper learning curve for users not familiar with the Elastic Stack

Code Comparison

SkyWalking (Java agent configuration):

-javaagent:/path/to/skywalking-agent.jar
-Dskywalking.agent.service_name=my-service
-Dskywalking.collector.backend_service=localhost:11800

apm-server (Node.js agent configuration):

const apm = require('elastic-apm-node').start({
  serviceName: 'my-service',
  serverUrl: 'http://localhost:8200'
})

Both projects offer easy-to-use agent configurations, but SkyWalking uses JVM arguments for Java applications, while apm-server provides a Node.js module for instrumentation.

SkyWalking offers more flexibility in terms of backend storage options and supports multiple observability scenarios. apm-server, on the other hand, excels in its integration with the Elastic Stack, providing a powerful solution for users already invested in the Elasticsearch ecosystem.

20,309

CNCF Jaeger, a Distributed Tracing Platform

Pros of Jaeger

  • Simpler architecture and easier initial setup
  • Strong support for OpenTelemetry standards
  • More extensive language support for instrumentation libraries

Cons of Jaeger

  • Less comprehensive in terms of overall observability features
  • Limited built-in alerting and service mesh capabilities
  • Fewer visualization options compared to SkyWalking's UI

Code Comparison

Jaeger (Go):

tracer, closer := jaeger.NewTracer(
    "service-name",
    jaeger.NewConstSampler(true),
    jaeger.NewInMemoryReporter(),
)
defer closer.Close()
opentracing.SetGlobalTracer(tracer)

SkyWalking (Java):

agent.service_name=${SW_AGENT_NAME:Your_ApplicationName}
collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:127.0.0.1:11800}

Both Jaeger and SkyWalking are powerful distributed tracing systems, but they have different strengths. Jaeger excels in simplicity and OpenTelemetry support, making it easier to adopt in projects already using OpenTelemetry. It also offers broader language support for instrumentation.

SkyWalking, on the other hand, provides a more comprehensive observability solution with additional features like service mesh observability, alerting, and a feature-rich UI. It may be more suitable for larger, complex environments where extensive monitoring and analysis capabilities are required.

The code examples show the difference in setup complexity, with Jaeger requiring more code for initial configuration, while SkyWalking's agent is typically configured through properties or environment variables.

16,970

Zipkin is a distributed tracing system

Pros of Zipkin

  • Simpler architecture and easier to set up for smaller projects
  • Strong focus on distributed tracing with a lightweight footprint
  • Extensive language support with official libraries for many programming languages

Cons of Zipkin

  • Limited functionality beyond distributed tracing
  • Less comprehensive monitoring and observability features
  • Smaller ecosystem and community compared to SkyWalking

Code Comparison

SkyWalking (Java agent configuration):

-javaagent:/path/to/skywalking-agent.jar
-Dskywalking.agent.service_name=your-service-name
-Dskywalking.collector.backend_service=oap-server:11800

Zipkin (Spring Boot integration):

@Bean
public Sender sender() {
    return OkHttpSender.create("http://zipkin-server:9411/api/v2/spans");
}

@Bean
public Tracing tracing(Sender sender) {
    return Tracing.newBuilder()
        .localServiceName("your-service-name")
        .spanReporter(AsyncReporter.create(sender))
        .build();
}

Both SkyWalking and Zipkin are popular open-source distributed tracing systems, but they differ in scope and features. SkyWalking offers a more comprehensive observability platform with APM, metrics, and logging capabilities, while Zipkin focuses primarily on distributed tracing. The code examples demonstrate the different approaches to instrumentation and configuration in each system.

SeaTunnel is a next-generation super high-performance, distributed, massive data integration tool.

Pros of SeaTunnel

  • Focused on data integration and ETL processes, offering a more specialized solution for data pipeline management
  • Supports a wide range of data sources and sinks, providing greater flexibility for data processing tasks
  • Simpler configuration and deployment process, making it easier for users to set up and manage data pipelines

Cons of SeaTunnel

  • Less comprehensive observability features compared to SkyWalking's full-stack monitoring capabilities
  • Smaller community and ecosystem, potentially resulting in fewer resources and third-party integrations
  • Limited to data processing tasks, lacking the broader application performance monitoring features of SkyWalking

Code Comparison

SkyWalking (Java agent configuration):

-javaagent:/path/to/skywalking-agent.jar
-Dskywalking.agent.service_name=your-service-name
-Dskywalking.collector.backend_service=localhost:11800

SeaTunnel (Configuration example):

env {
  execution.parallelism = 1
  job.mode = "BATCH"
}

source {
  Fake {
    result_table_name = "fake"
    row.num = 16
    schema {
      fields {
        name = "string"
        age = "int"
      }
    }
  }
}

sink {
  Console {}
}
3,954

Grafana Tempo is a high volume, minimal dependency distributed tracing backend.

Pros of Tempo

  • Designed specifically for distributed tracing, offering a more focused and streamlined approach
  • Seamless integration with other Grafana observability tools like Loki and Prometheus
  • Supports multiple backend storage options, including object storage for cost-effective scalability

Cons of Tempo

  • Less comprehensive feature set compared to SkyWalking's full-stack observability platform
  • Newer project with a smaller community and ecosystem
  • Limited built-in visualization capabilities, relying more on Grafana for data presentation

Code Comparison

SkyWalking (Java agent configuration):

agent.service_name=${SW_AGENT_NAME:Your_ApplicationName}
collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:127.0.0.1:11800}

Tempo (Docker Compose configuration):

tempo:
  image: grafana/tempo:latest
  command: ["-config.file=/etc/tempo.yaml"]
  volumes:
    - ./tempo.yaml:/etc/tempo.yaml

Both projects use configuration files, but SkyWalking's agent setup is more Java-centric, while Tempo's configuration is more container-oriented. SkyWalking provides more out-of-the-box features for application performance monitoring, while Tempo focuses on distributed tracing and integrates well with the Grafana ecosystem.

OpenTelemetry Collector

Pros of OpenTelemetry Collector

  • Vendor-agnostic and highly extensible, supporting multiple data formats and backends
  • Strong community support and wide industry adoption
  • Designed for high performance and scalability

Cons of OpenTelemetry Collector

  • Steeper learning curve due to its modular architecture
  • Requires more configuration and setup compared to SkyWalking's out-of-the-box experience

Code Comparison

SkyWalking (Java agent configuration):

-javaagent:/path/to/skywalking-agent.jar
-Dskywalking.agent.service_name=your-service-name
-Dskywalking.collector.backend_service=oap-server:11800

OpenTelemetry Collector (YAML configuration):

receivers:
  otlp:
    protocols:
      grpc:
exporters:
  prometheus:
    endpoint: "0.0.0.0:8889"
service:
  pipelines:
    metrics:
      receivers: [otlp]
      exporters: [prometheus]

Both projects aim to provide observability solutions, but OpenTelemetry Collector focuses on being a vendor-neutral data collection and processing pipeline, while SkyWalking offers a more integrated APM solution. OpenTelemetry Collector's flexibility comes at the cost of increased complexity, whereas SkyWalking provides a more streamlined experience for specific use cases.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

Apache SkyWalking

Sky Walking logo

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

GitHub stars Twitter Follow

Maven Central

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.

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

  • Mail list: dev@skywalking.apache.org. Mail to dev-subscribe@skywalking.apache.org, follow the reply to subscribe the mail list.
  • Send Request to join SkyWalking slack mail to the mail list(dev@skywalking.apache.org), we will invite you in.
  • For Chinese speaker, send [CN] Request to join SkyWalking slack mail to the mail list(dev@skywalking.apache.org), we will invite you in.
  • Twitter, ASFSkyWalking
  • bilibili B站 视频
  • 掘金

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.