DevOps課程-Prometheus 6
前面了解到了很多Out-of-box的Alert規則了
現在就要來建自己定義的Alert規則!
簡單設兩個規則目標:
- 當CPU使用率>50%的時候
- 當Pod無法start的時候
我先在我自己的課程目錄內建立新的目錄來存放這些要建置的Alert Rule
並且把Rule的檔案名稱取為:alert-rules.yaml
直接複製隨便一個Prometheus上的Alert Rule:
#首先把名稱name部分的值改為:
name: HostHighCpuLoad#然後初步的判別式改為:
expr: 100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[2m])) * 100) > 50
所以很明顯的metric數值項目就是"node_cpu_seconds_total"
其中它本身帶有的標籤mode部分會有很多種:
idle,lowait,irq,softing,steal,system,user…等
其中有一個就是idle,簡單來說其意義就是CPU是在閒置的部分
而我們實際要看的是百分率的顯示,所以前後夾上rate與[2m]
也就拿到閒置中的CPU百分比有多少!
再來我們要看的是每一台Worker有多少,所以再加上avg by(instance)
#現在變成:
(avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[2m])))
然後想看看百分比,而不是小數點後的顯示,所以乘上100:
可以看到每台worker的CPU都是9X%的在idle狀態
而現在我們想看到的是使用中的CPU,也就是100減去上述數值就是了!
也就是第一台有7%多的CPU是使用中,第二台只有4%多是使用中
再來我們要寫到Alert的判斷就是是否使用中的CPU有超過一半
所以用判別式:
#所以目前的PromQL為:
100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[2m])) * 100) > 50
再來我們可能是希望等待2分鐘
若2分鐘仍然高過50%的CPU使用率才觸發Alert,所以目前Alert Rule:
然後標示這是一個警告(warning)就好:
接著在annotation內有三個部分
#在description描述給上:
description: "CPU load on host is over 50%\n Vlaue = {{ $value }}\n"
原本還有runbook_url這邊就省去
#在summary部分給上:
summary: "Host CPU load high"
然後更完整的補完是哪一台worker instance:
順便給予這個Alert Rule更多標示的標籤:
所以目前完成以下