DevOps課程-Prometheus 10
在前面課程中有產出alertmanager的StatefulSet內容為alert.yaml檔
其中會看到:
所以設定檔是在Secret裡面,這個Secret名稱叫做:
"alertmanager-monitoring-kube-prometheus-alertmanager-generated"
這就是Alertmanager的設定檔內容所在!
#透過以下指令拿到設定檔內容(但是有base64加密):
kubectl get secret alertmanager-monitoring-kube-prometheus-alertmanager-generated -n monitoring -o yaml
講師在上面畫面上data的key是"alertmanager.yaml"
如上圖我看到的則是"alertmanager.yaml.gz"
所以可以透過以下bash指令解密看到裡面YAML內容
#如果像講師畫面一樣只有alertmanager.yaml,沒有gz的話,可透過以下bash指令解密:
echo {後面那一長串} | base64 --decode#如上,我的看到是"alertmanager.yaml.gz",所以解密要變成:
echo {後面那一長串} | base64 --decode | gzip -d
其內容上的route與receivers就很接近Alertmanager Web上面看到的:
實際要自己構建Alertmanager的設定檔 — 找到文件:
然而同樣的,這是透過Operator佈署的,所以我們無法直接地修改該檔案內容
跟前面Prometheus Configuration一樣
這邊也要透過Custom Kubernetes Resource來提供設定,所以找到:
Configuration Email Notification — spec中receivers部分
本機編輯一個新檔案 →alert-manager-configuration.yaml
往下拉看到:
然後再往下看到:
然後開始填寫:
下面還有emailConfigs的相關陣列設置:
參考到文件上:
暫時性地如下定義:
所以先另外搞一個Secret物件來放密碼,再注入到上圖的設定內
#把密碼做base64加密:
echo "密碼" | base64#寫好Secret後建立:
kubectl apply -f email-secret.yaml
最後還要補上authIdentity:
初步完成receivers內容如下(alert-manager-configuration.yaml):
後面demo會用個人的gamil來做,所以若是沒有啟用兩段驗證的帳號
需要到以下網址:
https://myaccount.google.com/lesssecureapps
講師畫面中有個啟動鈕才對:"Allow less secure apps: ON"
但是我看到的畫面已經不能有相關設置了:
點上述瞭解詳情連結可以看到:
所以後面可能暫時不實際執行,只學著看看怎麼設定
Configuration Email Notification — spec中route部分
再來這個AlertmanagerConfig還尚有Route部分還沒設定好
先填入以下指定到對應的Alert名稱:
然後再來是這個route對應的receiver是誰
所以目前得到:
應用上述完成的設定:
#直接執行apply:
kubectl apply -f alert-manager-configuration.yaml#確認上述建立的物件:
kubectl get alertmanagerconfig -n monitoring
這邊看到:
所以我調整一下跟著講師的version改為v1alpha1看看
所以現在是:
而這邊跟Prometheus設定一樣
當alertmanagerconfig元件建立時,Alertmanager要重新reload設定
所以可以看看Alertmanager裡面的log才看看有沒有設置成功
#可以先找到Alertmanager的Pod:
kubectl get pod -n monitoring
然後看到裡面有兩個Container
一個是Alertmanager本身,另一個是重load設定檔專用的Container
#執行查看pod內容,順便看看有甚麼container在裡面:
kubectl describe pod alertmanager-monitoring-kube-prometheus-alertmanager-0 -n monitoring
#找到Pod後就可以查看log,先看alertmanager:
kubectl logs alertmanager-monitoring-kube-prometheus-alertmanager-0 -c alertmanager -n monitoring#再看config-reloader:
kubectl logs alertmanager-monitoring-kube-prometheus-alertmanager-0 -c config-reloader -n monitoring
這時候到Alertmanager的Web查看Status內容:
往下看到Config內容會看到:
route部分:
#我確認我建立的alertmanagerconfig內容:
kubectl describe alertmanagerconfig main-rules-alert-config -n monitoring
但是看到上面有嘗試要寄email來看
應該第二個"KubenetesPodCrashLooping"也有設置成功才對!
receivers部分:
主要就是預設內容會再加上我們設置的部分!
另外還可以注意到的是namespace的對應:
這樣同時比對以下兩個條件,才會寄送訊息:
這也是當初alert-rule.yaml內會多加labels:
我這邊順便嘗試如果移除alertmanagerconfig元件會怎樣:
過一陣子設定檔內的route,就我們定義的部分就消失了
這邊我另外嘗試不matchers到HostHighCpuLoad的部分建立看看
看看KubenetesPodCrashLooping這個alert能不能載入
這時候我才發現:
眼花撩亂...
重建: