Apache SkyWalking
Apache SkyWalking 是一款非常優秀的應用性能監控(APM)工具,對微服務、雲原生和容器化應用提供自動化、高性能的監控方案。項目于 2015 年建立,并于 2017 年 12 月進入 Apache 孵化器,目前已經是Apache的頂級項目。
Apache SkyWalking 提供了分布式追蹤,服務網格(Service Mesh)遙感資料分析,名額聚合和可視化等多種能力。項目覆寫範圍,從一個單純的分布式追蹤系統,擴充為一個可觀測性分析平台(observability analysis platform)和應用性能監控管理系統。它包括以下主要功能:
- 基于分布式追蹤的 APM 系統。滿足 100%分布式追蹤和資料采集,同時對被監控系統造成極小的壓力
- 雲原生友好。支援通過以 Istio 和 Envoy 為核心的 Service Mesh 來觀測和監控分布式系統
- 多語言自動探針,包括 Java,.NET,NodeJS,Python
- 包含展示 Trace,名額和拓撲圖在内的可視化界面
SLS Trace
SLS Trace方案完全相容可觀察性資料标準:OpenTelemetry,為客戶提供Trace資料的存儲、分析、展示等功能,此外SLS Trace也支援其他Trace方案(例如Jaeger、Zipkin、SkyWalking等)資料的接入。SLS Trace方案的主要功能特點如下:
- 支援多種接入方式,SLS本身支援以OpenTelemetry、Jaeger、Zipkin等協定直接寫入,接入包括10+種語言,多種現有平台,支援公網、阿裡雲内網、全球加速等接入網絡。
- 内部存儲、分析、展示等資料格式均遵循OpenTelemetry Trace 1.0标準規範,符合雲原生、微服務背景下的Trace格式需求。
- 高性能,支援日PB級資料接入,提供預計算能力,提取名額并進行依賴分析,具備支撐海量場景下Trace資料100%采樣的能力。
- 彈性:可任意設定日志存儲周期,Logstore容量可動态伸縮以滿足業務增長需求。
- 具備豐富的Trace功能,包括Trace詳情展示、服務概覽、Trace查詢統計、依賴分析等,同時提供自定義分析(SQL分析方式)的功能,滿足各類特性化需求。
- 下遊生态友好,SLS的Trace資料以及計算後的名額資料等都支援對各類接流計算、離線計算引擎,并支援自定義訂閱資料進行定制化的處理。
- 提供多種内置的AIOps算法,自動分析Trace對于性能、錯誤率的影響,幫助開發者在複雜環境下快速排查問題的根因
當SkyWalking結合SLS
Apache SkyWalking總體共分為Agent,後端和存儲三部分:
- Agent和應用綁定在一起,随應用啟動而啟動,這個不需運維人員過多的關心
- 後端和存儲則重度依賴運維人員,需要根據業務的規模和資料量決定該部署多大規模的後端和存儲叢集。特别地,當某個業務因某個活動出現追蹤資料流量激增下,後端很大可能會因為當時評估的量不夠進而導緻因處理能力不夠,也可能出現存儲能力不夠而造成追蹤資料丢失的問題。
SLS Trace已經支援Apache SkyWalking Agent端直接接入SLS Trace服務。運維人員可以直接将已經接入Apache SkyWalking的應用的Agent端直接接入到SLS Trace服務(下文會有詳細說明)而不需要考慮規模和部署的問題。接入SLS Trace的優勢有:
- 彈性:彈性是SLS的一大特點,在面對激增流量方面使得SLS Trace具有天然的優勢。
- 高性能:SLS提供了相比ES更優的查詢性能,支援每天PB級的資料接入,十億、百億級别的查詢在秒級即可傳回。
- 穩定性:SLS的資料全部使用3副本存儲,提供99.9%的可用性以及十一個9的資料可靠性。
- 免運維:SLS提供了開箱即用的SkyWalking Trace接入服務,SLS本身是雲服務,無需運維伺服器和後端應用。
使用SLS Trace服務接入Apache SkyWalking資料
架構解析
1. SLS Trace接入配置
建立Project
- 登陸 SLS控制台 ,點選建立Project按鈕
- 根據實際情況填寫Project名稱和歸屬地域
建立SLS Trace執行個體
- 點選建立Trace執行個體
3. 根據實際情況填寫Trace執行個體名稱,項目Project選擇剛建立的Project
SLS SkyWalking資料接入配置
- 進入配置頁後,點選選擇上一節建立的Project和Logstore。注意:Logstore的名字為<INSTANCE>_traces。舉個例子,建立的Trace執行個體為qs-trace-test,那麼存放trace的logstore名字為qs-trace-test_traces。
- 建立機器組
- 如果您已有可用的機器組,請單擊使用現有機器組。
- 如果您還沒有可用的機器組,請執行以下操作(以ECS為例)。
- 在ECS頁簽中,選中目标ECS執行個體,單擊立即執行。更多資訊,請參見 安裝Logtail(ECS執行個體) 。
- 如果是自建叢集、其他雲廠商伺服器,需要手動安裝Logtail。更多資訊,請參見 安裝Logtail(Linux系統) 或 安裝Logtail(Windows系統)
- 添加Logtail配置, 将以下配置内容到配置中,
{
"inputs" : [
{
"detail" : {
// 注意:若您的Logtail本地11800端口被占用,可替換為其他可用端口,同時需修改SkyWalking上報的端口号。
"Address" : "0.0.0.0:11800"
},
"type" : "service_skywalking_agent_v3"
}
],
"aggregators" : [
"MetricsLogstore" : "qs-trace-test-metrics",
"TraceLogstore" : "qs-trace-test-traces"
"type" : "aggregator_skywalking"
"global" : {
"AlwaysOnline" : true,
"DelayStopSec" : 300
}
}
- 點選下一步,進入點選查詢分析配置。這一步不用做任何調整
- SkyWalking資料接入配置完成
2. Apache SkyWalking環境配置(以Java為例)
- 進入 Apache SkyWalking官網 ,點選Downloads後進入下載下傳頁面
- 下載下傳最新版本(目前最新版本是8.6.0, 目前SLS Trace隻支援8.0.0及以上的版本)
3. 啟動應用
将ApacheSkyWalking Agent參數添加到啟動指令,并啟動應用,以下以Java應用為例。demo代碼見
Github.
java -javaagent:/PATH/TO/AGENT/skywalking-agent.jar -Dskywalking.agent.service_name=XXX -Dskywalking.agent.service_name=XXX -jar xxx.jar
4. 檢視相關trace資料
Trace接入概覽
概覽頁面可以檢視單個服務的概覽資訊,其中包括Trace發生的條數,服務數,平均延遲,Pxx等相關名額
服務清單
服務清單可以檢視服務清單及單個服務下調用的相關名額資訊
拓撲調用圖
拓撲調用圖可以展示所有接入SLS Trace服務中的服務的調用關系及調用相關名額
Trace相關資料
單條Trace詳情
總結
從總體來看,SLS Trace服務接入SkyWalking Trace方面比較簡單,對于現有接入SkyWalking的應用和服務來說,無需做任何修改就能讓現有的已接入SkyWalking的應用直接接入到SLS中,對于新接入SkyWalking,運維人員不用再為評估和部署SkyWalking後端叢集和ES叢集而發愁。