Top Related Projects
CNCF Jaeger, a Distributed Tracing Platform
Zipkin is a distributed tracing system
SeaTunnel is a next-generation super high-performance, distributed, massive data integration tool.
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:
-
Download the latest release from the official website.
-
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}
- Start the OAP server:
bin/oapService.sh
- Start the UI:
bin/webappService.sh
-
Access the SkyWalking UI at
http://localhost:8080
. -
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.
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.
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 {}
}
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 designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
Apache SkyWalking
SkyWalking: an APM (Application Performance Monitoring) system, especially designed for microservices, cloud native and container-based architectures.
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
- Find the SkyWalking live demo with native UI and Grafana, and screenshots on our website.
- Follow the showcase to set up a preview deployment quickly.
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
Top Related Projects
CNCF Jaeger, a Distributed Tracing Platform
Zipkin is a distributed tracing system
SeaTunnel is a next-generation super high-performance, distributed, massive data integration tool.
Grafana Tempo is a high volume, minimal dependency distributed tracing backend.
OpenTelemetry Collector
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot