iT邦幫忙

2025 iThome 鐵人賽

DAY 30
5

今天是參加鐵人賽的第三十天,意味著此系列文也將告一段落了。

回顧這三十天,我們從 observability 2.0 的角度來看可觀測性工程,了解了:

1. Observability 2.0 的精神

  • 傳統的 metrics、logs、traces 三大支柱各自獨立,資料分散在不同系統中難以關聯分析
  • Observability 2.0 提出 single source of truth 的概念,使用夠寬的結構化日誌統一儲存所有可觀測性資料,讓 traces 和 metrics 都能從同一份資料中查詢與聚合

2. OpenTelemetry 介紹

  • 作為可觀測性資料收集的統一標準,OpenTelemetry 定義了 traces、metrics、logs 三大訊號的資料模型,以及如何在分散式系統中透過 context propagation 和 baggage 傳遞上下文
  • Collector 採用 pipeline 架構,透過 receivers、processors、exporters 處理資料流,支援 agent 和 gateway 等多種部署模式
  • Instrumentation 分為自動和手動兩種方式,讓開發者能在應用程式中埋點產生 telemetry 資料

3. Data Lakehouse 與欄式儲存

  • 從 Data Lake 演進到 Data Lakehouse,結合了 data warehouse 的 ACID 特性與 data lake 的彈性儲存,透過 table format(如 Apache Iceberg、S3 Tables)管理大量資料
  • 欄式儲存格式 Parquet 針對分析場景優化,透過 column chunk、page、encoding、compression 等設計大幅提升查詢效能
  • OLAP 查詢引擎搭配適當的索引與分區策略能進一步優化效能

4. eBPF

  • eBPF 能在 kernel 層級收集系統可觀測性資料,無需修改應用程式或插入 instrumentation 就能獲得網路、系統調用、效能等深入資訊
  • bpftrace 提供高階腳本語言簡化 eBPF 程式開發,並能與 OpenTelemetry 整合,將 kernel 層級的資料匯入統一的可觀測性平台

Observability 2.0 是我先前沒有接觸過的概念,為了達成 single source of truth 的精神,要怎麼處理多個來源且大量的資料著實是一項大挑戰。為了能做到這點,就不得不提如 data lakehouse、Iceberg、Parquet 等相關技術。由於我之前的工作和網頁後端開發、維運比較相關,所以像是這樣和 data engineering 相關的概念幾乎可說是一無所知。甚至即使之前已經有 SRE 的經驗,但是卻沒有使用過 OpenTelemetry,也是在工作接觸以及撰寫鐵人賽的期間才開始慢慢翻文件、動手實作。

此外,我也發現不管是在工作場合或是私下的朋友交流,自己都沒辦法很清楚地說明並解釋一項技術,常常會越說越心虛緊張,到頭來對方也無法明白自己在說什麼,失去了原先交流技術的意義。

所以想著,鐵人賽或許是個很好的學習機會,可以從頭把自己學習的技術再說一遍,從整個系列文的章節編排,到每一天的文章都在取捨哪些要說?要說到哪個程度?敘事順序應該怎麼安排才能讓讀者能更加了解?雖然以前會寫一些技術部落格,但是針對同一個主題連續寫三十篇文章,倒是第一次。

再來,我其實是在完全零存稿的狀況下開賽。在第一天撰寫系列文大綱時,只有大略想好要寫些什麼,例如說 OpenTelmetry、S3 Table 等等⋯⋯是隨著比賽進行,自己在工作期間也翻了許多文件與 POC,才漸漸地對要怎麼架構一套可觀測性系統有了比較明確的想像,例如說要怎麼使用 OpenTelemetry Collector 收集資料、要怎麼設計 data pipeline 轉換資料、哪些儲存後端適合存放可觀測性資料、欄式儲存或列式儲存的取捨為何、Parquet 和 Iceberg 要解決怎樣的問題、AWS 新推出的 S3 Table 服務可以解決哪些問題等等。

甚至 eBPF,也是先前因為興趣使然研究到一半,發現它可以和 OpenTelemetry 串接,所以硬加進來的XD(也或許明年可以寫一個 eBPF 系列!?)

所以這篇系列文並不能說是好?因為每一篇文章其實就是每一天的學習痕跡,每次回頭來看,也會發現現在的自己又比那一天的自己多懂了一些(或者發現文章有錯誤趕快編輯掉),或許這樣就是今年鐵人賽的最大收穫了吧。

最後,我要感謝一起和我參加鐵人賽的朋友紹賢和 Ian,如果沒有每天收到你們發文的通知提醒,我大概早就棄賽了。再來,要感謝我現在的同事與前輩們,雖然網路上的資料非常多,但如果沒有你們的提點和指引,或許我還對如何設計一套可觀測性系統仍舊一無所知。

也期許自己明年能夠繼續參賽,但也希望能與今年不同,是在有存稿、有準備的狀況下參賽,也希望一年後的自己已經累積了更多的經驗與知識,提供更高品質的技術文章,以及在文章中能有更多自己的洞見與經驗分享。


上一篇
Day 29 - 將 eBPF 資料串接到 OpenTelemetry
系列文
被稱作Server Restart Engineer的我,也想了解如何實踐可觀測性工程30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
mikehsu0618
iT邦研究生 5 級 ‧ 2025-10-14 00:20:12

恭喜完賽

Sophie iT邦新手 5 級 ‧ 2025-10-14 21:46:39 檢舉

非常感謝你!之前常常閱讀你的鐵人賽文章,也因此受到很多啟發,也恭喜你完賽!!

0
Zzzzzzz
iT邦新手 5 級 ‧ 2025-10-16 16:15:42

恭喜完賽,看完學習到好多東西,我也想成為 Server Restart Engineer

Sophie iT邦新手 5 級 ‧ 2025-10-17 09:36:29 檢舉

一起加油~

1
雷N
iT邦研究生 1 級 ‧ 2025-10-17 16:35:22

恭喜完賽!!! 完結撒花
eBPF 系列 我看到了,期待,超硬核

我要留言

立即登入留言