前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >七步成诗-快速创建有效 SLO

七步成诗-快速创建有效 SLO

作者头像
东风微鸣
发布于 2022-12-01 08:18:58
发布于 2022-12-01 08:18:58
59100
代码可运行
举报
运行总次数:0
代码可运行

前言

之前的文章- 如何配置 SLO - 东风微鸣技术博客 (ewhisper.cn)[1] 介绍了一些常用的各类 SLO, 但是在实际制定 SLO 过程中,并不一定适合实际业务需求。本次介绍 SLO 的最佳实践 - 如何 7 步创建有效的 SLO.

SLI SLO 定义

在之前的文章 - SLA、SLO、SLI 定义 -「译文」使用 Prometheus 和 Grafana 实现 SLO - 东风微鸣技术博客 (ewhisper.cn)[2] 中,我们已经介绍过 SLI SLO SLA 的定义。这里再次简单提一下。

SLI

SLI: Service Level Indicator, 即 服务水平指标, 这是了解服务健康状况的一个关键指标,也是设置 SLO 的基石。

典型的 SLI 表达式如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
好的事件/所有的事件 * 100%

典型的一个 SLI 就是:HTTP 请求的延迟

其表达式如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
响应时间小于 5s 的 http 请求 / 所有的请求 * 100%

SLO

SLO: Service Level Object, 即 服务水平目标, 是我们针对 SLI 设定的一个目标。而往往 SLO 是与时间窗口紧密相关的。

典型的 SLO 如下:

•目标 99.9%•低于该目标,😡•大于等于该目标,😎

典型的一个 SLO 示例:95%的请求的响应时间都≤5s

Error Budget (错误预算)

目的是:

利用错误预算进行开发和创新 允许更好的进行合作,因为一个共同的目标

•用完错误预算之后,就主要强制执行(即阻止部署)•保持在错误预算内,那么就可以激励创新和更高风险的部署

定义是: 1 - 可用性目标。SRE 和 Devs 在错误预算内工作。

比如:SLO 是 99.5%, 那么 错误预算就是 1-99.5% 就是 0.5%

那么一个月的错误预算就是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
0.5% * 30d * 24h * 60min = 216 min

还是拿之前的举例:

95% 的目标就是 5% 的错误预算;

一个月的错误预算就是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
5% * 30d * 24h * 60min = 2160 min

七步成诗 - 创建有效 SLO 的最佳实践

SLO 已经超出了基本的监控指标范畴;它们是站点可靠性工程师 (SRE) 和 DevOps 平台团队的强大指导工具,可帮助指导每个组织的 CI/CD 和生产流程中的改进。

但是,创建有效的 SLO 可能很困难。根据 Dynatrace 的 2022 年 SRE 状况报告[3],99% 的 SRE 表示,他们在定义和创建 SLO 时会遇到挑战。识别和实施有效的 SLO 需要深思熟虑和结构化的方法才能取得成功。以下是为您的平台和服务实施正确 SLO 的建议步骤。

1.站在同一阵线上2.确定影响 SLA 的关键服务并确定其优先级3.确定内部利益相关者并与不同的团队保持一致4.确定要用作 SLI 的关键指标5.确定关键 SLO6.定义错误预算7.确保主动 SLO 监控和告警

第一步:站在同一阵线上

服务级别协议 (SLA)[4] 是供应商与其客户之间的合同财务协议。这些协议定义了客户和最终用户期望的服务级别,使它们成为了解 IT 如何确保实现总体业务目标的绝佳起点。违反 SLA 会导致经济处罚,影响收入,并损害公司的声誉。因此,调整 SLO 以满足客户需求至关重要。

📝Notes 服务定义:服务是指一个平台的任何特征/功能,提供给外部各方。 例如: 对于前端,不同的 User Action 算是不同的服务; 对于后端,不同的 HTTP 请求可能指向不同服务。

在相关合同和 SLA 的维度下,SRE 和 DevOps 需要就使用的术语和定义达成一致。 这样可以消除所有的噪音,通过简单的术语,可以快速确定重点.

SRE 或 DevOps 以及开发、运营、项目管理、销售,确定满足 SLA 要求所需的服务,尤其是客户经常与之交互的服务,或者如果发生故障,可能会导致最严重问题的服务。

第二步:识别你的客户群

接下来,你需要确定:

•你的平台为哪些或哪些客户提供服务?•他们如何与你的平台直接互动?

客户可以是人,也可以是依赖你平台的其他平台。

例如,不同的平台服务可能会面向不同的用户:

1.互联网用户2.系统管理员3.呼叫中心客户4.线下客户5.临时客户6.合作商7....

第三步:通过客户群识别服务

平台的所有需求, 最终会具象化为平台提供的服务

而不同的服务会面向不同的客户。

这是非常重要的一步, 需要一些实践/公开交流来定义服务。 这里有个小技巧:通过架构图可以更方便地进行识别。

举例来说:

•对于互联网用户, 登录(Login) 是重要的服务

第四步:确定服务的优先级

为每个客户群挑选最重要的前 2-3 项服务, 如:对于互联网客户群,就是登录(Login)结账(checkout)服务,这有助于将重点放在关键服务上。

排序的标准是根据对客户和对财务影响。例如,用于购买产品的“结帐 (checkout)”服务的优先级高于用于比较产品的“比较服务”。

第五步:细分客户目标

客户对服务的目标包括:

•可用性要求•性能要求•服务的活动量•服务的正确性

这里推荐使用行业标准的框架,需要与您的 SRE 和运营团队合作,了解您的可观察性平台提供哪些关键指标以及需要跟踪哪些指标。有许多类型的 SLI 可供选择,例如 Google 的 四个黄金信号[5],RED 指标(速率 Rate,错误 Error,持久性 Duration)或 USE 指标(利用率 Usage,饱和度 Saturation,错误 Error)。

还是继续之前的举例,对于:

•互联网客户群•登录服务•客户期望:随时都可以登录•客户期望:每分钟并发可达到上百次•客户期望:登录很快•客户期望:登录成功无报错

第六步:选择具体指标(SLI)

还是继续之前的例子,需要通过多次的会议、访谈、对话,选择其中的前 2-3 个重要目标,并将其细化:

•用户群:互联网客户群•服务:登录服务•客户期望:登录成功无报错•具体指标:错误率•客户期望:登录很快•具体指标: 响应时间(持续时间或延迟)•客户期望:随时都可以登录客户期望:每分钟并发可达到上百次

第七步:建立 SLO

确定关键服务和 SLI 后,即可创建 SLO。确保每个目标都可以通过为特定时间范围(例如:小时,周,月)设置的现实的,可实现的阈值来衡量。SLO 的不切实际的高门槛将面临不断的违规行为。相反,容易实现的低 SLO 阈值使得很难知道何时发生服务中断。SLO 必须有意义并推动业务成果,而不仅仅是作为要达到的目标而存在。确定阈值的一个好方法是查看服务执行方式的历史趋势

这是最后一步, SLO 需要是你可以监测的东西,并且应该是具体的。 有这么几个关键词:

•可用性(目标)•时间范围•具体条件(SLI)

还是继续之前的例子:

•用户群:互联网客户群•服务:登录服务•客户期望:登录成功无报错•SLI:错误率•SLO:过去 5min 错误率 < 1%•客户期望:登录很快•SLI: 响应时间(持续时间或延迟)•SLO: 过去 1 个月 95%的响应时间 ≤ 5s•客户期望:随时都可以登录客户期望:每分钟并发可达到上百次

总结

总结一下,创建有效 SLO 的关键步骤是:

1.谁是我的客户群?2.我的服务有哪些?3.这些服务的关键指标 (SLI) 是哪几个?4.SLO 是什么?

最后的最后,监控.

监控是确保您满足 SLA 和业务目标的持续过程。除了在发生 SLO 违规时接收警报之外,更好、更主动的方法是在错误预算 (error budget), 燃尽率 (burn rate) 出现得比正常情况快时接收警报。此方法允许您在潜在问题导致问题之前解决它们。无论哪种方式,警报都应路由 (route) 到正确的团队或个人,以加快对问题进行分类并减少 MTTR。

References

[1] 如何配置 SLO - 东风微鸣技术博客 (ewhisper.cn): https://ewhisper.cn/posts/60853/ [2] SLA、SLO、SLI 定义 -「译文」使用 Prometheus 和 Grafana 实现 SLO - 东风微鸣技术博客 (ewhisper.cn): https://ewhisper.cn/posts/42659/#SLA%E3%80%81SLO%E3%80%81SLI [3] 的 2022 年 SRE 状况报告: https://www.dynatrace.com/info/sre-report/ [4] 服务级别协议 (SLA): https://www.dynatrace.com/news/blog/what-are-slos/#what-are-slas [5] 四个黄金信号: https://sre.google/sre-book/monitoring-distributed-systems/#xref_monitoring_golden-signals [6] 识别和实施有效 SLO 的 7 个步骤: https://www.dynatrace.com/news/blog/7-steps-to-identify-and-implement-effective-slos/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-10-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 东风微鸣技术博客 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
分分钟教会你搭建企业级的 npm 私有仓库
npm 作为一种包管理工具,无论你是泛前端还是大前端都已经离不开它。它的出现方便了万千少年。让我们跨过了 Ctrl+C、Ctrl+V,通过 npm install x 的方式将别人的优秀代码模块引入到自己的项目中。这些优秀的模块能被共享的原因,一方面是有 npm 这么一个包管理工具,另外就是 npm 仓库。
lucifer210
2020/06/29
5.7K0
分分钟教会你搭建企业级的 npm 私有仓库
npm私服安装教程 - verdaccio 入门
sinopia 之前好像很火,但是作者弃坑了,从项目里的一个issue(见文末)发现,有人fork了一个项目,就是本文要使用的 verdaccio,目前该项目在积极维护中 cnpm 看起来虽然最近有commit,但是已经一年没有 release了,而且安装比较复杂
savokiss
2019/11/06
2.1K0
使用nrm管理npm仓库
用npm装包的时候,经常碰到太慢或者npm官网被墙的情况,有时候凑合一下就改一下 "~/.npmrc" 文件,但是经常改来改去也挺麻烦的,于是找到了可以使用nrm来管理npm仓库。 安装 sudo npm install -g nrm 查询仓库 使用 “nrm ls” 查看所有仓库 $ nrm ls * npm ---- https://registry.npmjs.org/ cnpm --- http://r.cnpmjs.org/ taobao - https://registry.npm.t
kongxx
2018/05/14
1.5K0
npm镜像的设置与查看,使用
版本号里面的^表示,版本更新后面两位版本(3.x.x),如果是~则表示更新最后一位(3.1.x),如果不加符合就表示等于
SingYi
2022/07/13
2.2K0
npm镜像的设置与查看,使用
将做好的前端组件制作成npm包发布
这个问题是我们使用了淘宝镜像的问题,使用的是淘宝源cnpm,登陆到的是cnpm,我们把它切换成npm就好了。
colezhou
2019/11/24
2.7K0
前端运维部署那些事
nrm 更多用于如果公司内网部署了私有仓库,也就是方便用nrm作来源切换,也有益于依赖的版本管理,如果你想搭建自己的私有仓库,可以使用verdaccio,可以看这个具体的教程 点我
树酱
2020/10/15
8960
02·灵魂前端工程师养成-安装配置Node.js
-多年互联网运维工作经验,曾负责过大规模集群架构自动化运维管理工作。 -擅长Web集群架构与自动化运维,曾负责国内某大型金融公司运维工作。 -devops项目经理兼DBA。 -开发过一套自动化运维平台(功能如下): 1)整合了各个公有云API,自主创建云主机。 2)ELK自动化收集日志功能。 3)Saltstack自动化运维统一配置管理工具。 4)Git、Jenkins自动化代码上线及自动化测试平台。 5)堡垒机,连接Linux、Windows平台及日志审计。 6)SQL执行及审批流程。 7)慢查询日志分析web界面。
DriverZeng
2022/09/26
5450
02·灵魂前端工程师养成-安装配置Node.js
1. Centos7下使用 nvm 安装 nodejs 环境
nvm是可以切换管理nodejs版本的开源工具,其中可以看看Github上的仓库。访问nvm的github,根据介绍可以看到相关的安装脚本,如下:
Devops海洋的渔夫
2022/01/14
1.4K0
1. Centos7下使用 nvm 安装 nodejs 环境
NPM 如何换源?
对于 NPM,下载完后不换源的话,下载依赖包就相当的慢,最后超时下载失败也经常发生。
前端西瓜哥
2022/12/21
5.7K1
【Node.js】:配置源(registry)、代理(proxy)
换npm、yarn的镜像源,或配置npm、yarn的代理,都是为了解决 npm 依赖下载慢的问题。
WEBJ2EE
2021/01/28
15.9K0
【Node.js】:配置源(registry)、代理(proxy)
设置npm源的几种方式
设置npm源的几种方式 原始源 # the original source https://registry.npmjs.org/ 方案: 使用nrm 安装 npm install -g nrm 列出源的候选项 nrm ls 输出结果: * npm -------- https://registry.npmjs.org/ yarn ------- https://registry.yarnpkg.com/ cnpm ------- http://r.cnpmjs.org/ taobao ----
绿巨人
2020/02/21
10K0
Node版本及源管理
Node 版本推荐用最新的lts版本(目前12.x), 尝鲜可以用current版本(一般比稳定版超前一个大版本)
CRPER
2020/04/30
1.2K0
【开发指南】(一)Ionic3开发环境配置常规ionic的环境搭建如下:
工欲善其事,必先利其器,搭好环境是开发的前提,有时环境没弄好,不时报错往往很扎心。
IT晴天
2018/08/20
2K0
npm 切换源
安装 $ npm install -g nrm 列出可选的源 $ nrm ls * npm ---- https://registry.npmjs.org cnpm --- http://r.cnpmjs.org/ taobao -http://registry.npm.taobao.org/ eu ----- http://registry.npmjs.eu/ au ----- http://registry.npmjs.org.au/ sl ---
咻一咻
2020/05/29
1.2K0
很多人上来就删除的package-lock.json,还有这么多你不知道的!
看完本文,你将从整体了解依赖版本锁定原理,package-lock.json 或 yarn.lock 的重要性。首先要从最近接连出现两起有关 npm 安装 package.json 中依赖包,由于依赖包版本更新 bug 造成项目出错问题说起。
coder_koala
2021/04/21
3.9K0
【工具】前端新人入职必备清单
大家好,我是 Gopal(锅巴),目前就职于 Shopee,一家东南亚跨境电商公司。
GopalFeng
2022/08/01
1K0
【工具】前端新人入职必备清单
史上最贴心NPM私服搭建辅导
•微信公众号 《JavaScript全栈》•掘金 《合一大师》•Bilibili 《合一大师》•verdaccio[1]
合一大师
2020/07/20
2K0
史上最贴心NPM私服搭建辅导
Vue快速入门
迫于无奈还得学下前端的东西,虽然本人学的是后端,但是很早也就听过了Vue很火,所以这里花一天时间学一些基础的Vue知识,至少保证能看懂吧!
全栈程序员站长
2022/08/19
8270
Vue快速入门
nodejs之npm切换源
npm 源地址 1. 查看当前地址 npm config get registry npm config get disturl 2. 设置当前地址(设置为淘宝镜像) npm config set registry http://registry.npm.taobao.org/ 3. 设置当前地址(设置为默认地址) npm config set registry https://registry.npmjs.org/ 4. 每次执行命令前加入–registry指定仓库路径 npm --registry h
开水泡饭
2022/12/26
3.2K0
Vue开发仿京东商场app
vue3-jd-h5是一个电商H5页面前端项目,基于Vue 3.0.0 + Vant 3.0.0 实现,主要包括首页、分类页面、我的页面、购物车等,部分效果如下图。
xiangzhihong
2021/01/15
9580
推荐阅读
相关推荐
分分钟教会你搭建企业级的 npm 私有仓库
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文