Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Distributed Tracing in LINE Taiwan

Distributed Tracing in LINE Taiwan

Speaker: John Lin
Event: COSCUP 2024

LINE Developers Taiwan

August 04, 2024
Tweet

More Decks by LINE Developers Taiwan

Other Decks in Technology

Transcript

  1. Outline • 分散式追蹤的概述 • 基本概念、如何工作、開源專案及技術堆疊 • LINE Taiwan 的分散式追蹤系統 •

    背景及技術發展、系統架構的演進 • 挑戰與應對策略 • 數據量和性能、組織和協作 • 未來展望 • 新技術和趨勢、持續改進 COSCUP 2024 X KCD Taipei 2
  2. 基本概念 • 分散式追蹤(Distributed Tracing)是資料請 求在分散式系統上流動時加以觀察的實踐 • ⼀個典型的 E-Commerce 後端微服務架構 •

    具有多個⼩型的獨⽴元件 • 元件彼此間透過 RPC/REST 通訊和交換 資料 • 採⽤分散式追蹤技術: • 提供開發⼈員在不同微服務之間追蹤 (視覺⽅式) • 提供疑難排解錯誤或修復效能問題 COSCUP 2024 X KCD Taipei 4
  3. 基本概念 • 分散式鏈路追蹤技術源於 Google Research 發表的 Dapper 論 ⽂1 •

    Google 透過採⽤ Distributed Systems Tracing 旨在解決: • 不同團隊,不同語⾔,不同元件及佈署在不同節點上所帶來的 排錯複雜性 1 Dapper, a Large-Scale Distributed Systems Tracing Infrastructure. Google Research, 2010 COSCUP 2024 X KCD Taipei 5
  4. 如何工作 • ⽤⼾發起請求 X 經5個不同⼩型的獨⽴ 元件 • 前端、2個中間層、2個後端 • 對於請求

    X,分散式跟蹤的實現 • 在每⼀個節點上,每⼀次發送和接收 時 • 收集跟蹤識別標籤(message identifiers)和時間戳(timestamped events) COSCUP 2024 X KCD Taipei 6
  5. 開源專案及技術堆疊 • X(former Twitter) Open Source at 2012: Zipkin •

    Distributed Systems Tracing with Zipkin • Uber Open Source at 2017: Jaeger • Evolving Distributed Tracing at Uber Engineering • Elastic N.V. Open Source at 2018: Elastic APM • Naver Open Source at 2018: PinPoint COSCUP 2024 X KCD Taipei 8
  6. 開源專案及技術堆疊 • 開源規範標準及框架 SDK • OpenTracing 是分散式追蹤的⼀種規範標準,原為 CNCF 下的⼀個專 案之⼀,同時也提供主流程式語⾔的開源框架

    • 開源框架 SDK • OpenCensus 是⼀個⽤於分散式追蹤和監控的開源框架,提供多種程式 語⾔的 instrumentation frameworks • 2019, OpenTracing 和 OpenCensus 合併成為⼀個新的 CNCF 項⽬ OpenTelemetry 繼承並擴展了原專案,提供了⼀套統⼀的 API 和 SDK COSCUP 2024 X KCD Taipei 9
  7. 背景及技術發展 團隊內部採⽤ Distributed Tracing 情況 • 因 Zipkin 相對成熟 (2012),Java

    系大部分都會選擇 Zipkin • 有極少部分團隊採⽤ PinPoint • 大部分團隊無採⽤ Distributed Tracing COSCUP 2024 X KCD Taipei 11
  8. 背景及技術發展 2020 開始著⼿採⽤當時 CNCF 已畢業的 Jaeger 作為 Distributed Tracing 平台

    • 初期導⼊包含 jaeger-agent/jaeger- collector 及 jaeger 的 tracing backend • 協助開發團隊完成 Manual instrumentation 及 Automatic instrumentation COSCUP 2024 X KCD Taipei 12
  9. 背景及技術發展 • 2021 關注到 OpenTelemetry 成為 CNCF 的 孵化中的項⽬,同 時

    Grafana 發表了 Grafana Tempo 1.0 • 開始導⼊ Opentelemetry, Grafana Tempo • Jaeger tracing backend 轉為 Grafana Tempo • Opentelemetry collector 取代 jaeger agent(sidecar) 及 jaeger collectors • 協助專案團隊採⽤ Opentelemetry instrumentation libraries COSCUP 2024 X KCD Taipei 13
  10. 系統架構的演進 初期 (2020) 採⽤ Jaeger 作為 Distributed Tracing 系統架構圖 •

    挑戰⼀:需⽀援多個團隊的 Kubernetes Cluster (數⼗個 Clusters 以上) • 拆分寫⼊及讀取元件到不同 Clusters • 挑戰⼆:sidecar 模式,當需要調整參 數時涉及應⽤容器重啟 • ⽀援 collector 收應⽤送出的 spans COSCUP 2024 X KCD Taipei 14
  11. 系統架構的演進 改進作法 • 架構改進:接收 spans 的作法,⽀援 collector 收應⽤送出的 spans •

    jaeger collector 在不同環境下攜帶不 同標籤(tag) e.g. cluster=mycluster, env=beta COSCUP 2024 X KCD Taipei 15
  12. 系統架構的演進 改進作法 • 架構改進:接收 spans 的作法,⽀援 collector 收應⽤送出的 spans •

    jaeger collector 在不同環境下攜帶不同 標籤(tag) e.g. cluster=mycluster, env=beta 現象觀察 • sidecar 模式的確不太受應⽤開發的歡迎 • Spans 量大的時候 collector buffer 過 載 COSCUP 2024 X KCD Taipei 16
  13. 系統架構的演進 2021 改採⽤ Grafana Tempo 作為 Distributed Tracing 系統架構圖 •

    OpenTelemetry 在這個階段同時⼀起採 ⽤ • 為⽀援⽇漸增加的 spans 數量,採⽤ Kafka 作為寫⼊的緩衝 • 為過去的技術做相容包含⽀援 Jaeger, Zipkin, OpenTelemetry Protocol(OTLP)格式 COSCUP 2024 X KCD Taipei 17
  14. 系統架構的演進 採⽤ OpenTelemetry collector 後的改變 • 採⽤ opentelemetry-collector-contrib 社群貢獻的 collector

    • 與供應商無綁定 (vendor agnostic) • 有需求可⾃⾏開發 receiver, processor, exporter COSCUP 2024 X KCD Taipei 18
  15. 數據量和性能 • 約 50 Kubernetes Clusters 上,不同環境、不同團隊 合計的 span rate

    • Tempo 處理及消化平均約 200K 左右 spans • 三種格式⽬前都接受,OTLP 為⽬前為團隊主流及建 議的格式, Zipkin/Jaeger 為較早期的採⽤現已不建議 COSCUP 2024 X KCD Taipei 20
  16. ⽬前挑戰 • Span rate 會隨著活動事件有流量⾼峰 • 採樣策略的引⼊(tail-based sampling): 可控的費⽤、專注感興趣 的

    traces、過濾雜訊 • 前端 spans 收集串連後端 spans 完成 ⼀個完整的 end-to-end 鏈路 • 採⽤ Grafana faro-web-sdk 及 Grafana Alloy Eric Huang Eric Huang Grafana Alloy 最佳實踐:多租⼾設計、性能優化與端到端追蹤 COSCUP 2024 X KCD Taipei 21
  17. ⽬前挑戰 • 多租⼾管理並未帶來好處:團隊服務間的系統調⽤鏈中斷 • 未來將改合併租⼾⽅式,以利團隊服務間追蹤查詢 • Instrumentation 的導⼊工作 • Auto-instrumentation:

    需要函式庫及框架上的⽀援 • Manual instrumentation: 對現存 codebase 侵⼊性大,開發團隊接受意願度較 低 • OpenTelemetry Protocol: OTLP/gRPC 在 Kubernetes Service 的負載均衡效能差 • 引⼊ L7-Aware LB 例如 Envoy 做 HTTP/2的負載均衡 COSCUP 2024 X KCD Taipei 22
  18. 新技術和趨勢 • 引⼊ eBPF 技術作為無侵⼊性的可觀測 性工具 • Grafana Beyla •

    Service Mesh but NOT service mess Kelsey Hightower • Istio Serice Mesh • Cilium Service Mesh Kelsey Hightower 1. the result of spending more compute resources than your actual business logic dynamically generating and distributing Envoy proxy configs and TLS certificates. COSCUP 2024 X KCD Taipei 24
  19. 新技術和趨勢 • 引⼊ eBPF 技術作為無侵⼊性的可觀測 性工具 • Grafana Beyla •

    Service Mesh but NOT Service mess Kelsey Hightower • Istio Serice Mesh • Cilium Service Mesh Kelsey Hightower 1. the result of spending more compute resources than your actual business logic dynamically generating and distributing Envoy proxy configs and TLS certificates. COSCUP 2024 X KCD Taipei 25