鐵人賽挑戰的最後一天終於到來了。相比於前兩年的參賽經驗,我今年投入了更多的時間和精力,即便提前兩個半月開始準備,依然寫到了最後一天才完成所有內容。
最初決定參賽時,我並沒有明確的主題,因為過去半年到一年的工作經歷中,我接觸並深入理解了更多 Grafana 和 可觀測性的應用場景,並在實務中不斷累積經驗。這些經驗不僅限於技術領域,還涵蓋了 團隊管理、日常維運、架構設計,以及如何靈活運用系統的能力。
在探索的過程中,我觀察到 Grafana 和 可觀測性涵蓋了非常廣泛的技術領域。我們不僅需要搭建良好的基礎設施,還需要確保它能穩定運作。但這些還不夠,往往我們還需要深入理解不同程式語言及其熱門框架的特性,才能真正解決使用者對可觀測性不足的痛點。因此,我們需要從前端、後端及基礎設施的不同層面進行驗證,確保所搭建的可觀測性系統能有效解決問題。這樣的廣度與深度,也使得進入可觀測性領域具備一定的門檻。
如今,Grafana 已經成為可觀測性生態的核心,不論是可觀測性三本柱、告警管理、團隊協作,甚至是日益成熟的 LLM 技術,都圍繞著 Grafana 來構建。我堅信,一個成熟的 Grafana 生態,絕不僅僅是搭建 LGTM 服務和收集遙測資料這麼簡單。
這次參賽,我選擇挑戰 Grafana 領域的聖杯,也就是我系列文中深入探討的幾個核心主題:「Grafana 可觀測性中心化架構」、「Grafana IaC 實踐」以及「Grafana 告警事件中心架構」。這些議題在網路上難以找到標準答案,因為這些領域要麼範圍廣泛且邊界模糊,要麼因為關注度不足而缺乏成熟的方案。這也是許多 開源服務 常見的困境:專案雖然小巧靈活,但難以與其他專案深度整合,或者共享同一套管理邏輯,這也增加了維護人員的心智負擔。
這正是我參賽的初衷——在探索的過程中,找到屬於自己的最佳實踐。雖然還有很多想法未能完全傳達,也有許多細節可以改進,但我依然為自己感到高興,因為我又一次堅持到了最後,朝理想中的自己邁進了一大步。我想,這就是鐵人賽想要傳遞的精神吧。
延續每年的好習慣,我們來檢視一下,是否如願完成了去年為自己規劃的學習路線?幸運的是,答案是肯定的!
去年我認為,Grafana 加上 Loki、Tempo、Mimir 這組強大的技術組合,已經足以在可觀測性領域中縱橫無阻。然而,在我深入探索了 Grafana 生態下的各種可觀測性工具後,不僅理解了它們各自的技術特性,還逐漸了解了其背後試圖解決的應用場景。我發現,可觀測性世界的廣度和深度遠超我的想像,充滿了未知和挑戰。正是這份探索的過程,讓我對未知領域充滿了好奇心,而這份好奇心也成為我不斷前行的動力。
在我不斷探索 Grafana 提供的可觀測性生態系時,如同之前所提到的,這些技術涵蓋了廣泛的軟體領域。因此,我在學習過程中收穫頗豐,也同時認識到自己的不足。新興的技術如 eBPF,不同系統和資料庫的效能監控,還有雲原生項目必備的語言 Golang 的基本功,甚至更底層的網絡和 Linux 知識,都是我在這片浩瀚技術宇宙中的探索方向。
到這裡,我不禁想:「既然領域這麼廣闊,為什麼我不找一些幫手,集思廣益呢?」這正是「Grafana 遠征科研小隊」誕生的初衷。
接下來,我們將基於團隊成員的技能最大公約數,開發一些真正能進一步提升可觀測性領域使用體驗的應用服務,提供比 Grafana OSS Dashboard 和 Panel 更加整合和友好的使用體驗。乍聽之下,這似乎與 Grafana Cloud 提供的服務類似。Grafana Cloud 為我們提供了許多精心設計的使用者介面,加上健全的基礎設施,讓用戶可以快速、無痛地實現 Grafana 全家桶的可觀測性架構。
然而,我們深知,除了基礎設施外,良好的可觀測性應用設計,才能帶來真正的 Actionable Insight。因此,我們將嘗試實現那些目前只在 Grafana Cloud 上獨有的功能,並結合我們的技術進行改良與創新,甚至融入 LLM 相關功能,這些都將是我們努力的方向。
使用過 Loki 的朋友可能會知道,要查看每個 Stream 所佔用的容量大小或寫入速率,往往是一個麻煩且低效的過程。這是因為 Loki 本身不會為每筆資料建立索引。即便只是想計算某個服務一整天的 Log 寫入量,也必須先將所有 Log Chunk 下載、解壓縮後才能計算,而無法通過相關的索引指標來快速查詢。
為了解決這個問題,Grafana Cloud 獨家推出了 Log Volume Explorer,這個工具讓查看 Log 容量變得更加便捷。對我而言,這是目前最實用的應用之一。更讓我感到興奮的是,這也成為了我們 Grafana 科研小隊 開發的第一個 Grafana 應用,非常高興看到這項成果的實現。
此外,我們實現的 Frontend Observability 是 Grafana Cloud 用來實現 RUM 監控(Real User Monitoring)的應用介面。實際上,我們會使用 Faro-Web-SDK,自動收集終端使用者的可觀測性資料,並將其發送到 Loki 和 Tempo 等可觀測性後端系統,然後在 Grafana 的 UI 中進行統一展示。
然而,原本的 Grafana Dashboard 無法完美展示這些來自黑盒子的數據,無法充分發掘它們的真正價值。因此,我們需要通過自訂 Dashboard 來最大化這些資料的價值展現,這也是我們整合 Grafana 上下游技術的目標之一。
首先要恭喜各個堅持到這裡的鐵人們,三十天三十篇文章,背後經歷著無數下班後奮鬥的夜晚,只有每位鐵人自己知道。在這些日子中,自己給的壓力完全不小於工作,在探討許多沒有答案的難題時,我也解答了自己很多放在心中許久的疑問。
同時再次感謝這次陪我一起參賽的兩位強大隊友,今年的我又比去年更加強大。這對我來說意義非凡,畢竟打從自學轉職後,我一直是獨自面對冰冷的線上教學自己鑽研文件。而現在我也有可以互相信任的夥伴了,這些都是推動我向前的巨大動力!最後就向各位分享他們的精彩傑作。
最後,我將會繼續往 Grafana 與可觀測性領域深掘,並且開始補足在這次鐵人賽中,有人敲碗或來不急寫成文章的內容。如果有興趣的企業合作或諮詢,請不用客氣的使用各種方式讓我知道。
恭喜大大完賽,一起組隊參賽然後有共同專案的概念很酷!完賽後終於有時間來拜讀大大的文章了~
感謝~也恭喜大大完賽
大部分內容都只在研究性質,完成度不高請斟酌觀看