使用 Prometheus 和 Grafana 來監控你的 K3s / K8s 叢集
前言:
本文的目標為安裝 Prometheus 和 Grafana 來監控 K3s / K8s 叢集,達成用 Grafana 串接 Prometheus 監控的指標並用圖表呈現,也能幫警報系統串接 Gmail SMTP server 發送警告信。
還沒有建好叢集的讀者請先參考我的另一篇文章:
本文有用圖形化工具 portainer 和指令兩種方式教學,想安裝 portainer 的話請先參考我的另一篇文章:
先用 helm 安裝 kube-prometheus-stack (內含 grafana):
1 | helm install my-kube-prometheus-stack prometheus-community/kube-prometheus-stack --version 55.5.1 |
雖然 terminal 很快就顯示跑完了,但可以觀察虛擬機還是在大量跑東西。
順帶一提筆者一開始使用 1G 或 2G RAM 的主節點都會無限失敗,後來換成 4G RAM 才成功,Grafana 需要吃的資源真的很多。
裝完後查看 services:
- 用 portainer 看:
- 也可以用指令看:
1 | kubectl get services |
把本機的 port 映射到叢集 pod 的 port 以便在本機瀏覽器觀看:
實際 services 名稱和 namespace 等等請參考你剛剛查看 services 的結果。
1 | # grafana |
對上本機 port 後就可以在瀏覽器打開 localhost:<port>
了:
回到叢集找 grafana 的帳密:
用 portainer 看:
也可以用指令看:
1 | kubectl get secrets |
1 | kubectl get secret my-kube-prometheus-stack-grafana -o jsonpath="{.data.admin-user}" | base64 --decode |
輸入帳密後成功登入:
選擇 Create your first dashboard:
選擇 Add visualization:
可以看到已經預設與 Prometheus 連接好了。
接下來就可以使用指標和語法來建立自己想看的 DashBoard。
當然也可以直接看一些預設好的模板,點擊 DashBoard:
點擊想要的就可以看到數據囉:
接下來試著讓 grafana 發送警報信:
會使用 gmail 免費的發信服務。
先幫發信郵箱開啟兩步驟驗證:
幫發信郵箱設定應用程式密碼:
如果失敗的話請參考官方說明
用 portainer 改:
先找到 grafana 的 ConfigMap,新增以下 sftp 設定:
1 | [smtp] |
ConfigMap 改完後要將 Application 重啟才會適用,點選 Redeploy:
重啟完就可以了。
也可以用指令改:
因為一開始的安裝是直接裝官方的設定檔,如果想調整設定的話會分兩種做法:
- 繼續用官方的設定檔但是手動覆蓋參數。
- 需要用 helm 把專案載到本機後修改設定並更新。
第一種直接執行指令(記得改成你自己的):
1 | helm upgrade my-kube-prometheus-stack \ |
第二種步驟比較多,但當你要改的參數很多時這樣反而比較方便:
先移到你想要的目錄,然後把官方設定檔拉下來:
1 | helm pull prometheus-community/kube-prometheus-stack --version 55.5.1 |
拉下來的會是壓縮檔,所以要解壓縮:
1 | tar -zxvf kube-prometheus-stack-55.5.1.tgz |
進入解壓縮完後的目錄:
1 | cd kube-prometheus-stack |
在 grafana/value.yaml 中 grafana.ini 的部分添加 smtp 配置,用 IDE 或 vim 都行:
1 | ... 省略 |
保存後執行指令:
1 | # <your_folder_name> 是指定你剛解壓縮完的 kube-prometheus-stack 目錄路徑 |
設定完 SMTP 配置後就可以來測試發信了:
回到你的 grafana 頁面,到以下位置點擊 Add contact point (或是你要改預設的也可以):
編輯完後按下 Test:
到收件信箱檢查是否收到信件:
到這邊就大功告成囉,如果想設定 prometheus alert manager 的 SMTP 也是差不多的流程,另外你也可以自己設定發警告信的條件。
如果您喜歡我的文章,歡迎幫我在下面按5下讚!感謝您的鼓勵和支持!