DevOps課程-Prometheus 3

Data可視化 — Prometheus UI

ZONGRU Li
Oct 17, 2022

決定要監控哪些東西?

1.目的是啥?

2.想監控甚麼東西?

  • >我們想注意到K8S Cluster中某個不尋常的事件發生
  • >觀察到任何不尋常的事

可能是CPUSpikes

Insufficient Storage

High Load

Unauthorized Request

當上述事件發生時,要立刻可以方便分析,並且立即反應並修復

可能是透過監控Node,或是透過監控Application

如何取得這些資訊?

所以除了監控很重要外,"方便觀察"監控的數據,也變得很重要!!!

可能在Node上取得CPU,Memory等數據

可能在Application上取得Request相關監控數據

或是監控Application的進出權限,而需要監控K8SComponents

簡單的解決方案就是 — Prometheus

Prometheus Web UI:

首先找到對應的Service元件:

可以看到他剛安裝只是ClusterIP,所以要能查看,先簡單做port-forward

#如上他是用PORT 9090,所以也forward到Node的9090:
kubectl port-forward {元件名稱} {執行kubectl指令本機PORT}:{這個元件PORT} -n monitoring
#組出來的指令如下:
kubectl port-forward service/monitoring-kube-prometheus-prometheus 9090:9090 -n monitoring
(上面執行也可以考慮在後面加入"&"變成背景執行)
但是這個指令會卡著不結束,也就是kubectl幫我從地端連著
真的可以在地端連到,這應該是kubectl建立的連線

查找當前Prometheus已經蒐集的目標Data:

展開第一個看到:

講師的畫面上kube-proxy是紅的,掛掉的狀態,可以方便快速地知道哪個掛了

而想到看到特定"Target"的實際哪些的"metrics"的內容(像是CPU,Request數量..etc),要回到首頁搜尋

這可以查像是Node,namespace等等層級的cpu

或是

以上都是比較Low LevelVeiw,通常用來debug等等狀況使用

另外UI上甚至也可以看到Prometheus的設定檔:

以及Runtime info.:

其中特別注意到Prometheus的設定檔裡面定義了Jobs:

上述這堆Jobs就對應到:

其中我們可以定義:

instance = 單一個Endpoint抓取的所有資訊

Job = 針對某個相同目的的上述instances的集合

這邊可以看看Label:

這兩個Endpoint都有相同的key=value是key為job的Label

我們可以透過複製以下這部分名稱:

Prometheus的設定檔內找到對應的job:

在首頁,也就是搜尋頁上,比如查找apiserver資訊:

如上都能找到一樣的job="apiserver"的對應

一樣也可以透過上述條件過濾

這樣查找到的定是job=”apiserver”抓到的資訊!

然後如上面Target頁面我們有看到apiserver的部分

有兩個Endpoint(也就是兩個Instances)

上述也可以當作過濾條件來查找:

非常方便在debug方面使用(我看起來是專門找單點數據用!)

但不是非常的可視化,不容易看到anomalies(異常)

尤其是一些數值化的數據像是CPU使用超時等等

所以下一篇就是可視化的UI工具 — Grafana

參考課程reference

--

--

ZONGRU Li
ZONGRU Li

Written by ZONGRU Li

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

No responses yet