Log Service支援OpenTelemetry Trace資料的原生接入,還支援通過其他Trace系統接入Trace資料。本文介紹Log Service所支援的Trace資料接入方案。
接入方案總覽
Log Service支援如下接入方案。
使用OpenTelemetry、Jaeger(目前僅支援https、grpc方式)、Zipkin、OpenCensus等直接將Trace資料接入到Log Service。
使用OpenTelemetry Collector轉寄OpenTelemetry、Jaeger(全協議支援)、Zipkin、OpenCensus、AWS X-Ray、SignalFX(Splunk)等平台上的Trace資料到Log Service。
使用Logtail轉寄SkyWalking的Trace資料到Log Service。
使用自訂協議將Trace資料接入到Log Service,並通過Log Service加工功能將Trace資料格式轉換為OpenTelemetry格式。
選擇接入方案的原則
建立Trace方案的重點任務是產生並上傳Trace資料,因此選擇合適的接入方案非常重要,主要原則如下:
推薦使用OpenTelemetry接入方案。
OpenTelemetry是目前全球公認的Trace接入標準。眾多開源軟體都會遵循OpenTelemetry標準,便於打通各個組件。
遵循OpenTracing、OpenTelemetry標準,便於與其他開源系統打通。
如果不使用開源的標準協議,則需確保系統中的各個服務都使用同一個接入方案,否則Trace資料可能不完整。
接入方案詳情
此處分別從接入方式、Trace自動埋點成熟度等級、接入複雜性等方面列出Log Service所支援的接入方案。接入方案僅列出常用的Trace平台OpenTelemetry、SkyWalking、Jaeger、Zipkin。
各個開發語言中的Trace資料接入方案
您可以通過自動埋點或半自動埋點方式接入Trace資料到Log Service,兩者區別如下:
自動埋點:開發人員不需要關心所使用的架構、代碼等資訊,無需改動代碼。Trace系統對支援的架構自動埋點。
半自動埋點:開發人員需要手動安裝依賴包或進行一定的代碼改造。
平台
接入方案
自動化程度
接入複雜度
Java
自動埋點
低
自動埋點
中
自動埋點
中
Golang
半自動埋點
低
半自動埋點
低
Python
半自動埋點
中
半自動埋點
中
NodeJS
半自動埋點
中
半自動埋點
中
PHP
手動埋點
較高
C++
手動埋點
較高
C#
半自動埋點
中
半自動埋點
中
自動埋點
中
Rust
手動埋點
較高
手動埋點
較高
Ruby
手動埋點
較高
手動埋點
較高
Android
不涉及
低
iOS
不涉及
低
Web
不涉及
低
小程式
不涉及
低
各個平台中的Trace資料接入方案
Trace平台
接入方案
接入複雜度
OpenTelemetry
低
中
Jaeger
低
中
Zipkin
低
中
SkyWalking
中
OpenCensus
中
AWS X-Ray
高
SignalFX(Splunk)
高
常見的Trace接入情境
新構建Trace系統
如果您的系統剛開始接入Log ServiceTrace,則推薦使用OpenTelemetry直接將Trace資料上傳到Log Service。如果對應的語言沒有OpenTelemetry接入方案或方案不完善,則使用Jaeger、Zipkin等支援OpenTracing或OpenCensus的接入方案。
現有Trace系統升級
如果您當前的系統已經使用了Trace功能,則根據實際情況選擇接入方案。
Trace系統已穩定啟動並執行情境
如果Trace系統支援上傳Trace資料到OpenTelemetry Collector,則使用OpenTelemetry Collector轉寄Trace資料到Log Service。
如果Trace系統使用的是自訂協議或其他非OpenTelemetry、OpenTracing協議,則可以將Trace資料列印到檔案並通過Logtail上傳到Log Service,並使用Log Service資料加工功能將Trace資料格式轉化為OpenTelemetry格式。
Trace系統不完善或需要升級的情境
如果Trace系統使用的是OpenTracing或OpenCensus協議,則可以使用平滑遷移方式。在原系統中,將Trace資料上傳至OpenTelemetry Collector並轉寄到Log Service。期間,逐步替換其中的協議為OpenTelemetry,使用OpenTelemetry直接發送Trace資料到Log Service。
如果Trace系統使用的是其他協議,則需要進行整體替換,否則兩者共存期間Trace資料可能不完整。
線下Trace系統
如果您的業務部署線上下IDC中,只有部分網關機有公網、專線,則可以在網關機上部署OpenTelemetry Collector,將其他機器上的Trace資料發送到網關機中,並通過網關機上的OpenTelemetry Collector將Trace資料轉寄到Log Service。
Trace Demo
Log Service提供各種語言的接入Demo。更多資訊,請參見Trace Demos。