像 Google SRE 一样 OnCall

news2024/9/21 0:26:38

在 Google SRE 的著作《Google运维解密》(原作名:Site Reliability Engineering: How Google Runs Production Systems)中,Google SRE 的关键成员们几乎不惜用了三个章节的篇幅描述了在 Google 他们是如何 OnCall 的。

Google SRE 实践中,有一个广为人知的理念:减少琐事,用软件工程的方式解决运维问题。具体到实际操作层面,Google SRE 设定了一个重要的、公开的目标:保持每个SRE的工作时间中琐事比例低于50%,SRE 至少花 50% 的时间在工程项目上,以减少未来的琐事或为服务增加新功能。

Google SRE 团队认为,琐事过多,会产生以下不利的后果:

  1. 职业停滞:如果花在工程项目上的时间太少,你的职业发展会变慢,甚至停滞。Google确实会奖励做那些脏活累活的人,但是仅仅是该工作是不可避免,并有巨大的正面影响的时候才会这样做。没有人可以通过不停地做脏活累活满足自己的职业发展。
  2. 士气低落:每个人对自己可以承担的琐事限度有所不同,但是一定有个限度。过多的琐事会导致过度劳累、厌倦和不满。
  3. 造成误解:我们努力确保每个SRE以及每个与SRE一起工作的人都理解SRE是一个工程组织。如果个人或者团队过度参与琐事,会破坏这种角色,造成误解。
  4. 进展缓慢:琐事过多会导致团队生产力下降。如果SRE团队忙于为手工操作和导出数据救火,新功能的发布就会变慢。
  5. 开创先河:如果SRE过于愿意承担琐事,研发同事就更倾向于加入更多的琐事,有时候甚至将本来应该由研发团队承担的运维工作转给SRE来承担。其他团队也会开始指望SRE接受这样的工作,这显然是不好的。
  6. 促进摩擦产生:即使你个人对琐事没有怨言,你现在的或未来的队友可能会很不开心。如果团队中引入了太多的琐事,其实就是在鼓励团队里最好的工程师开始寻找其他地方提供的更有价值的工作。
  7. 违反承诺:那些为了项目工程工作而新入职的员工,以及转入SRE的老员工会有被欺骗的感觉,这非常不利于公司的士气。

根据统计数据显示,琐事的第一大来源是中断性工作,另一个主要来源是OnCall。前者大多为与服务相关的非紧急事务,后者则为紧急的应急事务。在 Google,一个 SRE 团队至少要保持6~8人的规模,才能保证因 OnCall 轮值产生的琐事低于30%。

管中窥豹,Google SRE 的工作方式,不是谁都有条件学,也不是谁都可以学的来的。需要从文化 机制 工具层面综合考虑,以国内的运维现状来看,这是有一些实际困难和阻力的。

文化

首先,在文化层面,Google SRE 倡导以人为本,关注人的发展,着眼长期结果。在国内加班文化盛行,996甚嚣尘上。具体到 IT 运维领域,表现为:

  1. 技术人员工作和生活很难平衡,上班与下班没有明确界限,最终变成了只有值班,没有轮换,7x24小时响应。
  2. 工作规划以短期目标驱动,缺乏长期主义,导致技术人员每天忙于“战术性”的工作,琐事缠身,而无暇通过软件工程的手段一劳永逸的解决长期问题,久而久之堆积为技术债务
  3. 35岁IT打工人困境较为普遍。归根结底,是人的发展,没有得到足够的重视,由于不断的有大量新人进入到 IT 行业,使得很多企业选择了不断“汰换人”而非“发展人”这样的路线,自然也就无从谈起“费力减少琐事”了。

机制

其次,在机制层面,Google SRE 明确执行“琐事不能超过50%”的机制,确保一个独立的 SRE team 最少保持6人的规模,以支撑轮换 OnCall,同时给予工作时间之外的 OnCall 工作以额外的补贴。

在国内这个操作难度很大,国内的大多数企业,SRE人数 vs 研发总人数的比例普遍接近1:100,要保持6人的SRE team,几乎是不可能的。

工具

最后,在工具层面,Google SRE 内部使用的 OnCall 工具为 Outalator。在 Outalator 中,SRE 们在一个集中的平台上,管理着告警的全生命周期过程,具体的来讲,功能包括:

  1. 告警聚合:将多个告警信息“聚合”成一个单独的故障,SRE 以“故障”为维度来跟进和处理,大大降低了告警的发送量,避免重复性工作,降低了告警中的噪音,提高处理效率,以及减少工作失误。
  2. 加标签:给不同的故障,加上标签,用来额外描述故障的信息,方便SRE 以标签为维度来筛选、统计、分析,提高告警处理效率。
  3. 提供告警数据分析能力:从不同的维度,比如团队、个人、服务、机房等不同的维度,分析告警的数量变化趋势、告警的响应效率、处理效率,以便SRE能从宏观层面分析OnCall工作的不足之处,并有针对性的加以改进。
  4. 一键生成报告和公告:Outalator 中对一线SRE更有用的功能是可以选择一系列故障,将它们的标题、标签和“重要的”记录信息用邮件格式发送给下一个OnCall工程师(也可以CC其他人或邮件列表)。这样可以很容易地进行交接工作。Outalator同时支持一种“报告模式”,为周期性的生产服务评审(大部分团队每周进行一次)提供帮助。

Outalator 大概长下面这样: 

Google Outalator 2015

 

Google Outalator 2015

总结来讲,通过使用专业的 OnCall 工具,可以有效的解决日常工作中运维和研发人员面临的以下困扰:

  • 技术团队每天接收到大量的告警。
  • 很多告警长时间无响应,长期无人问津。
  • 告警与告警之间缺乏关联性,处理效率低下。
  • 告警处理缺乏协同,处理过程不透明,信息难以共享,知识难以沉淀。
  • 很多告警并未准确反应实际情况,无谓的消耗技术团队精力。
  • 客户/用户往往先于技术团队发现故障,客户满意度持续走低。
  • 无法量化的衡量应急响应的现状和效率,无法制定出改进和优化路线。

我们可以像 Google SRE 一样 OnCall 吗?

通过以上的分析,坏消息是文化和机制层面,学起来有阻力,好消息是工具层面,Google 的 OnCall 工具可选项还不少。

我们熟知的 Kubernetes 是 Google 内部容器编排工具 Borg 的开源实现,Prometheus 是 Google 内部监控工具 Borgmon 的开源版本。那么 Google 内部的 OnCall 工具 Outalator 有没有相关的产品呢?今天就给大家带来市面上两款典型的 OnCall 工具的介绍和分析。

  • PagerDuty 是全球范围内OnCall产品的领导者,可以仅以21$/人/月的价格,就可以用起来。
  • FlashDuty 是开源监控工具夜莺背后的开发者团队推出的 OnCall 产品,相比 PagerDuty 对国内的各种监控工具、IM工具适配性更好,产品体验也更简洁。

没有度量就没有改进,在实际工作中,运维负责人表面看到的是告警太多、团队成员疲于奔命,但苦于看不清告警处理的工作量,没法规划协调补充人力,更严重的是看不清优化告警的方向,导致情况持续恶化,最终团队散了,故障频发。一个好的 OnCall 工具,需要透出下面 5 个关键的度量指标:

  1. 降噪比:即告警的压缩比,通过算法、规则将众多相关的告警聚合后,再通知到值班人员。告警聚合能有效降低告警风暴,减少值班人员的工作量,提高信息处理的效率(该指标越高越好)。
  2. 响应比:被认领的告警占所有告警的比例。在告警管理领域,需要响应或者认领的告警,才是有用的告警,因此通过统计和观察“响应比“,能整体的评估告警是否足够有效和有用,并持续的推动提升告警”响应比“(该指标越高越好)。
  3. 告警总量:一段时间窗口内产生的告警数量。过高的告警总量,意味着值班的压力越大,对技术团队注意力的干扰越多,潜在的意味着告警的噪音可能也过大,因此过多的告警,会让整个系统处于不可运维的状态,应该该尽力的降低告警总量,譬如采用基于SLO的告警,就可以答复降低该指标(该指标越低越好)。
  4. MTTA(平均响应或认领用时):从告警发生到值班人员响应或者认领的时间间隔。越快的 MTTA,标志着越高的告警处理效率,潜在的代表着越高的服务稳定性。通过MTTA我们可以有效的度量团队的工作压力,以便决策合适的资源投入,确保团队始终处于可持续发展的状态(该指标合适就好)。
  5. MTTR(平均恢复或解决用时):从告警发生到问题解决的时间间隔。越快的 MTTR,往往意味着团队拥有更先进的观测技术、更强大的基础设施平台、更熟练的工作技能、以及对业务系统有更深入的理解(该指标越快越好)。

下面笔者将从产品、价格与服务三个维度,来探讨国内外这两款 OnCall 产品 Flashduty 和 Pagerduty 的差异。

产品

集成能力

故障管理系统作为流程处置中心,存储了全部的告警和故障数据。此类系统应该支持强大的数据接入和外呼能力,以便和其他各类系统或工作流集成,加速响应、增强协同。

故障处置

故障处置为系统的核心操作,该维度下主要考察产品功能的丰富度和灵活性。

平台能力

平台能力主要在成员管理、值班响应和通知能力层面,系统要具备基本的审计和单点登录功能。通知渠道越丰富越好,本地化支持越多越好,值班管理最好能满足组织内的特殊场景。

价格

PagerDuty 和 FlashDuty都提供多种订阅方式。选择的时候在满足自身需求的情况下,哪一款更具性价比,确保实际使用不超预算,计价方式的简单性都很重要。

  • Pagerduty 价格页:Incident Response Pricing | PagerDuty
  • Flashduty 价格页:FlashDuty详细价格 - 快猫星云

服务

服务维度主要考察供应商服务响应的方式、专业性、及时效性。

注册

现在点击专属链接 完成注册,立即开始在 IM 中处理告警。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1398781.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python--re库

目录 re库初识 re库基础使用方法 compile()函数 基本用法 正则表达式常用规则字符 match与search方法 match search match/search findall与finditer方法 使用findall()返回所有匹配项 使用findall()提取多个组的匹配 使用finditer()逐个返回Match对象 使用findi…

会声会影2024旗舰版新功能介绍及2024最新视频制作教程

随着科技的不断发展,视频制作已经不再是专业人士的专属领域,越来越多的人开始使用各种视频制作软件来记录生活、创作内容。其中,会声会影是被广泛使用的一款视频制作软件,其旗舰版更是备受关注。 据悉,会声会影2024旗舰…

pyqt5+python子域名扫描程序

import sysfrom PyQt5 import uic from PyQt5.QtWidgets import * #requests库内置了不同的方法来发送不同类型的http请求 import requests#BS主要功能是从网页抓取数据,提供一些简单的、python 式的函数用来处理导航、搜索、修改分析树等功能 from bs4 import Beau…

Google Gemini API快速上手

一、前言 12月6日,谷歌发布新一代大模型Gemini的demo, 同时,Bard已将模型更新为Gemini Pro Gemini 是谷歌目前最新最强的大语言模型,支持多模态(文字,图片,音频,视频等等)处理 美…

K8S--部署Nacos

原文网址:K8S--部署Nacos-CSDN博客 简介 本文介绍K8S部署Nacos的方法。Nacos版本是:2.2.3。 部署方案 本文为了简单,使用此部署方式:使用本地pvconfigmap,以embedded模式部署单机nacos。以nodePort方式暴露端口。 …

如何使用 Typora 进行效率写作

引言 在数字化时代,写作已经成为我们生活中不可或缺的一部分。为了提高写作效率,寻找一款简单而功能强大的编辑器显得尤为重要。而Typora,作为一款所见即所得的Markdown编辑器,以其高效的特性和用户友好的界面吸引了众多写作者的…

Linux设备管理模型-02:sysfs

文章目录 sysfs1 使用sysfs控制GPIO2 sysfs编程2.1 完善sysfs属性文件的读写操作 上一篇文: 设备管理模型中的基础数据结构 sysfs sysfs是用于导出内核对象的文件系统,它是一个基于ram的文件系统,最初基于ramfs。 sysfs通常挂载在/sys目录下。它提供了一…

推荐新版AI智能聊天系统网站源码ChatGPT NineAi

Nine AI.ChatGPT是基于ChatGPT开发的一个人工智能技术驱动的自然语言处理工具,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,真正像人类一样来聊天交流,甚至能完成撰写邮件、视频脚本、文案、翻译、代…

管理信息系统知识点复习

目录 一、名词解释题1.企业资源规划(ERP)2.面向对象方法:3.电子健康:4.供应链5.数据挖掘6.“自上而下”的开发策略:7.业务流程重组8.面向对象:9.决策支持系统10.聚类11.集成开发环境:12.供应商协同13.数据仓库14.深度学…

interpret,一个超酷的 Python 库

更多资料获取 📚 个人网站:ipengtao.com 大家好,今天为大家分享一个超酷的 Python 库 - interpret。 Github地址:https://github.com/interpretml/interpret Python Interpret 是一个强大的开源工具,它为 Python 开发…

我为什么不建议使用框架默认的 DefaultMeterObservationHandler

我为什么不建议使用框架默认的 DefaultMeterObservationHandler 个人创作公约:本人声明创作的所有文章皆为自己原创,如果有参考任何文章的地方,会标注出来,如果有疏漏,欢迎大家批判。如果大家发现网上有抄袭本文章的&a…

传统语音识别系统流程

文章目录 概述语音识别原理公式语音识别术语:分帧提取声学特征声学模型 概述 语音识别传统方法主要分两个阶段:训练和识别,训练阶段主要是生成声学模型和语言模型给识别阶段用。传统方法主要有五大模块组成,分别是特征提取&#…

JVM 如何判断一个对象可以被回收

Hi, 我是 浮生。 今天分享一道一线互联网公司必问的面试题。 ”JVM 如何判断一个对象可以被回收“ 关于这个问题,来看看高手的回答。 一、问题解析 在 JVM 里面,要判断一个对象是否可以被回收,最重要的是判断这个对象是否还在被…

XHCMS靶场小记(熊海)

文件包含漏洞 template下的header.php中存在文件包含漏洞(该文件被file文件夹下的多数文件进行包含) f参数可以包含任意文件通过php格式解析(这是文件包含点) 代码分析 根目录下的index.php文件;r参数用于获取包含文…

怎样使用崭新的硬盘

新买的一块硬盘,接到电脑上,打开机器,却找不到新的硬盘,怎么回事?新的硬盘是坏的么?怎样才能把新硬盘用起来? 可能有几种原因导致您的电脑无法识别新的硬盘。以下是一些建议的解决方法&#xff…

SOCKET编程和TCP通信案例三次握手四次挥手

文章目录 一、SOCKET1、网络套接字SOCKET2、网络字节序2.1、小端法2.2、大端法2.3、字节序转换3、IP地址转换函数3.1、本地字节序转网络字节序3.1.1、函数原型:3.1.2、返回值3.2、网络字节序转本地字节序3.2.1、函数原型3.2.2、返回值4、sockaddr地址结构&#xff0…

Android Termux技能大揭秘:安装MySQL并实现公网远程连接

🌈个人主页:聆风吟 🔥系列专栏:网络奇遇记、Cpolar杂谈 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 📋前言一. 安装MariaDB二. 安装cpolar内网穿透工具三. 创建安全隧道映射mysql四. 公网…

Linux下安装docker

1、查看系统版本 Docker支持64位版本的CentOS 7和CentOS 8及更高版本,它要求Linux内核版本不低于3.10。查看Linux版本的命令这里推荐两种:lsb_release -a或cat /etc/redhat-release。 显然,当前Linux系统为CentOS7。再查一下内核版本是否不低…

MCM备赛笔记——蒙特卡罗方法

Key Concept 蒙特卡罗方法(Monte Carlo Method),也称为统计模拟方法,是一种基于概率和统计的数值计算方法。该方法使用随机数(或更常见的伪随机数)来解决可能非常复杂的数学或物理问题。蒙特卡罗方法广泛应…

关于xftp突然无法连接服务器或虚拟机,可以ping通自己的虚拟机ip地址

关于xftp突然无法连接服务器或虚拟机,ping自己的虚拟机ip地址可以ping通 主机能ping通虚拟机&#xff08;ubuntu&#xff09; C:\Users\42216\Desktop>ping 192.168.61.128正在 Ping 192.168.61.128 具有 32 字节的数据: 来自 192.168.61.128 的回复: 字节32 时间<1ms …