DevOps課程-Prometheus 4

Grafana使用介紹

ZONGRU Li
10 min readOct 17, 2022

Introduction to Grafana UI:

  • 讓正確的資料數據能夠更加可視化的呈現,需要額外的工具 — Grafana
  • 它能夠取得到Prometheus所有的metrics資料
  • 並且以圖表,圖像,表格等方式呈現
  • 而前面安裝的Prometheus也包含了Grafana在裡面

接下來就是暴露Grafana的服務到地端來看

暴露以下Server:

#依樣使用port-forward功能:
kubectl port-forward service/monitoring-grafana 8080:80 -n monitoring
地端本機就有127.0.0.1:8080的web服務

我自己後來有去看到:

LINK

登入後看到:

Grafana裡面則是由很多Dashboard組成:

舊版這邊頁籤不叫Browse,而是叫Manage

會看到很多圖表資訊:

上面各項圖表可以縮小化:

如上所示

  • Dashboard是由一個或多個panels組成
  • 可以自行建置自己要的Dashboard
  • 調整設置一個或多行
  • 每行(ROW)都是儀表板中的邏輯分隔符
  • 每行(ROW)都是panels的分類,比如CPU

比如下面這行是Memory的:

  • 每一行(ROW)都有各自的panels

panel:

  • Grafana可視化的基本區塊
  • 裡面包含了query與可視化兩部分
  • 其中query到指定的資料到這個panel內顯示,可能呈現為數值,圖表等等
  • 可以在Dashboard中調整

如上面介紹的,大部分常見的CPU等等都已經有預設的可以直接使用

簡單整理上面提到的:

  • Dashboard是有"目錄"可以分類
  • 有行(ROW)
  • Panels

可以看到上圖中基本資源使用都是沒有突出的spike

這時候我們可能會需要其它的Dashboard來瞭解是哪一個Node

或是哪一個Dashboard可以顯示哪一個APpod吃了這些CPU

比如就去找到:

然後看看裡面數據做對比:

展開一些數據查看看:

然後上面也有Node的篩選可以勾:

右上也有時間範圍篩選:

另外一個有趣的點,可以透過打開編輯:

就會看到:

上述的PromQL就會打向Prometheus去要資料

另外可以看到:

而這個語法可以直接地到Prometheus的查詢內使用

另外還可以看到:

編輯PromQL Query:

  • 大多數時候不太需要太高深的PromQL的寫法
  • 通常只要用用基本語法就能解大部分的問題了

後面章節在講設置Alert Rule的時候會簡單研究怎麼寫基本PromQL

自建Dashboard:

比如選到:

執行:

然後上方就會出現圖表:

做好後可以右上按:

基本上就是要熟悉有哪些metrics可以查看,有哪些Label可以過濾等

Resource Consumption of Cluster Nodes:

來看到以下:

可以看到每台Node的相關數據:

但是像上面這樣的數據可能是關乎到不同組織團隊

比如說網路科會想關心上圖網路的圖表

有的是應用程式佈署到Kubernetes裡面,關心workload:

或是pod層級:

Test Amomaly:

回到最初上課用的Dashboard:

基本上數據沒啥特別的:

接著會人為製造spike來演練異常的狀況

這邊就會簡單部署單一個Pod,裡面就是簡單的curl動作

來促使我們部屬的online-shop-microservices-deployment的專案出現異常

然後這個curl當然不會只執行一次,而是非常多次!

#簡單部署一個Pod,並且直些進到Pod裡面操作curl等指令
#(tty就是Teletype,-i是指
interactive):
kubectl run curl-test --image=radial/busyboxplus:curl -i --tty --rm

我們將準備在上述的容器內對我們部署的商店系統打上百上千的curl

在那之前先取得商店的服務頁面位置瀏覽看看

#看看default namespace內佈署線上商店的Service元件:
kubectl get svc

以下就是我最初部署上去的Google的微服務專案的前端頁面:

接下來準備在剛剛建立的busybox容器內寫腳本:

vi text.sh
寫好後儲存!

導出log成檔案test.txt是避免畫面印太多資訊,也沒必要看

其實就是網頁瀏覽的html資訊罷了

#調整一下執行權限:
chmod +x test.sh

然後給它跑下去(記得邊開Grafana來看!):

下面會一直跑超多筆!

大概等了一分鐘刷新看到:

上去了,不過我繼續等跑完sh

過幾分鐘後看到:

看到另一個Dashboard:

另一個node:

身為DevOps,並不用成為每一張Dashboad內容讀取資訊的專家

DevOps目標則是在幫忙建立可觀察的數據,要監控叢集中的甚麼東西!

並且能基本分辨各種簡單數據哪邊是有異常的,如上CPU等等

這邊順便看看我個人比較感興趣的Pod各自吃多少CPU:

設置Users與Data Source:

  • 另外講師這邊還有額外要補充Gafana使用,比如有很多團隊要用的時候
  • 需要建置User

也有team:

另外一件事是,Grafana如何跟Prometheus溝通並取得資料的?

我們並沒有設置Grafana要去跟Prometheus哪個Endpoint取資料

這個設置其實存在於:

點擊上面的新增data source按鈕可以看到許多不同種的資料源可以設定:

往下滑還有很多:

也有雲端的:

若是建立像是DBDashboard,則類似如下的頁面下原本寫的PromQL位置

可能就變成要填SQL句了!!!

然後上面DashBoard要切換:

以上就大致完成了Gafana使用的介紹了

然後課程到這邊先暫停,我先移除整座EKS Cluster

#取得建立的cluster名稱:
eksctl get cluster
#刪除Cluster:
eksctl delete cluster --name {名稱}
大概跑個10分鐘就刪除完了

參考課程reference

--

--

ZONGRU Li
ZONGRU Li

Written by ZONGRU Li

2022/11/17 開源部分個人筆記給LINE "Java程式語言討論區"社群,希望能對社群的技術學習做一點點貢獻.(掩面....記得退訂閱!

No responses yet