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
110
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
0
380
全方位強化 Python 服務可觀測性:以 FastAPI 和 Grafana Stack 為例
blueswen
1
610
從零開始打造可觀測性平台
blueswen
3
2.1k
國泰人壽的可觀測性實踐
blueswen
0
160
Other Decks in Programming
See All in Programming
testcontainers のススメ
sgash708
1
120
良いユニットテストを書こう
mototakatsu
8
2.9k
MCP with Cloudflare Workers
yusukebe
2
220
数十万行のプロジェクトを Scala 2から3に完全移行した
xuwei_k
0
280
開発者とQAの越境で自動テストが増える開発プロセスを実現する
92thunder
1
190
Mermaid x AST x 生成AI = コードとドキュメントの完全同期への道
shibuyamizuho
0
160
KMP와 kotlinx.rpc로 서버와 클라이언트 동기화
kwakeuijin
0
160
Effective Signals in Angular 19+: Rules and Helpers
manfredsteyer
PRO
0
110
StarlingMonkeyを触ってみた話 - 2024冬
syumai
3
270
Асинхронность неизбежна: как мы проектировали сервис уведомлений
lamodatech
0
850
ChatGPT とつくる PHP で OS 実装
memory1994
PRO
2
120
PHPで作るWebSocketサーバー ~リアクティブなアプリケーションを知るために~ / WebSocket Server in PHP - To know reactive applications
seike460
PRO
2
550
Featured
See All Featured
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Agile that works and the tools we love
rasmusluckow
328
21k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
810
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
127
18k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Optimising Largest Contentful Paint
csswizardry
33
3k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
330
21k
A Tale of Four Properties
chriscoyier
157
23k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
28
2.1k
No one is an island. Learnings from fostering a developers community.
thoeni
19
3k
Being A Developer After 40
akosma
87
590k
Designing for Performance
lara
604
68k
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 紀錄⽚