DevOps課程-Prometheus 13
這章節就要來教怎麼安裝"Redis Exporter"
來提供Prometheus要監控Redis服務的Endpoint
來監控Redis服務的流量,連線...etc
首先透過google找到"Redis Exporter":
然後就會找到這個Github寫好,提供多數人使用的"Redis Exporter"
然後我們卻不曉得如何安裝該"Redis Exporter"
實際上應用我們可能會透過Helm來佈署這個找到的"Redis Exporter"
並且透過Helm Chart來進行設定
這時候再重新透過google搜尋"redis exporter helm chart":
然後找到Prometheus社群維護的helm chart:
在這邊就可以找到多數常見的應用程式服務對應的Exporter的Helm Chart
也可以看看上一層還有哪些對應的常見應用程式:
回頭看到prometheus-redis-exporter
在前面解說頁也有提到,並有對應連結:
所以直接透過Helm來管理整個"oliver006/redis_exporter"
而不用花太多時間研究其怎麼運作
而這之中我們可能會需要有自己的設定
參考到其values.yaml:
這邊我調整一下Github用暗黑模式,不然白底很難看:
一邊參考上面這份values.yaml檔的設定
在本機編輯一個"redis-values.yaml"檔案
首先要建立的部分設定是"serviceMonitor":
前篇有提到,這是告知Prometheus其要監控的Endpoint位置
也就是描述Prometheus要監控的target集合的K8S元件
這樣Prometheus才會去抓資料:
然後如上設置後
其實仍然不夠告知我們所安裝的Prometheus要去抓哪一個Target
這邊還要額外加上labels才能讓Prometheus夠分辨這個Target
#這邊可以看看其他exporter範例對應的ServiceMonitor元件,先找到隨便一個元件:
kubectl get servicemonitor -n monitoring#查看其中一個的設定:
kubectl get servicemonitor {隨便挑一個名稱} -n monitoring -o yaml
就會看到yaml內的labels都有標示"release: monitoring"
再來就是告知Prometheus要抓資料的位置,參考:
#查找redis佈署的service元件的名稱:
kubectl get svc |grep redis
然後改成:
然後正常情況下,別的應用程式要連接到Redis一般是需要帳密的
只是現在課程是簡單的demo,所以暫時不用打帳密
否則我爬文看到可以這樣打:
又或著帳密設置在env內:
不過我們佈署的是最簡單版的:
詳細可以看到docker hub上的官方redis的image解說:
接著另外可以注意到的Helm Chart的values.yaml設置是 →prometheusRule:
如同前面課程設置過的這個Alert Rule:
也能設置在Exporter的Helm Chart的values.yaml內
而講師這邊則是不會同時放在這邊做設置
因為我們有可能會很常調整Prometheus的Alert Rule來監控Redis服務
比如新增Rule,移除Rule等等狀況
所以建議還是分開寫
目前完成的內容只有以下:
所以當前完成的redis-values.yaml:
github頁面回到前一頁,首先要先安裝
往下拉到:
#這邊整理Helm要做的指令,首先新增Chart:
helm repo add prometheus-community https://prometheus-community.github.io/helm-chartshelm repo update#安裝這個Redis Exporter的Chart,其中[RELEASE_NAME]改為"redis-exporter",並且要帶我們設置好的values.yaml:
helm install redis-exporter prometheus-community/prometheus-redis-exporter -f redis-values.yaml
#接著可以透過helm工具確認:
helm ls
#然後也可以確認redis exporter的pod,會多出redis exporter:
kubectl get pod
#也可以直接地看servicemonitor元件:
kubectl get servicemonitor#也可以順便看看他的設定yaml,也可以看到會有labels是release: monitor對應,底下還會有target位置:
kubectl get servicemonitor redis-exporter-prometheus-redis-exporter -o yaml
這邊插入題外話:
這邊我特別注意到上述畫面中的紅框內
endpoint的第一行port的值是"redis-exporter",而不是數字
這個其實在後來16篇筆記針對自己應用程式撰寫serviceMonitor時候會提到
serviceMonitor上面寫的Endpoint裡的PORT
是要對應到service元件裡面PORT的名子
是得沒錯,service元件裡面的PORT是可以起名子的
所以對應helm的template可以看到:
對應在values檔案裡面看到這個:
這時候Prometheus的Web上刷新後也能看到redis相關的Metrics資訊
可以直接先看到Status →Target(不過跟其他不一樣的是,這個長在default):
展開看到狀態:
#其中上面對應的Endpoint是redis-exporter的svc對應的,可以用指令看:
kubectl describe svc redis-exporter-prometheus-redis-exporter
回到搜尋頁查找redis也可以看到很多很多的相關Metrics:
這邊有點複雜,簡單總結一下:
像第三方的應用程式如Redis這個DB
我們要讓他暴露Metrics資訊給Prometheus
以利做後續查詢甚至後面要設Alert Rule
要加裝對應的Exporter也就是Redis-Exporter
Redis-Exporter會幫我們把Redis應用程式內的Metrix資訊轉換並暴露出來
並且我們會需要serviceMonitor元件來告知Prometheus,現在你要多收集這個Redis-Exporter暴露出來的Metrix資訊
好家在有Helm打包好的Redis-Exporter Chart
裡面連帶可以設置serviceMonitor元件,甚至也有Alert Rule元件
(只是我們Alert Rule暫時不考慮寫在一起)
所以透過撰寫好Helm Chart的values.yaml,我們一次裝好了:
- Redis-Exporter(有看到pod,svc,deploy)
- serviceMonitor元件(只是告訴Prometheus要新增這個Target)