《宋佳洋-基于 Prometheus 的 SLO 告警實戰.pdf》由會員分享,可在線閱讀,更多相關《宋佳洋-基于 Prometheus 的 SLO 告警實戰.pdf(27頁珍藏版)》請在三個皮匠報告上搜索。
1、基于基于 Prometheus 的的 SLO 告警實戰告警實戰宋佳洋OPPO大綱告警基礎知識2.基于 S l o t h 項目構建3.基于 P y r r a 項目構建4.多租戶 S L O 服務構建關于我so n g jia ya n g 先后就職于七牛云、京東云等公司,目前在 O P P O 從事云計算相關工作。愛好開源,目前主要關注 G o 和 云原生可觀測領域、是開源項目 P r o me t h e u s、Co r t e x、T h a n o s 的代碼貢獻值。微信公眾號:G r a f a n a 愛好者為什么基于 SLO 告警 梳理內容 優先級告警 利益方認可 持續迭代沒有
2、沒有 S L OS L O,就沒有就沒有 S R ES R E SLO 相關概念SLI時間窗口錯誤預算燃燒率告警級別狀態碼 =5 0 0 請求延遲 2 0 0 ms進程運行非 0 狀態碼退出1w (7d)4w(28d)30d時間周期:3 0 天 S LO:9 9.9%錯誤預算:0.0 9 9 9 (1 0 0-9 9.9)%30 天總請求數:1 0 0 0 0 允許的錯誤請求數:9.9 9 (1 0 0 0 0 *0.0 9 9 9 /1 0 0)燃燒率燃燒率100%100%錯誤預算燃燒時間錯誤預算燃燒時間天天小時分鐘p age t i c ketSLO 告警指導思想-MWMRPr ec i
3、s i onPr ec i s i on:準確率Rec al lRec al l:召回率(故障漏過未告警)D et ec t i on t i meD et ec t i on t i me:投遞延遲Res et t i meRes et t i me:告警重置時長e x p r:(jo b:s lo _ e r r o r s _ p e r _ r e q u e s t:r a t io _ r a t e 1 h jo b=m y jo b (1 4.4*0.0 0 1)a n d jo b:s lo _ e r r o r s _ p e r _ r e q u e s t:r a
4、t io _ r a t e 5 m jo b=m y jo b (1 4.4*0.0 0 1)o r (jo b:s lo _ e r r o r s _ p e r _ r e q u e s t:r a t io _ r a t e 6 h jo b=m y jo b (6*0.0 0 1)a n d jo b:s lo _ e r r o r s _ p e r _ r e q u e s t:r a t io _ r a t e 3 0 m jo b=m y jo b (6*0.0 0 1)s e v e r it y:p a g e SeveritySeverityLong Lon
5、g windowwindowShort windowShort windowBurn rateBurn rateError budget Error budget consumedconsumed參考 h t t p s:/s r e.g o o g l e/w o r k b o o k/a l e r t i n g-o n-s l o s基于 Prometheus SLO 告警基礎和挑戰加載和熱更新默認從本地文件加載。ki l l hu b p i dc u r l X PO S T/PUT ht t p:/l oc al hos t:9090/-/r el oad開箱即用的 recor
6、d and alert rule#r e c o r d -r e c o r d:c o d e:p r o m e t h e u s _ h t t p _ r e q u e s t s _ t o t a l:s u m e x p r:s u m b y (c o d e)(p r o m e t h e u s _ h t t p _ r e q u e s t s _ t o t a l)#a le r t-a le r t:H ig h R e q u e s t L a t e n c y e x p r:jo b:r e q u e s t _ la t e n c y
7、_ s e c o n d s:m e a n 5 m jo b=m y jo b 0.5 la b e ls:s e v e r it y:p a g e與時間窗口相關的多個 SLI rules s l o_ er r or s _ p er _ r eq u es t:r at i o_ r at e5ms l o_ er r or s _ p er _ r eq u es t:r at i o_ r at e30m.Alert rule 復雜,需要考慮不同時間窗口和告警級別e x p r:(jo b:s lo _ e r r o r s _ p e r _ r e q u e s t:r
8、 a t io _ r a t e 1 h jo b=m y jo b (1 4.4*0.0 0 1)a n d jo b:s lo _ e r r o r s _ p e r _ r e q u e s t:r a t io _ r a t e 5 m jo b=m y jo b (1 4.4*0.0 0 1)o r (jo b:s lo _ e r r o r s _ p e r _ r e q u e s t:r a t io _ r a t e 6 h jo b=m y jo b (6*0.0 0 1)a n d jo b:s lo _ e r r o r s _ p e r _ r
9、e q u e s t:r a t io _ r a t e 3 0 m jo b=m y jo b (6*0.0 0 1)s e v e r it y:p a g e Prometheus 告警基礎Prometheus SLO 告警挑戰開源項目 sloth 簡介S loth S pecS loth Default、P r o me t h e u s S e r v i c e L e v e l、O p e n S L OL o a d S L O S p e cG e n S L I r u l e sG e n Al e r t r u l e sG e n Me t a d a t
10、a r u l e sO u t f o r ma tN P r o me t h e u s r u l e sSloth 整體架構S l o t h 是一個簡單易用的 P r o me t h e u s S L O 自動生成器、支持 命令行和 K 8 s Co n t r o l l e r 兩種使用方式,支持自定義告警窗口配置、提供開箱即用的 G r a f a n a 看板。Sloth SLO 配置Default sloth spec公用標簽1l e r t 通用標簽P a g e 級別告警標簽T i c k e t 級別告警標簽K8 s C RD Op e n SL O以 s e
11、r v i c e 來組織,包含多個 s l o sSloth AlertWindows 配置 S LO 時間周期不同告警級別多窗口不同錯誤預算/燃燒率1l e r t Wi n d o w s 主要用于MWMR 告警配置,s l o t h 默認包含了 g o o g l e-3 0 d 和 g o o g l e-2 8 d 兩個配置,可自定義。h t t p s:/g i t h u b.c o m/s l o k/s l o t h/t r e e/ma i n/i n t e r n a l/a l e r t/w i n d o w sSloth CLI sloth generat
12、e-i slos-o rules-slo-period-w indow s-path=./w indow s-default-slo-period=30dsloth generate-i slos-o rules-slo-period-w indow s-path=./w indow s-default-slo-period=“2 8d 支持單個文件和目錄批量生成。s l o-p er i od-w i nd ow s 會覆蓋默認 a l e r t w i n d o w s 配置d efau l t-s l o-p er i od 對應 a l e r t w i n d o w s 不存
13、在,會報錯Sloth 與 K8s Prometheus OperatorPrometheusServiceLevelCRDSloth K8s ControllerSl ot h O pe rat or#部署 s l o t h o p e r a t o rk u b e c t l a p p l y f h t t p s:/r a w.g i t h u b u s e r c o n t e n t.c o m/s l o k/s l o t h/ma i n/p k g/k u b e r n e t e s/g e n/c r d/s l o t h.s l o k.d e v _
14、 p r o me t h e u s s e r v i c e l e v e l s.y a mlk u b e c t l a p p l y -f h t t p s:/r a w.g i t h u b u s e r c o n t e n t.c o m/s l o k/s l o t h/ma i n/d e p l o y/k u b e r n e t e s/r a w/s l o t h.y a ml#部署 s l o t h S L Ok u b e c t l a p p l y -f h t t p s:/r a w.g i t h u b u s e r c
15、o n t e n t.c o m/s l o k/s l o t h/ma i n/e x a mp l e s/k 8 s-g e t t i n g-s t a r t e d.y ml#查看生成的 s l o s 和 p r o mt h e u s r u l e sk u b e c t l -n mo n i t o r i n g g e t s l o sk u b e c t l -n mo n i t o r i n g g e t p r o me t h e u s r u l e s生成 Prometheus rules 詳解sli rules 8 個 r e c
16、o r d r u l e ss l o:s l i _ er r or:r at i o_ r at e5m(30m、1 h 、2 h 、6 h )metadata rules 6 個 r e c o r d r u l e s包含了 S L O 目標、錯誤預算、時間周期等alert rules 2 個 a l e r t r u l e s支持 MWMRSloth Dashboard-DetailsT e m p la te ID:1 4 3 4 8 Sloth Dashboard-High Level T e m p la te ID:1 4 3 4 8 開源項目 Pyrra 介紹P y
17、rra 是另外一個的 P r o me t h e u s S L O 生成器、支持 f i l e s y s t e m 和 k u b e r n e t e s 兩種模式,提供 U I 界面和 G r a f a n a 模板作為可視化。P y r r a w i t h k u b e r n e t e sP y r r a w i t h f i l e s y s t e mPyrra SLO 配置統一配置格式,無論是 K 8 s 還是 f i l e s y s t e m一個 s p e c 定義一個 s l oS l o 通過標簽進行過濾,缺少 s e r v i c e
18、 這層概念,按照配置文件名進行組織不支持自定義告警窗口配置s l i 和 a l e r t r u e l s 標簽S L O 目標值時間窗口S l i 分組Filesystem 和 K8s 模式使用#部署 p y r r a o p e r a t o r k u b e c t l a p p l y -f ./c o n f i g/c r d/b a s e s/p y r r a.d e v _ s e r v i c e l e v e l o b j e c t i v e s.y a mlk u b e c t l a p p l y -f ./c o n f i g/r b
19、 a c/r o l e.y a mlk u b e c t l a p p l y -f ./c o n f i g/a p i.y a mlk u b e c t l a p p l y -f ./c o n f i g/k u b e r n e t e s.y a ml#部署 p y r r a s l o s k u b e c t l a p p l y -f ./e x a mp l e s/k u b e r n e t e s/s l o s/#查看生成的 s l o s 和 p r o mt h e u s r u l e sk u b e c t l -n mo n i
20、t o r i n g g e t s e r v i c e l e v e l o b j e c t i v e sk u b e c t l -n mo n i t o r i n g g e t p r o me t h e u s r u l e s 與 P r o me t h e u s s e r v e r 處于同一實例,p y r r a 加載目錄配置,生成 r u l e s 能夠確保被 P r o me t h e u s s e r v e r 加載。通過配置的 p r o me t h e u s-u r l ,進行 h o t r e l o a d 讓 P r
21、 o me t t h e u s 重新加載配置。Filesystem 模式K8s 模式主要使用 p y r r a f i l e s y s t e m 命令Pyrra 生成 Prometheus rules 詳解單個 S L O 包括三個 P r o me t h e u s 告警分組,分別為 x x x-a v a i l a b i l i t y、x x x-a v a i l a b i l i t y-g e n e r i c、x x x-a v a i l a b i l i t y-i n c r e a s e.x x x-a v a i l a b i l i t y
22、x x x-a v a i l a b i l i t y:包含 7 個 S L I r e c o r d r u l e s 和 4 個 MWMR a l e r t r u l e s。x x x-a v a i l a b i l i t y-g e n e r i cx x x-a v a i l a b i l i t y-g e n e r i c :5 個 r e c o r d r u l e s,主要用于看板的 h i g h l e v e l 匯總統計(R E D )。x x x-a v a i l a b i l i t y-i n c r e a s ex x x-
23、a v a i l a b i l i t y-i n c r e a s e :1 個 r e c o r d r u l e 和 1 個 a l e r t r u l e,主要用于統計整個窗口周期總請求數和 n o d a t a 告警。Pyrra Dashboard-APIPyrra Dashboard-GraEanaG rafana 模板 j s o n h t t p s:/g i t h u b.c o m/p y r r a-d e v/p y r r a/t r e e/ma i n/e x a mp l e s/g r a f a n aSloth Vs Pyrra Slo
24、thPyrra支持支持不支持支持支持不支持支持不支持可讀性高一般、P y r r a AP I簡單總結:兩個都是優秀的 P r o me t h e u s S L O g e n e r a t o r,s l o t h 開源時間較早,協議支持廣泛,p y r r a 屬于后起之秀,有自己的 d a s h b o a r d。因為 s l o t h 生成的 r u l e s 可讀性更強,如果有二開需求并直接使用 G r a f a n a 作為看板,建議采用 s l o t h?;?Cortex 的多租戶 SLO 服務構建tenant slo w rite/read C ortex
25、 rulerC ortex rulerC ortex rulerM inIOcortex ruler clustersync generated rulesC ortex T oolsC ortex S LOslo cli G rafanaread tenant rulesread rulesT enant 1 C ortex G atew ayT enant 1 Cortex-tools 擴展統一封裝到 s l o s 子命令#配置 c o r t e x-s l o 地址以及租戶信息e x p o r t CO R T E X _ 1D D R E S S=h t t p:/l o c a
26、 l h o s t:6 6 6 6e x p o r t CO R T E X _ T E N 1N T _ I D=d e mo#導入 和查詢 w i n d o w s c o r t e x t o o l s l o s l o a d-w i n d o w s ./c o n f i g/s l o s/w i n d o w s/*c o r t e x t o o l s l o s l i s t-w i n d o w s#導入和查詢 s l o sc o r t e x t o o l s l o s l o a d ./c o n f i g/s l o s/*.y
27、ml -w i n d o w s g o o g l e-3 0 dc o r t e x t o o l s l o s l i s tc o r t e x t o o l s l o s g e t my s e r v i c eDemo with docker-composeM y S erviceCortexCortexC ort e xC ort e x SLOC ort e x Tool sG raf an aEch o re ce i ve rPrometheus AgentProm e t h e u s Age n tW e bh ookSyn c ge n e rat
28、 e d ru l e sC ort e x cl u st e rSl o m an age m e n tRe m ot e w ri t ePu l l m e t ri cs參考 G i t H u b 倉庫 h t t p s:/g i t h u b.c o m/g r a f a n a f a n s/p l a y-w i t h-c o r t e x-s l o資料Googl e S RE w or kbook ht t p s:/s r e.googl e/w or kbook/al er t i ng-on-s l osS l ot h Gi t H u b ht t p s:/gi t hu b.c om/s l ok/s l ot hPy r r a Gi t H u b ht t p s:/gi t hu b.c om/p y r r a-d ev/p y r r aPl ay w i t h s l ot h ht t p s:/gi t hu b.c om/gr afanafans/p l ay-w i t h-s l ot hPl ay w i t h p y r r a ht t p s:/gi t hu b.c om/gr afanafans/p l ay-w i t h-p y r r a關注我們獲取更多云原生資訊Thank you