Grafana 經過十年的發展,從單純的折線圖繪製,進化為支援多種資料來源的資料視覺化與監控首選開源工具。對於初學者來說,重點在於如何使用 Grafana 快速解決問題;對於有經驗的使用者而言,如何充分利用並精進 Grafana 的各種功能仍然充滿挑戰。
這次的分享將從基礎操作到進階應用,全面涵蓋 Dashboard 設計最佳實踐、Alerting 及 Grafana 管理,並包含完整的 Lab 供動手應用。希望幫助大家對 Grafana 有更深入的了解,擴展更多對 Grafana 應用的想像。
在知名架構師左耳朵耗子─陳皓的文章「如何做一个有质量的技术分享」中,他提到:「分享是學習知識最難的方式。與觀眾相比,分享者反而是從中獲益最多的人。」作為 Grafana 的長期使用者,也希望自己可以在這次的分享從頭並且更深入地學習 Grafana。
這次也會比照去年的系列文「時光之鏡:透視過去、現在與未來的 Observability」,同時分享周邊的工具與各種背景小故事。這些延伸是我覺得 DevOps 最有趣的地方,在學習時可以淺嚐即止,可以深入研究,也能不停往外延伸拓展知識邊界,能夠在痛苦中快樂地學習著 XD。去年的可觀測性系列文已經出版成冊,除了原有內容更新外還新增了前端的可觀測性,如果想瞭解更多可觀測性歡迎選購《可觀測性入門指南》。
基礎篇
進階篇
管理篇
應用篇
總結篇
所有範例程式碼將會放置於 https://github.com/blueswen/grafana-zero-to-hero 上供參考與使用。
象徵兼容各種資料源的 Big Tent,圖片來源:Grafana overview deck
時間先回到 2013 年 Grafana 建立的前夕,當時 Grafana 的作者 Torkel Ödegaard 還在 eBay 旗下的北歐五國最大網拍平台 Tradera 工作擔任工程師,那時 Torkel 已經導入 Graphite 收集時間序列指標用於監控分散式系統,並逐漸擴展到商業指標跟系統異動影響監控等。但隨著使用場景增加,Graphite 內建的視覺化工具難以建立易用的 Dashboard 的痛點讓 Torkel 開始思考有沒有更好的解決方案。
Kibana 是當時另一個社群常用的視覺化工具,主要搭配 ElasticSearch 一起作為日誌管理方案,能夠針對 Log 產出各式各樣的 Dashboard,但只支援 ElasticSearch 作為資料來源。不過好在 Kibana 是開源專案,於是在 2013 年的 12 月 Torkel 花了幾天的時間 fork Kibana 後移除不需要的部分,接上 Graphite 作為資料來源,開發出了初版的 Grafana,而 Grafana 這個名字就是從 [Graph]ite 結合 Kib[ana] 而來。
Kibana 在 2013 年的畫面,圖片來源:Elastic Blog
2014 年 1 月發佈的 Grafana v1.0 畫面,圖片來源:torkelo/grafana
隨著使用者的增加,不同資料來源的需求開始被提出,除了 Graphite 外 Grafana 也開始支援其他不同的資料來源,例如 InfluxDB、Prometheus 等。Prometheus 是目前廣受歡迎的監控和告警工具之一,主要用於收集和處理指標,它源於 2012 年音樂分享平台 SoundCloud 的內部需求,並在一開始就以開源專案的形式發佈,並逐漸累積人氣。Prometheus 的設計理念也深獲 Kubernetes 團隊喜愛,所以在早期就支援以 Prometheus 進行監控,隨著 Kubernetes 的熱潮大大增加了 Prometheus 的可見度和使用率,也讓能與 Prometheus 有良好互動的 Grafana 收穫了為數不少的使用者。
2014 年 Torkel 開始專職開發 Grafana,並和 Raj Dutt 與 Anthony Woods 成立了 RainTank 提供以 Grafana 為主的 Monitoring SaaS 平台並推廣 Grafana,但 Grafana 本身仍舊是開源的專案供使用。當時團隊的目標是 Democratize Metrics 民主化指標,讓大家都可以自由取用 Metrics,繪製出自己心中想要的呈現方式。並開始逐步發展發展出 Big Tent 的策略,透過 Plugin System 讓大家都可以使用自己想要的視覺化方式跟資料源,不侷限於官方提供的工具,進一步擴大了使用者。
RainTank 網站,圖片來源:The Story of Grafana | Episode 3: Open (Source) for Business | Grafana Documentary
Grafana 早期使用的 Democratize Metrics 標語,圖片來源:Democratize Metrics: What Does It Mean?
經過多年的發展後 RainTank 在 2017 年 Rebranding 成現在大家熟知的 Grafana Labs,並逐漸從 Monitoring 擴展到 Observability 可觀測性的領域,而產品線也隨之多元化發展,發佈了儲存 Log 的 Loki、儲存 Prometheus Metrics 的 Mimir、儲存 Traces 的 Tempo 等工具。近期也積極透過收購擴張,例如用於 Profiling 的 Pyroscope 、負載測試的 K6 等,但仍秉持著 Grafana Labs 核心的開源精神,這些專案都還是保有開源版本。
由 Loki(L)、Grafana(G)、Tempo(T)、Mimir(M)組成的 LGTM 圖案,跟 PR 常用的 LGTM(Looks Good To Me)相同,也象徵系統一切運作如常 Looks Good To Me,圖片來源:Grafana Labs GitHub
在商業上,Grafana Labs 2024 年獲得一筆新的融資後估值達到了 60 億美金,2023 年度的收入也超過了 1.5 億美金,預計 2024 年度可以達到 2.5 億美金,2024 年也再度入選 Forbes Cloud 100 名列 23。雖然跟其他已經上市的監控領域與可觀測性領域公司相比仍偏小,但 Grafana Labs 是相對擁抱開源的一家公司,並積極貢獻開源專案。近年來 Grafana Labs 也開始在社群積極推廣各類技術與應用,並舉辦各種活動等等,還從 Grafana 的第一版恐龍 Logo 發想出了代表的吉祥物 Grot,現在在各種活動都可以看到它的身影。
Grafana 的第一版 Logo 與 Grot,圖片來源:Grafana GitHub Repository、Grafana Golden Grot Awards
Grafana 最常見的應用是監控機器與服務,例如 Kubernetes 的開源監控方案大多是直接上一套 Prometheus 跟 Grafana 的組合;Linux Server 的監控也有歷史悠久經無數前輩打磨的 Node Exporter 能直接搭配使用。
Kubernetes 監控組合 kube-prometheus-stack 內建 Dashboard
Node Exporter Dashboard,圖片來源:Node Exporter Full
開源與高度客製性也廣受各種非傳統軟體工程領域親睞,例如:產線設備監控、太空任務監控。
產現設備監控,圖片來源:Industrial IoT visualization: Why United Manufacturing Hub chose Grafana to power its IIoT platform
NASA 的月球登陸任務監控,圖片來源:Intuitive Machines-1 Lunar Landing (Official NASA Broadcast)
日本 JAXA 的月球登陸任務監控,圖片來源:How Japan's space agency used Grafana to monitor its first moon landing in real time
個人化的應用也有很多有趣的案例,例如:通勤路線監控、小孩房間打掃紀錄、智慧家庭等等。
通勤路線監控,圖片來源:Monitoring your morning commute with Grafana: the story of a Golden Grot Awards winner
搭配 Slack 紀錄的小孩房間打掃紀錄,圖片來源:How to monitor your kids' chores: An introduction to Grafana-powered parenting
監控家中各種 IOT 設備,圖片來源:How to set up home automation: A beginner's guide with Grafana Cloud and Home Assistant
為了推廣 Grafana 與旗下各類產品,Grafana Labs 會舉辦各種活動:
雖然在台灣幾乎沒有官方活動,但大多內容都會有錄影上傳在官方 YouTube 或是官網,並且都可以免費觀看,很適合作為新知吸收或是發想的來源。
從 2014 年首次釋出到現在 Grafana 已經走過了第一個十年,這十年間監控的需求與多樣性只增不減,衍伸出的 Observability 可觀測性也逐漸成為大家關注的焦點,一直持續在這領域耕耘的 Grafana 絕對會是你的開源可觀測性工具首選,接下來讓我們一起來學習 Grafana 吧!