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
52
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
450
從零開始打造可觀測性平台
blueswen
3
2.1k
國泰人壽的可觀測性實踐
blueswen
0
140
Other Decks in Programming
See All in Programming
Identifying User Idenity
moro
6
7.5k
PHP でアセンブリ言語のように書く技術
memory1994
PRO
1
150
Nuxt UI Pro、NuxtHub、Nuxt Scripts、Nuxtエコシステムをふんだんに利用して開発するコーポレートサイト@Vue Fes Japan 2024
shingangan
3
870
offers_20241022_imakiire.pdf
imakurusu
2
360
Kubernetes for Data Engineers: Building Scalable, Reliable Data Pipelines
sucitw
1
190
OpenTelemetryでRailsのパフォーマンス分析を始めてみよう(KoR2024)
ymtdzzz
4
1.5k
弊社の「意識チョット低いアーキテクチャ」10選
texmeijin
5
22k
推し活の ハイトラフィックに立ち向かう Railsとアーキテクチャ - Kaigi on Rails 2024
falcon8823
6
2k
約9000個の自動テストの 時間を50分->10分に短縮 Flakyテストを1%以下に抑えた話
hatsu38
22
10k
/←このスケジュール表に立ち向かう フロントエンド開発戦略 / A front-end development strategy to tackle a single-slash schedule.
nrslib
1
590
VR HMDとしてのVision Pro+ゲーム開発について
yasei_no_otoko
0
100
飲食業界向けマルチプロダクトを実現させる開発体制とリアルな現状
hiroya0601
1
390
Featured
See All Featured
GitHub's CSS Performance
jonrohan
1030
460k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
A Tale of Four Properties
chriscoyier
156
23k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
6.9k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
31
2.6k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Faster Mobile Websites
deanohume
304
30k
Rails Girls Zürich Keynote
gr2m
93
13k
5 minutes of I Can Smell Your CMS
philhawksworth
202
19k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
46
2.1k
The Cult of Friendly URLs
andyhume
78
6k
Product Roadmaps are Hard
iamctodd
PRO
48
10k
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 紀錄⽚