日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

阿里云端到端鏈路追蹤最佳實踐

鏈路追蹤的核心價值在于“連接”,用戶終端、網關、后端應用、依賴組件(如數據庫、消息、大模型)等共同構成了鏈路追蹤的軌跡拓撲大圖。這張拓撲覆蓋的范圍越廣,鏈路追蹤能夠發揮的價值就越大。而端到端鏈路追蹤就是覆蓋全部關聯 IT 系統,能夠完整記錄用戶行為在系統間調用路徑與狀態的最佳實踐方案。

阿里云端到端鏈路追蹤解決方案

阿里云 ARMS(含可觀測鏈路 OpenTelemetry 版)目前已經支持用戶終端(Web/Android/iOS等)-> 云網關(ALB/MSE/Ingress/ASM等)-> 后端應用(Java/Go/Python/.NET等)-> 云組件(數據庫、消息、大模型等)的端到端全鏈路打通,如下圖所示。

image.png

鏈路插樁:Java/Go/Python等主流語言推薦 ARMS 自研探針,兼容開源提升多語言覆蓋度

針對 Java/Go/Python 等主流語言,推薦接入 ARMS 自研探針提升鏈路插樁的質量、性能、穩定性和易用性。同時,為了更廣泛的支持其他語言,可觀測鏈路 OpenTelemetry 版全面兼容 OpenTelemetry、SkyWalking、ZipkinJaeger 4 種主流鏈路框架以及10+ 種多語言的鏈路插樁與數據上報,如下表所示。

ARMS 與可觀測鏈路 OpenTelemetry 版數據完全互通,在多語言場景建議結合使用。

編程語言

ARMS 應用監控

(自研探針,SLA 有保障)

可觀測鏈路 OpenTelemetry 版

(開源客戶端,自行管理)

推薦接入方式

Java

自動埋點

自動埋點

ARMS

Go

自動埋點

自動埋點

ARMS

Python

自動埋點

自動埋點

ARMS

Node.js

不支持

自動埋點

OpenTelemetry

.NET

不支持

自動埋點

OpenTelemetry

PHP

不支持

自動埋點

OpenTelemetry

Erlang

不支持

自動埋點

OpenTelemetry

C++

不支持

手動埋點

OpenTelemetry

Swift

不支持

手動埋點

OpenTelemetry

Ruby

不支持

手動埋點

OpenTelemetry

Rust

不支持

手動埋點

SkyWalking

ARMS 2024年發布的 JavaAgent 4.0,全面擁抱 OpenTelemetry 生態,探針底座基于 OpenTelemetry 框架進行了全新升級,并額外提供多種資源監控、性能診斷、應用安全等數據。除了更豐富的數據,ARMS JavaAgent 4.0 還支持更加靈活的調用鏈采樣策略、白屏化探針管理、全方位自監控、動態功能降級等高階特性,更加適合企業級客戶的生產環境應用。

鏈路采集與加工:深度集成阿里云生態,云產品鏈路一鍵接入

企業上云的一個痛點問題就是重度依賴云產品服務可用性,端到端鏈路追蹤可以快速定位錯慢請求異常節點,提升故障快恢效率,降低業務損失。那么如何接入云產品的調用鏈路數據呢?

可觀測鏈路 OpenTelemetry 版與阿里云近10款云產品深度合作,完成了云產品內部鏈路插樁與數據上報。對于企業用戶來說,只需在相應的云產品控制臺一鍵啟用鏈路追蹤開關,就可以直接看到相應的調用鏈,大幅簡化了鏈路采集成本,ALB 網關、MSE 網關以及 ARMS 用戶體驗監控的鏈路追蹤接入效果如下圖所示 。

image.png

受限于產品特性,不同云產品的鏈路插樁方案有所區別,配套的鏈路數據采集大致分為兩類:

  • Trace 直接/轉發上報:以用戶體驗監控為例,內部實現鏈路插樁與 Exporter 直連上報,埋點更精細更靈活。

  • 日志數據轉 Trace:以 ALB 網關為例,后臺消費訪問日志,再轉義成 Trace 數據,侵入性更小。

兩種方案各有優劣,通常推薦 Trace 直連/轉發上報,此種方案更規范。但是在性能要求高或者舊系統改造困難場景下,可以考慮日志轉 Trace(前提條件是在日志中添加 TraceId 等鏈路上下文)。

目前,已經支持接入鏈路追蹤的云產品、協議及接入指南如下表所示。

接入類別

接入端

接入指南

支持協議

用戶終端

Web/H5/小程序

Web端監控關聯前后端Trace

w3c、b3、jaeger、skywalking

Android/iOS

App監控關聯前后端Trace

w3c、skywalking

網關

MSE

開啟網關鏈路追蹤

w3c、b3、skywalking

ACK Ingress

實現Nginx Ingress Controller組件的鏈路追蹤

w3c、b3、jaeger

ALB

通過ALB鏈路追蹤實現業務全鏈路分析

b3

ASM

ASM中實現分布式跟蹤

b3

API Gateway

配置Trace鏈路追蹤

b3

后端應用

Java/Go/Python(自研)

應用監控接入概述

w3c、b3、jaeger、

skywalking、eagle eye

.NET、Node.js 等

多語言(開源)

接入指南

w3c、b3、jaeger、

skywalking

云服務

百煉大模型平臺服務

應用觀測

w3c

依賴組件

100+ 插件支持,覆蓋 RPC、消息隊列、數據庫、任務調度等各種類型。

鏈路上下文透傳:統一阿里云端到端鏈路協議,自研探針兼容多協議轉換

從單個應用組件的視角,完成鏈路插樁和數據采集,能在控制臺上看到對應的 Trace 數據就已經成功了。但是真正的端到端鏈路追蹤必須將上下游的 Trace 以統一的協議進行串聯,保證不斷鏈,既有技術層面的挑戰,也有協同層面的困難。

目前阿里云可觀測已經基于 OpenTelemetry W3C 協議實現端到端鏈路打通,后續將逐步覆蓋更多協議、更多組件的全鏈路透傳,構建更完整、更靈活的鏈路生態,完整端到端調用鏈如下圖所示。

image.png

相比于新應用接入 Trace,存量應用要實現端到端協議棧統一的挑戰會更大。特別是面臨新舊技術棧切換場景(比如 SkyWalking 遷移至 OpenTelemetry),既要保證存量運維體系持續可用,又要驗證新體系的有效性,如何兼容兩種不同鏈路體系共存,是影響存量應用技術棧升級或鏈路打通的最大難題。

為了解決這個問題,ARMS 自研探針做了大量的兼容性優化,最終實現了雙探針共存,保證兩套體系能夠同時正確、穩定運行,直至遷移完成,如下圖所示。

image.png

ARMS 自研探針支持多協議識別與透傳,在某些特殊場景,如果上下游系統難以變更,可以通過 ARMS Agent 進行協議中轉,比如上游 A 應用使用 Jaeger 協議 -> ARMS Agent(接收 Jaeger,向下透傳 Jaeger + Zipkin B3) -> 下游 B 應用使用 Zipkin B3 協議,最終實現 TraceId 的透傳與打通。