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
210
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
快速入門可觀測性
blueswen
1
630
全方位強化 Python 服務可觀測性:以 FastAPI 和 Grafana Stack 為例
blueswen
1
1.1k
從零開始打造可觀測性平台
blueswen
3
2.2k
國泰人壽的可觀測性實踐
blueswen
0
200
Other Decks in Programming
See All in Programming
Носок на сок
bo0om
0
1.3k
最速Green Tea 🍵 Garbage Collector
kuro_kurorrr
1
120
iOSアプリで測る!名古屋駅までの 方向と距離
ryunakayama
0
160
Browser and UI #2 HTML/ARIA
ken7253
2
180
エンジニアが挑む、限界までの越境
nealle
1
330
Cursor/Devin全社導入の理想と現実
saitoryc
29
22k
ビカム・ア・コパイロット
ymd65536
1
130
Beyond_the_Prompt__Evaluating__Testing__and_Securing_LLM_Applications.pdf
meteatamel
0
110
私のRubyKaigi 2025 Kaigi Effect / My RubyKaigi 2025 Kaigi Effect
chobishiba
1
120
Storybookの情報をMCPサーバー化する
shota_tech
3
1.1k
Cursorを活用したAIプログラミングについて 入門
rect
0
200
KANNA Android の技術的課題と取り組み
watabee
1
510
Featured
See All Featured
The Language of Interfaces
destraynor
158
25k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
105
19k
Become a Pro
speakerdeck
PRO
28
5.3k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
19
1.2k
The Cult of Friendly URLs
andyhume
78
6.3k
Bash Introduction
62gerente
613
210k
Writing Fast Ruby
sferik
628
61k
Designing Experiences People Love
moore
142
24k
Making the Leap to Tech Lead
cromwellryan
133
9.3k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.3k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
26k
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 紀錄⽚