概述
SkyWalking 是一個開源的可觀測性平臺,用于收集、分析、聚合和可視化服務和云原生基礎設施的數據。SkyWalking 提供了一種簡單的方法,即使在云之間也能保持對分布式系統的清晰視圖。它是一個現代的 APM,專門為云原生、基于容器的分布式系統設計。
SkyWalking 涵蓋了云原生世界中所有的可觀測性需求,包括:
- Tracing: SkyWalking 原生數據格式,以及 v1 和 v2 格式的 Zipkin 跟蹤都得到支持。
- Metrics: SkyWalking 支持成熟的指標格式,包括原生計量格式、OTEL 指標格式和 Telegraf 格式。SkyWalking 與服務網格平臺(通常為 Istio 和 Envoy)集成,將可觀測性構建到數據平面或控制平面。此外,SkyWalking 原生代理可以在指標模式下運行,從而顯著提升性能。
- Logging: 包括從磁盤收集或通過網絡收集的日志。原生代理可以自動將追蹤上下文與日志綁定,或使用 SkyWalking 通過文本內容綁定追蹤和日志。
- Profiling: Profiling 是一種強大的工具,幫助開發者從代碼行角度理解應用程序的性能。SkyWalking 提供了內置于原生語言代理和獨立的 eBPF 代理的剖析功能。
- Event: 事件是一種特殊類型的數據,用于記錄系統中的重要時刻,例如版本升級、配置變更等。將事件與指標關聯有助于解釋指標中的峰值或谷值,將事件與追蹤和日志關聯有助于排查根本原因。
更詳細的信息請大家移步 Skywalking 官方網站。
需求
本篇使用的 Skywalking 版本是 10.2.0 ,需要 Java 11/17/21。
Easyearch 使用的版本是 1.14.1,需要開啟 Elastic 兼容模式,具體操作參考文檔。
生成 Java 密鑰庫文件
使用如下命令將 Easysearch 的 CA 證書(ca.crt)導入到一個新的 Java 密鑰庫文件(es_keystore.jks)中,以便 SkyWalking 能夠信任由該 CA 頒發的所有證書。生產環境中使用請替換命令中的密碼。
keytool -import -v -trustcacerts -file ca.crt -keystore es_keystore.jks -keypass changeit -storepass changeit
application.yml
SkyWalking 后端服務配置文件為 config/application.yml,這也是與 Easyearch 集成時需要修改的文件。Skywalking 與 Easyearch 集成有兩種通信方式:http 或 https。http 方式非常簡單,本篇采用 https 方式,這也是 Easysearch 初始化后默認對外服務的協議。
拷貝上面生成的密鑰庫文件到 Skywalking 的 home 目錄下,修改 application.yml 的 storage 部分
storage:selector: ${SW_STORAGE:elasticsearch}banyandb: # Since 10.2.0, the banyandb configuration is separated to an independent configuration file: `bydb.yaml`.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"}
注意 clusterNodes 配置的是域名,需要在 Skywalking 的主機上用 /etc/hosts 解析成具體的地址,如果有多個 Easysearch 節點,可以用逗號分隔。
啟動
確保 Easysearch 啟動完畢后,再啟動 Skywalking。正常啟動完成后,可訪問 Skywalking 前端服務,默認端口 8080。
Easysearch 中也創建很多 Skywalking 的索引。
OK,服務集成就到此完畢,后續我們將演示應用的 APM 內容。