監控節點的度量指標:Grafana 串接 Prometheus

監控節點的度量指標:Grafana 串接 Prometheus

前面的討論中,我們可以用 Prometheus 去監控 End Devices,但 Prometheus 內建的 Dashboard 只是為了開發用,缺乏許多進階功能,在真正需要資料視覺化時並不方便。因此 Prometheus 通常會跟 Grafana 搭配使用。

Grafana 是一套開源的 Dashboard 平台,之前開發產品時,有用過 Grafana 來呈現 Database 中的資料。其實用起來還是偏 Monitor Host,並不適合用在 Domain Data Visualization,但在開發初期,我們可以先借用 Grafana 的呈現能力來確認方向(反正開發初期規格會一直修改,重要的是工具能否快速調整,實不實用倒是其次)。

Install Grafana

跟 Prometheus 一樣,用 docker 來安裝

docker run -p 3000:3000 --user root --name grafana -v "$PWD"/docker/grafana:/var/lib/grafana grafana/grafana &

用 -p 將 port forward 到 3000;用 -v 將 grafana 內的資料 bind 到家目錄的資料夾。

安裝完成後,在瀏覽器輸入 URL,應該能看到登入畫面

Setup Data Source

輸入預設的帳號密碼 admin:admin 後登入

需要在 Grafana 中加入 Data source,Grafana 才知道要去哪裡抓資料,點選 Add data source 的圖示

第一個就是 Prometheus,不用猶豫,點下去

在 URL 中輸入 Promethues 的 URL,port 沒改的話就是 9090。儲存並測試。

Create Dashboard

有了資料來源後,要緊接著加入 Dashboard,Grafana 有提供 Prometheus 的範例 Dashboard,我們來看看

點選上方的 Dashboards 分頁,加入預設的 Dashboard

華麗的 Dashboard 就跑出來了!是不是很簡單!雖然這張表的數據不是我們要的,但光看就是很威啊。

Add Panel

有了範例後,參照 Grafana 的說明慢慢手動調整各個 Panel,就能調出想要的效果啦。假設今天想 Monitor end devices 的 CPU usage,我們可以加入一個新的 Panel

用 Add Query 加入查詢式

查詢式用的是 Prometheus 的查詢語言 PromQL,照樣輸入

100 - (avg by (instance) (irate(node_cpu_seconds_total{job="node",mode="idle"}[5m])) * 100)

查詢結果就自動變成圖表了。

小結

以 Dashboard 來講,Grafana 真的很強大,呈現的樣式多,查詢語言容易上手,但是 Grafana 不適合用來進行資料處理,如果需要呈現處理後的資料,而查詢語言本身又沒有相關的聚合指令的話,記得先處理完後再丟進 Database,或者在 Database 跟 Grafana 中間加入一個中間層,不要用 Grafana 硬幹。

Reference

Read more

從個人貢獻者到管理者:關於領導的反思

從個人貢獻者到管理者:關於領導的反思

某個下雪天,我拖著病體,組裝一套供使用者簡報之用的破爛系統,莎朗進來發現我在操控台前勉強支撐,她便離開了,幾分鐘後,她端著一鍋湯回來,為我倒了一杯,我的精神為之一振。我問她要做的管理工作那麼多,怎麼會有空做這種事,她向我展露她的招牌微笑,說:「湯姆,這就是管理。」 -《Peopleware: Productive Projects and Teams》 有次跟一名職涯顧問聊天。我提到:「我希望透過打造產品來替別人創造價值,如果有很棒的團隊,我相信自己能辦到。」她問:「團隊是必須的嗎?」我愣住了,隨口說:「因為打造產品需要很多不同的職能……還需要可持續性的運作,對,我想團隊是必要的。」事後回想,她的問題很有趣,現代社會好像把「團隊」和「領導」當成是成功的標配,人力市場也一堆團隊主管的職缺,這是一則現代神話嗎?還是某種工業革命時代的遺產? 身為個人貢獻者的管理者 不是說團隊不重要,只是在現代,你會用不同的角度審視完成目標需要的條件。你想想,如果你是個開發者,自己架網站、

By Ken Chen
CDN 的快取失效設計:內容平台場景

CDN 的快取失效設計:內容平台場景

Phil Karlton 有句名言:「計算機科學中只有兩件難事:快取失效和命名。」 想像你在管理網站,因為傳輸速度與伺服器效能問題,網站讀取速度很差,特別是當你的使用者來自地球另外一端,常常需要等待幾秒才能看到畫面,這讓他們的使用體驗大打折扣。身為一名重視使用體驗的開發者,你肯定知道該如何解決這問題,沒錯,答案就是 CDN(內容傳遞網路)。 CDN 可以看成是服務商在全球各地建置伺服器,當你的網站內容(例如圖片、CSS、JavaScript、影片等)流經這些伺服器時,它會保留一份複本(稱為快取),等到下次有人讀取同樣的內容,CDN 會拿出複本給使用者。因為全球各地都有 CDN 節點,美國的使用者可以由美國節點提供,日本的使用者可以由日本節點提供。這樣既加速網路傳遞效率,也降低來源伺服器的效能壓力,可謂一舉兩得。 當然這是有條件的。CDN 會使用網址來判斷快取是否是相同檔案,假設你的內容以圖片為主,通常來說,當你更換圖片,新舊兩張圖片會有不同網址,被當成兩個不同的檔案,新圖使用新快取,舊快取留著也沒差;但如果你的內容是文字,新舊版文字很可能有相同網址,

By Ken Chen
收拾行李搬家去:從 Medium 到 Ghost

收拾行李搬家去:從 Medium 到 Ghost

想搬家想很久,連身邊的朋友都搬完了,我還沒動工。 原因是我懶,我討厭麻煩,每次有人問我吃什麼,我都回答麥當勞。搬家是一件麻煩事,我已經有一份很讚的工作了,全副精神都放在工作上,偶爾才會想起來,反正家什麼時候都能搬,一點也不急,有什麼好急的呢對吧。這樣一拖,就拖到現在。 繼續用 Medium 不好嗎? 跟男女朋友分手一樣,通常被問到:「對方不好嗎?」得到回答是:「也沒有不好啦,只是……(以下開放填空)。」 從優點開始講吧!Medium 的編輯器很棒,它是 WYSIWYG(所見即所得)類型的編輯器,能讓創作者快速發佈內容,也因為它讓內容發佈更容易了,它開始吸引一批優秀的創作者,這批創作者持續創作內容,又吸引來更多讀者,更多讀者激勵創作者產出內容,內容又再吸引讀者……這形成一個增強迴圈。Medium 還能支援多人協作,拜它時尚簡約的風格所賜,科技公司會使用 Medium 來打造品牌形象,例如我前公司的 Tech Blog

By Ken Chen
OpenTelemetry 的可觀察性工程:以 Sentry 為例

OpenTelemetry 的可觀察性工程:以 Sentry 為例

點進 OpenTelemetry 的官方文件,它最先映入眼中的句子是「什麼是 OpenTelemetry」。例如,它是套可觀察性框架,用於檢測、蒐集與導出遙測數據;它是開源且供應商中立,能搭配其他的開源工具,像 Jaeger 或 Prometheus;它能將應用程式與系統儀表化,無關是用 Go 還是 .NET 開發,也無關部署在 AWS 還是 GCP 上。 但是身為一名開發者,當下我們想的是:「公司常開發一些沒人要用的功能,聽說 OpenTelemetry 可以提高可觀察性,也許我們應該放棄開發功能,轉頭建立更好的開發環境。」「AWS 常常要不到需要的數據,也許我們應該改用另一套工具,像是 OpenTelemetry,來解決這件事。」我們想像 OpenTelemetry 「應該」要能解決目前面臨到的一些問題,就像在技術的鏡像中尋找願望一樣。 如果已經有在用 Sentry,還需要導入 OpenTelemetry

By Ken Chen