Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Observability 101:從零開始了解可觀測性
Search
Blueswen
August 21, 2024
Programming
0
61
Observability 101:從零開始了解可觀測性
iThome 鐵人講堂 2024 - Observability 101:從零開始了解可觀測性
錄影:
https://itplus.ithome.com.tw/webinar-page/223
Blueswen
August 21, 2024
Tweet
Share
More Decks by Blueswen
See All by Blueswen
全方位強化 Python 服務可觀測性:以 FastAPI 和 Grafana Stack 為例
blueswen
1
480
從零開始打造可觀測性平台
blueswen
3
2.1k
國泰人壽的可觀測性實踐
blueswen
0
140
Other Decks in Programming
See All in Programming
TypeScriptでライブラリとの依存を限定的にする方法
tutinoko
2
660
イベント駆動で成長して委員会
happymana
1
320
CSC509 Lecture 11
javiergs
PRO
0
180
Jakarta EE meets AI
ivargrimstad
0
510
タクシーアプリ『GO』のリアルタイムデータ分析基盤における機械学習サービスの活用
mot_techtalk
4
1.4k
Better Code Design in PHP
afilina
PRO
0
120
Webの技術スタックで マルチプラットフォームアプリ開発を可能にするElixirDesktopの紹介
thehaigo
2
1k
Tauriでネイティブアプリを作りたい
tsucchinoko
0
370
LLM生成文章の精度評価自動化とプロンプトチューニングの効率化について
layerx
PRO
2
190
2024/11/8 関西Kaggler会 2024 #3 / Kaggle Kernel で Gemma 2 × vLLM を動かす。
kohecchi
5
910
What’s New in Compose Multiplatform - A Live Tour (droidcon London 2024)
zsmb
1
470
A Journey of Contribution and Collaboration in Open Source
ivargrimstad
0
880
Featured
See All Featured
Dealing with People You Can't Stand - Big Design 2015
cassininazir
364
24k
Docker and Python
trallard
40
3.1k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
Building Adaptive Systems
keathley
38
2.3k
Writing Fast Ruby
sferik
627
61k
Speed Design
sergeychernyshev
24
610
How STYLIGHT went responsive
nonsquared
95
5.2k
Building an army of robots
kneath
302
43k
Why Our Code Smells
bkeepers
PRO
334
57k
Facilitating Awesome Meetings
lara
50
6.1k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
1.9k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
506
140k
Transcript
iThome 鐵⼈講堂 2024 劉義瑋 Blueswen Observability 1 0 1 :從零開始了解可觀測性
⾃介 • 劉義瑋 Blueswen • blueswen @ GitHub •
⽬前擔任 DevOps Engineer,樂於分享與交流技術 • 領域 • DevOps • Observability • Developer Experience
Outline • 可觀測性介紹 • 可觀測性資訊資料流 • Metrics • Logs
• Traces • 資訊交互應⽤ • Recap 圖⽚來源:Grafana
可觀測性介紹
可觀測性介紹 圖⽚來源:Multi-Cloud Monitoring: A Cloud Security Essential Observability
可觀測性介紹 有⾜夠的資訊嗎? 他們都有被好好保存嗎? 有好好利⽤這些資訊嗎? 是否散落個處,形成 Data Silo? 透過各種資訊,清楚了解系統狀態 Log
⼯具 指標儀表板 APM ⼯具
可觀測性資訊 Observability Signals 指標 不同時間採樣的系統量化指標 如:CPU 使⽤率、API 回應時間 ⽇誌
紀錄系統中發⽣的事情 如:Debug 訊息、Exception 分散式追蹤 紀錄⾏為在不同服務中的歷程 如:SSO ⾏為橫跨多個服務 系統主動揭露讓我們能夠更理解它的資訊
可觀測性資訊 Observability Signals 徵狀:有問題發⽣ 脈絡:怎麼發⽣的 發⽣什麼事 哪裡發⽣的 狀況如何 系統主動揭露讓我們能夠更理解它的資訊
可觀測性資訊 - 應⽤於問題排除 圖⽚來源:Loki: Prometheus-inspired, open source logging for
cloud natives 徵狀 脈絡
可觀測性介紹 有⾜夠的資訊嗎? 他們都有被好好保存嗎? 有好好利⽤這些資訊嗎? 是否散落個處,形成 Data Silo? 透過各種資訊,清楚了解系統狀態 Log
⼯具 指標儀表板 APM ⼯具
可觀測性平台 - Grafana • Grafana Labs 開源的視覺化與儀表板⼯具,並提供告警功能 Metrics 儀表板範例
OpenTelemetry Application Performance Management
可觀測性平台 - Grafana Grafana 檢視 Log
可觀測性平台 - Grafana Grafana 檢視 Trace
可觀測性資訊資料流
可觀測性資訊資料流 ⽣成 收集 儲存 使⽤ 資訊處理四步驟
可觀測性資訊資料流
可觀測性資訊資料流 - Metrics
Metrics - Prometheus • Prometheus • 監控(Monitoring)與告警(Alerting)⼯具 • 2012
年應 Sound Cloud 內部監控需求開發 • 2016 年成為 CNCF 的第⼆個專案 • 收集不同時間點的量化指標,將之儲存並以 PromQL 語法提供查詢 Prometheus Metrics 爬取 使⽤ PromQL查詢
Metrics - ⽣成:Prometheus Metrics • Metrics ⽣成 • 通⽤格式:Prometheus
Metrics/OpenMetrics • 系統指標 • 機器相關的資訊,如:CPU、Memory、磁碟空間、JVM 資訊 • 產⽣指標的⼯具(Exporter) • Node Exporter、cAdvisor、JMX Exporter • 業務指標 • 應⽤、業務相關的資訊,如:Request 頻率、API 回應時間、Error Rate • 產⽣指標的⼯具 • Java Spring Boot:Spring Boot Actuator 搭配 Micrometer • 其他語⾔:Prometheus Client Library
Metrics - ⽣成:Prometheus Metrics container_memery_usage_bytes{name="garafna"} [value] Metrics Name Label
Pair
Metrics - 收集與儲存:Prometheus http://app-a: 8 0 0 0 /metrics
Scrape
Metrics - 使⽤:Grafana Dashboard
Metrics - Data Flow ⽣成 收集 儲存 使⽤
可觀測性資訊資料流 - Logs
Logs - ⽣成 • 內容 • 時間、Level、其他補充資訊 • 格式
• ⾮結構化 • ⼀般搭配 Log Pattern,例如 %d{yyyy-MM-dd HH:mm:ss} [%- 5 p] [%c] [%t] %m%n • 結構化 • JSON • Logfmt • time=" 2 0 2 1 - 0 9 - 1 9 1 5 : 0 0 : 0 0 " level="INFO" logger="main" message="Hello World!" • ⽅式 • Console:通過 STDOUT 或 STDERR 輸出⾄ Console • File:記錄在檔案中,可能搭配 Rotate 進⾏檔案管理 • Stream:透過網路傳輸,將 Log 即時輸出⾄儲存 Log 的服務
Logs - 收集與儲存:Loki & Promtail • Loki • Grafana
Labs 開源的 Log 儲存與查詢⼯具 • 借鑑 Prometheus,只針對時間與 Label 建⽴索引 • 借鑑 PromQL,設計 LogQL 供查詢 Log • 簡單易⽤,就像是使⽤ Ctrl + F / CMD + F ⼀樣 • Promtail • 專為 Loki 設計的 Log 收集器,爬取 Log 後推送⾄ Loki 儲存 • 借鑑 Prometheus 爬取設定的⽅式
Logs - 收集與儲存:Loki & Promtail Push Scrape Promtail 負責爬取
Log 後推送⾄ Loki
Logs - 使⽤:Grafana Explore Log
Logs - Data Flow ⽣成 收集 儲存 使⽤
可觀測性資訊資料流 - Traces
Traces(Distributed Tracing) • ⽤於監控跨服務請求,透過統⼀的 Trace ID 串聯,紀錄同⼀個⾏為在不同服 務間的歷程資訊,例如:執⾏時間、錯誤訊息、請求來源 IP、SQL
語法等
Traces - OpenTelemetry • OpenTelemetry • 處理 Telemetry Data(Metrics,
Logs, Traces) 的 API、SDK、Tool 組合包 • CNCF Incubating Project, 2 0 1 9 年由 OpenTracing 與 OpenCensus 合併⽽成 • OpenTelemetry ⽬前已經有超過 60 個組織⽀援 API SDK Collector 資料格式(OTLP) 傳輸⽅式(HTTP、gRPC) 開發⼯具 Telemetry Data 收集器
Traces - ⽣成:OpenTelemetry Instrumentation • Instrumentation • Manual ⼿動設定:搭配
SDK ⾃⾏調整程式 • Python:Instrumentaion • Automatic ⾃動設定:搭配語⾔、框架的機制,⾃動注⼊到程式中,無須 調整程式碼,但仍可搭配 SDK 進⾏額外客製 Python 與 Java 使⽤ Automatic Instrumentation 範例
Traces - ⽣成:OpenTelemetry Instrumentation 使⽤ Automatic Instrumentation 後,若使⽤的套件有⽀援 能夠⾃動紀錄進出該服務的
HTTP 或資料庫等網路請求
Traces - ⽣成:OpenTelemetry Instrumentation HTTP Request,紀錄 URL、IP 、Status Code等資訊
Traces - ⽣成:OpenTelemetry Instrumentation DB 操作,紀錄 SQL、User 等資訊
Traces - ⽣成:OpenTelemetry Instrumentation • 搭配 Instrumentation 與 SDK,Application
可以取得 Trace 資訊注⼊ Log 中 • Java:搭配 Log 4 j、Logback 應⽤ MDC 機制注⼊ • Python:搭配 Logging Instrumentation 帶有 Trace 與 Span 資訊的 Log
Traces - 收集與儲存:Tempo • Tempo • Grafana Labs 開源的
Distributed Tracing 儲存後端 • ⽀援 OpenTelemetry、Jaeger、Zipkin
Traces - 使⽤:Grafana Explore Traces
Traces - Data Flow ⽣成 推送 儲存 使⽤
可觀測性資訊資料流
資訊交互應⽤
資訊交互應⽤ 圖⽚來源:CNCF Observability Whitepaper 可觀測資訊彼此間是有關係的,例如時間區段、Trace ID
資訊交互應⽤ - Grafana Exemplar 時間區段同步 Trace ID 連結
資訊交互應⽤ - Metrics vs Logs 利⽤同步時間功能同時查詢 Metrics 與 Logs
資訊交互應⽤ - Metrics vs Logs 利⽤同步時間功能同時查詢 Metrics 與 Logs
資訊交互應⽤ - Exemplar: Metrics vs Traces 搭配 Exemplar 在
Metrics 上紀錄 Trace ID,連結 Metrics 與 Traces
資訊交互應⽤ - Traces vs Logs 點擊 Span 右側的 Log
ICON 可查詢對應 Log
資訊交互應⽤ - Traces vs Logs 展開 Log 明細點擊連結可查看該筆 Trace
Recap
• 可觀測性 • 系統可被觀測或測量的⼀種特性,反應對系統的掌握度 • 評量標準:透過各種資訊,清楚了解系統狀態 • 擴充可觀測性資訊 • Metrics、Logs、Traces
• ⽣成、收集、儲存、使⽤ • 單⼀平台檢視,⼀覽系統現狀 • 於 Grafana 統⼀檢視,資訊建⽴關聯,交互應⽤、產⽣綜效 Recap
延伸閱讀 • 從零開始打造可觀測性平台:可觀測性平台 Workshop 簡報與 Lab • iThome 鐵⼈賽
• 時光之鏡:透視過去、現在與未來的 Observability:Observability 概 念、⼯具與應⽤介紹 • 你以為你在學 Grafana 其實你建⽴了 Kubernetes 可觀測性宇宙:LGTM Stack with Kubernetes • 淺談DevOps與Observability:Observability ⼯具與概念介紹 • Grafana 全家桶,如何打造⾼可⽤且具可擴充性的 o 1 1 y 平台 • Observability Conference 2 0 2 3
延伸閱讀 • Demo Project • FastAPI Observability • Spring
Boot Observability • FastAPI Tracing with Jaeger through OpenTelemetry • OpenTelemetry Application Performance Management • Prometheus: The Documentary - Prometheus 紀錄⽚ • The Grafana documentary: The fi rst 1 0 years - Grafana 紀錄⽚