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
『ドメイン駆動設計をはじめよう』のモデリングアプローチ
masuda220
PRO
8
540
EMになってからチームの成果を最大化するために取り組んだこと/ Maximize team performance as EM
nashiusagi
0
100
Vapor Revolution
kazupon
1
110
Make Impossible States Impossibleを 意識してReactのPropsを設計しよう
ikumatadokoro
0
240
初めてDefinitelyTypedにPRを出した話
syumai
0
420
OnlineTestConf: Test Automation Friend or Foe
maaretp
0
120
Functional Event Sourcing using Sekiban
tomohisa
0
100
Enabling DevOps and Team Topologies Through Architecture: Architecting for Fast Flow
cer
PRO
0
340
subpath importsで始めるモック生活
10tera
0
320
TypeScript Graph でコードレビューの心理的障壁を乗り越える
ysk8hori
3
1.2k
Hotwire or React? ~アフタートーク・本編に含めなかった話~ / Hotwire or React? after talk
harunatsujita
1
120
みんなでプロポーザルを書いてみた
yuriko1211
0
280
Featured
See All Featured
Code Reviewing Like a Champion
maltzj
520
39k
Done Done
chrislema
181
16k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
How to Think Like a Performance Engineer
csswizardry
20
1.1k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
25
1.8k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Six Lessons from altMBA
skipperchong
27
3.5k
A Philosophy of Restraint
colly
203
16k
Become a Pro
speakerdeck
PRO
25
5k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
329
21k
How to train your dragon (web standard)
notwaldorf
88
5.7k
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.5k
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 紀錄⽚