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

Observability 入門班:可觀測性的核心技術架構與 OpenTelemetry 實作指南

Avatar for Joe Wu Joe Wu
June 05, 2025

Observability 入門班:可觀測性的核心技術架構與 OpenTelemetry 實作指南

DevOpsDays Taipei 2025

Avatar for Joe Wu

Joe Wu

June 05, 2025
Tweet

More Decks by Joe Wu

Other Decks in Technology

Transcript

  1. About Me Joe Wu (喬叔) • 25+ Years Software Developer

    • Agile Practitioner / SCM / CSPO • Team Manager / Team Coach • Elastic Stack Expert • Technical Instructor / Technical Consultant • Entrepreneur • In charge of AI transformation in a Taiwan media comapny • 14 屆 iThome 鐵人賽 DevOps 組冠軍 • 喬叔帶你上手 Elastic Stack - 探索與實踐 Observability • 13 屆 iThome 鐵人賽 Elastic Stack on Cloud 組冠軍 https://www.facebook.com/Joe.ElasticStack 喬叔 - Elastic Stack 技術交流
  2. 什麼是 Observability (可觀測性)? “Observability is a measure ability of how

    well the internal states of a system can be inferred from knowledge of its external outputs.” “可觀測性(Observability)指的是透過系統的外部輸出, 能夠多有效地推斷出其內部狀態的一種衡量指標能 力。” Source: Wikipedia, but modifed by Joe
  3. Observability 的定義 Observability 一詞源於控制理論,指根據系統輸出的資訊來推斷 其內部狀態的能力。 在軟體領域: • 透過應用程式和基礎設施產生的遙測數據 (Telemetry Data),

    來瞭解系統內部發生了什麼。 • 目標是能在未知情況下提出問題並找到答案,而不僅僅依賴 預先定義的監控指標 。
  4. Observability (可觀測性) • 了解系統的運作 ◦Metrics (指標) ◦Logs (日誌) ◦Tracing (追蹤)

    ◦…等 Monitoring (監控) • Availability (可用性) • Performance (效能) • Capacity (容量) What? Why? Where?
  5. Observability (可觀測性):三大支柱 Metrics 指標 Logs 日誌 Tracing 追蹤 • JVM

    Heap > 90% • 磁碟空間 < 10% • 回應時間 > 500ms • TPS > 3k • HTTP Access Log • Error Message • Call Stack • Warning Log • 為什麼這個請求處 理得特別久? • 哪邊可以改善效 能?
  6. Metrics (指標) 是什麼? • 以數字形式表示在特定時間區間內測量的數據 • 結構化:通常以時間序列 (Timestamp + 數值)

    存放,方便趨勢分析 • 輕量且高頻: 每秒或每分鐘收集一次,適合監控大規模系統的健康狀 態
  7. Challenges of Metrics • 難以深入了解問題背後的「原 因」 • 資訊粗略,缺乏上下文與細節 • 固定間隔的收集方式可能會錯

    過關鍵細節 • 需提前定義 監控指標與收集維 度 Advantages of Metrics • 量化且直覺,適合用來設定報 警門檻 • 輕量化,儲存成本低 • 非常適合追蹤趨勢與系統變化 • 能提供即時的元件狀態資料 • 長期觀察趨勢,適合容量規劃 與 SLO (Service Level Objective) 分析 Metrics (指標) 的優勢與挑戰
  8. Log (日誌) 是什麼? • 系統或應用程式在運行過程中產生的文字記錄,包含時間戳、事件 層級 (INFO、ERROR) 與相關內容 (錯誤訊息、使用者操作...) •

    非結構化或半結構化: 多為自由格式文字,但可透過 JSON、key-value 等方 式部分結構化。 • 細節豐富: 記錄每個事件發生的具體背景、上下文與參數值。 • 可儲存歷史: 方便事後追溯問題原因,例如某次錯誤、例外發生前的環境狀 態。
  9. Challenges of Logs • 資料大量,成本上升 • 非結構化內容,彙整分析不易 • 非同步日誌時可能影響效能 •

    缺乏上下文關聯 ,難以重建請求 流程 • 在容器化或自動擴展環境中有遺 失風險 Advantages of Logs • 易於產生,通常為時間戳記加 上純文字 • 多數平台提供標準化的日誌框 架、開發者整合門檻低 • 人類可讀,便於存取與理解 • 詳細記錄例外、堆疊、事件資訊 Logs (日誌) 的優勢與挑戰
  10. Trace (追蹤) 是什麼? • 在分散式系統中,追蹤單一請求從前 端進入到後端各個服務、資料庫呼叫 的完整路徑。 • 具有一個 Trace

    ID 串聯底下分散的各個 Spans (跨度) • 時序化串接: 以「父-子」關係將多個 Spans (跨度) 串起來,呈現跨服務的呼 叫流程。 • 精準定位瓶頸: 可看到哪一段服務或資 料庫呼叫耗時最長,以及每段呼叫的參 數或錯誤資訊。 Source: Dapper, a Large-Scale Distributed Systems Tracing Infrastructure
  11. Span (跨度) 是什麼? • 一個 Span 代表一次完整操作 (operation) 或工作階段 (unit

    of work) 的時間區段 • 唯一的 Span ID (用於在整個 Trace 中追蹤這段操作) • 起始與結束時間,藉此計算耗時 • 標籤 (tags) 或屬性 (attributes) • 父子關係 (parent / child),用來串連 多個 Spans,形成一個完整請求的 呼叫樹 Source: Dapper, a Large-Scale Distributed Systems Tracing Infrastructure
  12. Challenges of Trace • 難以揭露長期趨勢 • 複雜系統可能產生多樣化的追 蹤路徑,難以比對與歸納 • 無法解釋效能不佳或失敗發生的

    根原因,需搭配 Logs • 多採樣策略,可能遺漏關鍵異常 • 增加系統負擔,可能影響效能 Advantages of Trace • 適合釐清服務內部的問題 • 提供跨服務的端對端可視化 • 有效辨識效能瓶頸與異常點 • 清楚標示每一服務呼叫的延遲 與流程 • 建立請求上下文 ,有助於關聯 Logs 與 Metrics Trace (追蹤) 的優勢與挑戰
  13. Observability (可觀測性) Metrics 指標 Logs 日誌 Tracing 追蹤 合成監測 (模擬請求)

    用戶體驗 RUM 效能剖析 Profiling 時間區段篩選 Exemplar (時間 + Trace ID) Trace ID 篩選
  14. 1. 應用程式 / 基礎設施 (Instrumentation) 埋點產生 Telemetry 資料:Metrics、Logs、Traces 2. 資料收集

    (Collection) Agent / SDK 收集事件、上下文傳遞 (Context Propagator) 3. 處理與聚合 (Processing) 資料過濾/採樣、格式標準化、豐富化處理 4. 資料儲存後端 (Storage Backend) 5. 查詢與分析 (Query & Analysis) Ad-hoc 查詢、即時聚合/檢索、SLO/SLI 計算 6. 可視化與報警 (Visualization & Alerting) 儀表板、追蹤歷程視覺化、警報 /SLO Metrics DB Logs Store Trace Store Raw Events Observability 資料處理流程
  15. 1. 應用程式 / 基礎設施 (Instrumentation) 埋點產生 Telemetry 資料:Metrics、Logs、Traces 2. 資料收集

    (Collection) Agent / SDK 收集事件、上下文傳遞 (Context Propagator) 3. 處理與聚合 (Processing) 資料過濾/採樣、格式標準化、豐富化處理 4. 資料儲存後端 (Storage Backend) 5. 查詢與分析 (Query & Analysis) Ad-hoc 查詢、即時聚合/檢索、SLO/SLI 計算 6. 可視化與報警 (Visualization & Alerting) 儀表板、追蹤歷程視覺化、警報 /SLO Observability 資料處理流程 產生我們需要的資料 (Metrics, Logs, Traces…等) • 基礎設施: OS, Container • 應用程式: Web Server, Proxy, Application, DB, Cache, Queue • 網路裝置: Router, WAF • 雲端平台: AWS, Azure, GCP • Agent:Health Check • Client:Browser, Android, iOS * 這是自己要處理+設定的 * 這是已經有產生好的數據,但要 去收集 Metrics DB Logs Store Trace Store Raw Events
  16. 1. 應用程式 / 基礎設施 (Instrumentation) 埋點產生 Telemetry 資料:Metrics、Logs、Traces 2. 資料收集

    (Collection) Agent / SDK 收集事件、上下文傳遞 (Context Propagator) 3. 處理與聚合 (Processing) 資料過濾/採樣、格式標準化、豐富化處理 4. 資料儲存後端 (Storage Backend) 5. 查詢與分析 (Query & Analysis) Ad-hoc 查詢、即時聚合/檢索、SLO/SLI 計算 6. 可視化與報警 (Visualization & Alerting) 儀表板、追蹤歷程視覺化、警報 /SLO 通常會需要產生的資料 • Metrics • 基礎設施資源 (OS, Container, 網路設備) • 應用程式本身與中介軟體 (Web Server, DB, Cache, Queue…) • 業務 KPI / 自訂指標 • Logs • 作業系統與安全層面 (系統日誌、稽核日誌) • 應用程式與中間件 (Web Server日誌、應用 程式日誌、容器日誌) • Trace • 應用程式內部 Instrumentation (自動 or 手動打點) • Service Mesh / Sidecar • API Gateway / Ingress • DB / 外部 HTTP 呼叫自動攔截 • Serverless 平台內建追蹤 • 前端瀏覽器埋點 * 這是自己要處理+設定的 * 這是已經有產生好的數據,但要去收集 Metrics DB Logs Store Trace Store Raw Events Observability 資料處理流程
  17. Observability 資料處理流程 透過 Agent (代理程式) 統一收集、處 理並轉送資料 • Fluentd/Fluent Bit

    (Logs) • Prometheus (Metrics) • Elastic APM (Trace) • Elastic Beats (Metrics & Logs) • Logstash (Metrics & Logs) • OpenTelemetry Collector (Trace, Metrics, Logs) Push/Pull 模式,含緩衝、批次、過濾 1. 應用程式 / 基礎設施 (Instrumentation) 埋點產生 Telemetry 資料:Metrics、Logs、Traces 2. 資料收集 (Collection) Agent / SDK 收集事件、上下文傳遞 (Context Propagator) 3. 處理與聚合 (Processing) 資料過濾/採樣、格式標準化 、豐富化處理 4. 資料儲存後端 (Storage Backend) 5. 查詢與分析 (Query & Analysis) Ad-hoc 查詢、即時聚合/檢索、SLO/SLI 計算 6. 可視化與報警 (Visualization & Alerting) 儀表板、追蹤歷程視覺化、警報 /SLO Metrics DB Logs Store Trace Store Raw Events
  18. 4. 資料儲存後端 (Storage Backend) 5. 查詢與分析 (Query & Analysis) Ad-hoc

    查詢、即時聚合/檢索、SLO/SLI 計算 Metrics DB Logs Store Trace Store Raw Events Observability 資料處理流程 不同資料進入專屬的後端 儲存系統 • Metrics → 時序資料庫 (Prometheus TSDB) • Logs → 搜尋引擎 (Elasticsearch / Loki) • Trace → 追蹤資料庫 (Jaeger / Tempo) 2. 資料收集 (Collection) Agent / SDK 收集事件、上下文傳遞 (Context Propagator) 3. 處理與聚合 (Processing) 資料過濾/採樣、格式標準化、豐富化處理 6. 可視化與報警 (Visualization & Alerting) 儀表板、追蹤歷程視覺化、警報 /SLO 1. 應用程式 / 基礎設施 (Instrumentation) 埋點產生 Telemetry 資料:Metrics、Logs、Traces
  19. 6. 可視化與報警 (Visualization & Alerting) 儀表板、追蹤歷程視覺化、警報 /SLO Observability 資料處理流程 統一平台提供多維度分析介面

    • 儀表板、圖表、日誌查詢 (Grafana, Kibana) • 分散式追蹤視圖 (Jaeger) • 實現多信號關聯性分析 • 異常偵測與根因分析 (Grafana) • AIOps (DataDog, Elastic) • Alerting、SLO/SLI 管理 2. 資料收集 (Collection) Agent / SDK 收集事件、上下文傳遞 (Context Propagator) 3. 處理與聚合 (Processing) 資料過濾/採樣、格式標準化、豐富化處理 4. 資料儲存後端 (Storage Backend) 5. 查詢與分析 (Query & Analysis) Ad-hoc 查詢、即時聚合/檢索、SLO/SLI 計算 Metrics DB Logs Store Trace Store Raw Events 1. 應用程式 / 基礎設施 (Instrumentation) 埋點產生 Telemetry 資料:Metrics、Logs、Traces
  20. Open Source v.s SaaS 解決方案(平台) Instrumentation Collection Process Store Query

    & Analysis Dashboard & Alert Prometheus (OSS) v Metrics v Metrics (單節點) v Grafana OSS v v Grafana Tempo (OSS) Trace v Trace v Grafana Loki (OSS) Logs v Logs v Grafana Cloud (SaaS) All v v v v Elastic Stack (OSS/SaaS) v All v v v v OpenTelemetry (OSS) v All v Jaeger (OSS) v All v v v v (no alert) Fluent Bit (OSS) Logs v Vector (OSS) All v SigNoz (OSS) v All v v v v Datadog (SaaS) v All v v v v New Relic (SaaS) v All v v v v Sentry (OSS) v All v v v v Sentry (SaaS) v All v v v v
  21. Open Source v.s SaaS • Prometheus:開源 Metrics 首選,強調自助式拉取模型和強大的 查詢語言,但需搭配其他工具完成全套功能。 •

    Grafana:開源可視化首選,擅長混合多來源資料進行統一展示。 Grafana Cloud 進一步提供代管後端和企業級 功 能。Grafana Stack (Loki, Tempo, Mimir, Pyroscope, Alloy, Beyla, Faro, K6) 完整的 Observability 技術堆疊 。 • Jaeger 開源 Trace 首選 vs Grafana Tempo: • Jaeger 功能全面、查詢強但存儲成本高 (需維護Elasticsearch/Cassandra) • Tempo 創新採用無索引+物件存儲,超大規模 trace 成本低廉(但僅能透過 traceID 等間接查詢 trace)。 • Loki vs Elasticsearch:開源 Logs 儲存首選 • Loki 不索引全文,以極低成本存海量日誌,適合 Kubernetes 等場景,但無法任意關鍵詞搜索。 • Elasticsearch 全文檢索強大,但資源開銷和費用遠高於 Loki。 • Opensearch 開源但整體功能與效能落後 Elasticsearch。 • SigNoz:開源後起新秀,一站式 Observability 工具,號稱 DataDog 的替代方案。 • SaaS:Datadog/New Relic/Sentry/Dynatrace/Elastic • SaaS 整合度高,提供開箱即用體驗 和 AI 輔助分析 ,可與 SIEM 等其他服務資料共用 。 • Datadog 在易用性和整合廣度上領先。
  22. OpenTelemetry (OTel) 簡介 • OpenTelemetry 是一套開源標準,提供統一的方式來自動或手動收 集、處理和傳送分散式系統中的指標、日誌與追蹤資料,協助你建 構現代化的可觀測性架構。 • OpenTelemetry

    由 CNCF (Cloud Native Computing Foundation) 主導, 集結多家廠商與社群共同制定,致力於避免被特定平台或廠商綁定 ,並維持中立、開放的生態系。 • 融合兩大社群:OpenTracing 與 OpenCensus、被大型平台與語言廣泛支援 • CNCF 第二活躍的專案 (第一是 Kubernetes)
  23. OpenTelemetry (OTel) 簡介 • 通訊協定: OTLP (OpenTelemetry Protocol) • 軟體開發工具套件

    (SDKs)、API • 訊號 (Signals) • Traces • Metrics • Logs • 其它: Baggage, Profiling, RUM (Real-time User Monitoring) • OTel Collector:收集、處理、傳遞 Signals 的工具
  24. OpenTelemetry 主要技術架構 • Instrumentation Layer (埋點層): • 多語言 SDK,支援自動或手動方式,在程式碼內產生標準化的 Telemetry

    Signals 資料。 • Telemetry Collection & Processing Layer (資料收集與處理層 ): • 由 OTel Collector、SDK/Agent、第三方整合元件構成。 • 可收集、處理、聚合、轉發 Telemetry 資料,彈性串接多種來源與多個下游平台。 • Data Export Layer (資料導出層 ): • 支援多種資料後端 (如 Prometheus、Jaeger、Elasticsearch…),可根據需求以標準協定同時導出 多個平台。 • Context Propagation (上下文傳遞 ): • 並非獨立元件,而是貫穿於整個 Telemetry 流程中的一套標準協定和機制。 • 保證跨服務、跨節點的 Trace 及 Log 都能維持一致性和串接性,實現完整分散式追蹤 。 • W3C Trace Context (TraceId, ParentId…)
  25. 1. 應用程式 / 基礎設施 (Instrumentation) 埋點產生 Telemetry 資料:Metrics、Logs、Traces 2. 資料收集

    (Collection) Agent / SDK 收集事件、上下文傳遞 (Context Propagator) 3. 處理與聚合 (Processing) 資料過濾/採樣、格式標準化、豐富化處理 OpenTelemetry 的防守範圍 4. 資料儲存後端 (Storage Backend) 5. 查詢與分析 (Query & Analysis) Ad-hoc 查詢、即時聚合/檢索、SLO/SLI 計算 6. 可視化與報警 (Visualization & Alerting) 儀表板、追蹤歷程視覺化、警報 /SLO
  26. APIs & SDKs • Signals: Metrics, Logs, Traces, Baggage •

    Code-based ◦ All languages • Zero-code ◦ Go, .NET, PHP, Python, Java and JavaScript • OTel Operator for K8S OpenTelemetry 1. 應用程式 / 基礎設施 (Instrumentation) 埋點產生 Telemetry 資料:Metrics、Logs、Traces 2. 資料收集 (Collection) Agent / SDK 收集事件、上下文傳遞 (Context Propagator) 3. 處理與聚合 (Processing) 資料過濾/採樣、格式標準化、豐富化處理 4. 資料儲存後端 (Storage Backend) 5. 查詢與分析 (Query & Analysis) Ad-hoc 查詢、即時聚合/檢索、SLO/SLI 計算 6. 可視化與報警 (Visualization & Alerting) 儀表板、追蹤歷程視覺化、警報 /SLO Metrics DB Logs Store Trace Store Raw Events
  27. APIs & SDKs • Signals: Metrics, Logs, Traces, Baggage •

    Code-based ◦ All languages • Zero-code ◦ Go, .NET, PHP, Python, Java and JavaScript • OTel Operator for K8S OpenTelemetry 1. 應用程式 / 基礎設施 (Instrumentation) 埋點產生 Telemetry 資料:Metrics、Logs、Traces 2. 資料收集 (Collection) Agent / SDK 收集事件、上下文傳遞 (Context Propagator) 3. 處理與聚合 (Processing) 資料過濾/採樣、格式標準化、豐富化處理 4. 資料儲存後端 (Storage Backend) 5. 查詢與分析 (Query & Analysis) Ad-hoc 查詢、即時聚合/檢索、SLO/SLI 計算 6. 可視化與報警 (Visualization & Alerting) 儀表板、追蹤歷程視覺化、警報 /SLO Metrics DB Logs Store Trace Store Raw Events 安裝 SDK Zero Code
  28. APIs & SDKs • Signals: Metrics, Logs, Traces, Baggage •

    Code-based ◦ All languages • Zero-code ◦ Go, .NET, PHP, Python, Java and JavaScript • OTel Operator for K8S OpenTelemetry 1. 應用程式 / 基礎設施 (Instrumentation) 埋點產生 Telemetry 資料:Metrics、Logs、Traces 2. 資料收集 (Collection) Agent / SDK 收集事件、上下文傳遞 (Context Propagator) 3. 處理與聚合 (Processing) 資料過濾/採樣、格式標準化、豐富化處理 4. 資料儲存後端 (Storage Backend) 5. 查詢與分析 (Query & Analysis) Ad-hoc 查詢、即時聚合/檢索、SLO/SLI 計算 6. 可視化與報警 (Visualization & Alerting) 儀表板、追蹤歷程視覺化、警報 /SLO Metrics DB Logs Store Trace Store Raw Events Structured Logs Log 的來源 Context Propagation 上下文 Log Event 的其他資 訊
  29. APIs & SDKs • Signals: Metrics, Logs, Traces, Baggage •

    Code-based ◦ All languages • Zero-code ◦ Go, .NET, PHP, Python, Java and JavaScript • OTel Operator for K8S OpenTelemetry 1. 應用程式 / 基礎設施 (Instrumentation) 埋點產生 Telemetry 資料:Metrics、Logs、Traces 2. 資料收集 (Collection) Agent / SDK 收集事件、上下文傳遞 (Context Propagator) 3. 處理與聚合 (Processing) 資料過濾/採樣、格式標準化、豐富化處理 4. 資料儲存後端 (Storage Backend) 5. 查詢與分析 (Query & Analysis) Ad-hoc 查詢、即時聚合/檢索、SLO/SLI 計算 6. 可視化與報警 (Visualization & Alerting) 儀表板、追蹤歷程視覺化、警報 /SLO Metrics DB Logs Store Trace Store Raw Events { "name": "hello", "context": { "trace_id": "5b8aa5a2d2c872e8321cf37308d69df2", "span_id": "051581bf3cb55c13" }, "parent_id": null, "start_time": "2022-04-29T18:52:58.114201Z", "end_time": "2022-04-29T18:52:58.114687Z", "attributes": { "http.route": "some_route1" }, "events": [ { "name": "Guten Tag!", "timestamp": "2022-04-29T18:52:58.114561Z", "attributes": { "event_attributes": 1 } } ] } Hello Span Context Propagation 上下文 Log Event 的其他資訊
  30. APIs & SDKs • Signals: Metrics, Logs, Traces, Baggage •

    Code-based ◦ All languages • Zero-code ◦ Go, .NET, PHP, Python, Java and JavaScript • OTel Operator for K8S OpenTelemetry 1. 應用程式 / 基礎設施 (Instrumentation) 埋點產生 Telemetry 資料:Metrics、Logs、Traces 2. 資料收集 (Collection) Agent / SDK 收集事件、上下文傳遞 (Context Propagator) 3. 處理與聚合 (Processing) 資料過濾/採樣、格式標準化、豐富化處理 4. 資料儲存後端 (Storage Backend) 5. 查詢與分析 (Query & Analysis) Ad-hoc 查詢、即時聚合/檢索、SLO/SLI 計算 6. 可視化與報警 (Visualization & Alerting) 儀表板、追蹤歷程視覺化、警報 /SLO Metrics DB Logs Store Trace Store Raw Events Context Propagation • Attribute 是在一個 Request 內 • Baggage 可以跨 Requests • 常用在 ID 類的值傳遞 • 需在 code-base 進行設定 • 請特別留意資訊安全 Baggage
  31. 通訊協定 OTLP • SDK Exporter • Collector Receiver • Collector

    Exporter • 支援協定 • gRPC • HTTP + protobuf • HTTP + JSON OpenTelemetry 1. 應用程式 / 基礎設施 (Instrumentation) 埋點產生 Telemetry 資料:Metrics、Logs、Traces 2. 資料收集 (Collection) Agent / SDK 收集事件、上下文傳遞 (Context Propagator) 3. 處理與聚合 (Processing) 資料過濾/採樣、格式標準化、豐富化處理 4. 資料儲存後端 (Storage Backend) 5. 查詢與分析 (Query & Analysis) Ad-hoc 查詢、即時聚合/檢索、SLO/SLI 計算 6. 可視化與報警 (Visualization & Alerting) 儀表板、追蹤歷程視覺化、警報 /SLO Metrics DB Logs Store Trace Store Raw Events
  32. 1. 應用程式 / 基礎設施 (Instrumentation) 埋點產生 Telemetry 資料:Metrics、Logs、Traces 2. 資料收集

    (Collection) Agent / SDK 收集事件、上下文傳遞 (Context Propagator) 3. 處理與聚合 (Processing) 資料過濾/採樣、格式標準化、豐富化處理 OpenTelemetry 4. 資料儲存後端 (Storage Backend) 5. 查詢與分析 (Query & Analysis) Ad-hoc 查詢、即時聚合/檢索、SLO/SLI 計算 6. 可視化與報警 (Visualization & Alerting) 儀表板、追蹤歷程視覺化、警報 /SLO Metrics DB Logs Store Trace Store Raw Events OTel Collector (收集器) 可理解成 Proxy (代理) • Receiver • 使用 OTLP 收資料 • 從 stats API 取得資料 • Processor • 加工處理 • Exporter • 使用 OTLP 或其他標準傳 送資料
  33. 1. 應用程式 / 基礎設施 (Instrumentation) 埋點產生 Telemetry 資料:Metrics、Logs、Traces 2. 資料收集

    (Collection) Agent / SDK 收集事件、上下文傳遞 (Context Propagator) 3. 處理與聚合 (Processing) 資料過濾/採樣、格式標準化、豐富化處理 OpenTelemetry 4. 資料儲存後端 (Storage Backend) 5. 查詢與分析 (Query & Analysis) Ad-hoc 查詢、即時聚合/檢索、SLO/SLI 計算 6. 可視化與報警 (Visualization & Alerting) 儀表板、追蹤歷程視覺化、警報 /SLO Metrics DB Logs Store Trace Store Raw Events OTel Collector (收集器) 可理解成 Proxy (代理) • Receiver • 使用 OTLP 收資料 • Processor • 加工處理 • Exporter • 使用 OTLP 或其他標準傳 送資料 • Connectors
  34. 1. 應用程式 / 基礎設施 (Instrumentation) 埋點產生 Telemetry 資料:Metrics、Logs、Traces 2. 資料收集

    (Collection) Agent / SDK 收集事件、上下文傳遞 (Context Propagator) 3. 處理與聚合 (Processing) 資料過濾/採樣、格式標準化、豐富化處理 4. 資料儲存後端 (Storage Backend) 5. 查詢與分析 (Query & Analysis) Ad-hoc 查詢、即時聚合/檢索、SLO/SLI 計算 6. 可視化與報警 (Visualization & Alerting) 儀表板、追蹤歷程視覺化、警報 /SLO 回顧 OpenTelemetry • SDKs & API ◦ Signals • OTel Collector • OTLP 通訊協定 ◦ 可與支援的廠商工 具或產品互相溝通 • Context Propagation
  35. Trace 很重要的一件事 - Sampling (取樣) • Head Sampling 頭部取樣 •

    Application • 有可能遺漏重要 Trace • Tail Sampling 尾部取樣 • OTel Collector • 系統效能成本較高
  36. Sample Rate (取樣率) 如何設定? • Google Search 的實驗中,把 取樣率降到 1/16,對效能就

    較沒影響 • 要設多少?請依需求評估 • 1/1 全收集也是可以的 • 請務必自行 Benchmark Source: Dapper, a Large-Scale Distributed Systems Tracing Infrastructure
  37. 工具選擇建議 • 學習、經費有限 (工具比人貴): • 先從開源工具入手以理解基本原理,例如用 Prometheus + Grafana 搭配

    Jaeger 搭建一個簡單觀測環境,以熟悉 Metrics / Logs / Traces 的收集與查看方式。 • 後續若追求更完整的一體化體驗 或減少維運負擔 ,可考慮商業 平台。 • 經費充足、人手有限 (人比工具貴):SaaS • 不管選哪個,應該都要考慮使用 OpenTelemetry
  38. 參考資源 • OpenTelemetry 官方文件 • https://opentelemetry.io/docs/ • OpenTelemetry Demo 專案

    • https://opentelemetry.io/docs/demo/ • 喬叔帶你上手 Elastic Observability • https://training.onedoggo.com/tech-sharing/uncle-joe-teach-es-elastc-observability • 從零開始打造可觀測性平台 • https://speakerdeck.com/blueswen/cong-ling-kai-shi-da-zao-ke-guan-ce-xing-ping-tai • Grafana Labs - What is Observability • https://grafana.com/docs/grafana-cloud/introduction/what-is-observability/