DevOps課程-Prometheus 4
Introduction to Grafana UI:
- 讓正確的資料數據能夠更加可視化的呈現,需要額外的工具 — Grafana
- 它能夠取得到Prometheus所有的metrics資料
- 並且以圖表,圖像,表格等方式呈現
- 而前面安裝的Prometheus也包含了Grafana在裡面
接下來就是暴露Grafana的服務到地端來看
暴露以下Server:
#依樣使用port-forward功能:
kubectl port-forward service/monitoring-grafana 8080:80 -n monitoring
我自己後來有去看到:
登入後看到:
而Grafana裡面則是由很多Dashboard組成:
會看到很多圖表資訊:
上面各項圖表可以縮小化:
如上所示
- Dashboard是由一個或多個panels組成
- 可以自行建置自己要的Dashboard
- 調整設置一個或多行
- 每行(ROW)都是儀表板中的邏輯分隔符
- 每行(ROW)都是panels的分類,比如CPU
比如下面這行是Memory的:
- 每一行(ROW)都有各自的panels
panel:
- 是Grafana可視化的基本區塊
- 裡面包含了query與可視化兩部分
- 其中query到指定的資料到這個panel內顯示,可能呈現為數值,圖表等等
- 可以在Dashboard中調整
如上面介紹的,大部分常見的CPU等等都已經有預設的可以直接使用
簡單整理上面提到的:
- Dashboard是有"目錄"可以分類
- 有行(ROW)
- 有Panels
可以看到上圖中基本資源使用都是沒有突出的spike
這時候我們可能會需要其它的Dashboard來瞭解是哪一個Node
或是哪一個Dashboard可以顯示哪一個AP的pod吃了這些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來看!):
大概等了一分鐘刷新看到:
過幾分鐘後看到:
看到另一個Dashboard:
另一個node:
身為DevOps,並不用成為每一張Dashboad內容讀取資訊的專家
而DevOps目標則是在幫忙建立可觀察的數據,要監控叢集中的甚麼東西!
並且能基本分辨各種簡單數據哪邊是有異常的,如上CPU等等
這邊順便看看我個人比較感興趣的Pod各自吃多少CPU:
設置Users與Data Source:
- 另外講師這邊還有額外要補充Gafana使用,比如有很多團隊要用的時候
- 需要建置User
也有team:
另外一件事是,Grafana如何跟Prometheus溝通並取得資料的?
我們並沒有設置Grafana要去跟Prometheus哪個Endpoint取資料
這個設置其實存在於:
點擊上面的新增data source按鈕可以看到許多不同種的資料源可以設定:
往下滑還有很多:
也有雲端的:
若是建立像是DB的Dashboard,則類似如下的頁面下原本寫的PromQL位置
可能就變成要填SQL句了!!!
然後上面DashBoard要切換:
以上就大致完成了Gafana使用的介紹了
然後課程到這邊先暫停,我先移除整座EKS Cluster
#取得建立的cluster名稱:
eksctl get cluster#刪除Cluster:
eksctl delete cluster --name {名稱}