《宋佳洋-基于 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