Overview
SkyWalking is an open-source observability platform designed for collecting, analyzing, aggregating, and visualizing data from services and cloud-native infrastructure. It offers a streamlined approach to maintaining visibility across distributed systems, including those spanning cloud environments. As a modern Application Performance Monitoring (APM) solution, it is tailored for cloud-native, container-based architectures.
SkyWalking addresses the full spectrum of observability requirements in cloud-native ecosystems, including:
- Tracing: Supports native SkyWalking formats, as well as Zipkin v1 and v2 traces.
- Metrics: Compatible with multiple metric formats, including native, OpenTelemetry, and Telegraf. Integrates with service mesh platforms like Istio and Envoy, and can operate in metrics-only mode for enhanced performance.
- Logging: Collects logs from disk or over the network, with automatic correlation between traces and logs.
- Profiling: Provides code-level performence insights through built-in language agents or standalone eBPF agents.
- Events: Captures significant system occurrences (e.g., deployments, configuration changes) and correlates them with metrics, traces, and logs for root cause analysis.
Test Environment
This guide uses SkyWalking 10.2.0 (requires Java 11/17/21) and Easysearch 1.14.1 with Elasticsearch compatibility enabled.
Generating a Java Keystore
Import the Easysearch CA certificate (ca.crt) into a new Java keystore file (es_keystore.jks) to establish trust for SkyWalking. Replace the placeholder password in production environments.
keytool -import -v -trustcacerts -file ca.crt -keystore es_keystore.jks -keypass changeit -storepass changeit
Configuration Updates
Modify the config/application.yml file in the SkyWalking backend. While HTTP communication is straightforward, this example uses HTTPS, which is the default for Easysearch.
Copy the generated keystore to the SkyWalking home directory and update the storage section:
storage:
selector: ${SW_STORAGE:elasticsearch}
elasticsearch:
namespace: ${SW_NAMESPACE:""}
clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:es1.infini.cloud:9200}
protocol: ${SW_STORAGE_ES_HTTP_PROTOCOL:"https"}
connectTimeout: ${SW_STORAGE_ES_CONNECT_TIMEOUT:3000}
socketTimeout: ${SW_STORAGE_ES_SOCKET_TIMEOUT:30000}
responseTimeout: ${SW_STORAGE_ES_RESPONSE_TIMEOUT:15000}
numHttpClientThread: ${SW_STORAGE_ES_NUM_HTTP_CLIENT_THREAD:0}
user: ${SW_ES_USER:"admin"}
password: ${SW_ES_PASSWORD:"infiniyyds@2025"}
trustStorePath: ${SW_STORAGE_ES_SSL_JKS_PATH:"../es_keystore.jks"}
trustStorePass: ${SW_STORAGE_ES_SSL_JKS_PASS:"changeit"}
Note: The clusterNodes value should be a domain name resolvable via /etc/hosts on the SkyWalking host. Multiple nodes can be comma-separated.
Starting the Services
Ensure Easysearch is running before starting SkyWalking. Once both are operational, access the SkyWalking UI on port 8080. Successsful integration will result in the creation of several sw_* indices in Easysearch.