DevOps課程-Prometheus 14

針對Redis設置Alert Rule與Grafana Dashboard

ZONGRU Li
Oct 28, 2022

建立Redis的Alert Rule:

參考到前面寫過的Alert Rule:

這個是之前學著寫Alert Rule的例子

在此我們嘗試撰寫Redis兩個Alert Rule:

  1. Redis整個掛掉
  2. 太多連線

檔名暫時叫redis-rule.yaml:

先寫成這樣

接著要開始思考要透過有哪些metrics資料來撰寫我們要的Rule

可以在Prometheus頁面上看看redis上有哪些metrics資料:

更方便的是找到參考文件!!!

google找"Awesome Prometheus Alerts":

LINK

裡面有一大堆別人寫好的常見軟體的Alert Rule:

還有其他的:

點剛剛上面看到的DB分類中的Redis:

跟我們用的是同一個

雖然最後是透過Helm Chart來裝redis exporter

但源頭裝的都是以下這個Source:

接著再繼續找到"太多連線"的Rule:

一樣貼過去使用,記得修正syntax位置:

當然也可以調整一下描述:

完成如下:

#執行Alert Rule建置:
kubectl apply -f redis-rules.yaml
#這邊可以透過指令確認(在default ns):
kubectl get prometheusrule

大概一分鐘就可以在Prometheus首頁上面看到該組Rule:

接著嘗試觸發Redis掛掉的Alert

#直接修改Redis的deployment元件的replica數量到0:
kubectl edit deployment redis-cart
改好後儲存!
編輯成功
#觀察redis的pod:
kubectl get pod

如上圖看到redisexporter還在,但是他最後會抓不到redismetrics

而這時候Peometheus頁面上可能還沒有及時反映Redis已經掛了:

這是因為Prometheus在抓取Redis-Exportermetrics資訊

也是有"Interval時間",也就是Prometheus多久去Exporter抓一次metrics資訊

這個可以看到安裝的Redis-ExporterHelmValues.yaml

裡面的serviceMonitor部分:

LINK

等待30秒後刷新Prometheus頁面就會看到變紅了:

接著我們在調整回Redis的Deployment的Replica數量回1

#直接修改Redis的deployment元件的replica數量到1:
kubectl edit deployment redis-cart
改好儲存!

然後過一段時間回到Prometheus的畫面就變回綠色了:

在Grafana上建立Redis的Dashboard:

如上面例子,當Redis服務整個掛掉了

我們會希望在一個Dashboard上直接看到並方便分析狀況,如Grafana

在一個Dashboard內顯示多個必要資訊,也比較容易解析狀況

所以接下來問題在於 →如何在Grafana上刻出一個Redis Dashboard,答案有:

  1. 自己刻!!!
  2. 直接使用既有的Redis Dashboard!!!

Grafana Lab網頁:

LINK
LINK

往下拉還有更多,還有篩選:

這邊直接簡單透過google來找:

LINK

這邊要確定的是,背後使用的Redis Exporter是同一個,點上面紅框確認

再點

然後看到又是這一個Github就對了:

LINK

回到剛剛找到的頁面

LINK

看到預覽:

這邊順便提一下,講師google到的ID:763Redis Dashboard已經找不到了

匯入剛剛找到的Grafana Dashboard:

剛剛找到的Dashboard ID:14091

先到我們的Grafana Dashboard頁面:

然後貼上ID做匯入:

然後這邊就可以調整一下名稱:

匯入後就會跳到該Dashboard畫面:

如上圖,左上會看到來源的IP位置還有資料來源

(講師畫面是import時要選資料源是Prometheus)

這個可以對應到Redis ExporterPodIP位置

#可以看看Redis Exporter Server的IP位置,先拿到Server名稱:
kubectl get svc
#然後看到Redis Exporter的Server元件內對應的Endpoint位置:
kubectl describe svc redis-exporter-prometheus-redis-exporter

這邊我也可以調一下顯示的時間區間比如最近1HR:

透過以上方式我們就不用從頭自己刻Dashboard了!

這邊我順便紀錄一下使用到的PrometheusGrafana版本:

Prometheus的

參考課程reference

--

--

ZONGRU Li
ZONGRU Li

Written by ZONGRU Li

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

No responses yet