惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
Schneier on Security
A
About on SuperTechFans
V
Visual Studio Blog
美团技术团队
雷峰网
雷峰网
J
Java Code Geeks
L
LINUX DO - 最新话题
T
Threatpost
I
Intezer
Simon Willison's Weblog
Simon Willison's Weblog
月光博客
月光博客
博客园 - Franky
The Cloudflare Blog
AWS News Blog
AWS News Blog
T
Tor Project blog
IT之家
IT之家
S
SegmentFault 最新的问题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园_首页
T
The Exploit Database - CXSecurity.com
L
LINUX DO - 热门话题
S
Securelist
V
V2EX
C
CERT Recently Published Vulnerability Notes
T
Threat Research - Cisco Blogs
Attack and Defense Labs
Attack and Defense Labs
人人都是产品经理
人人都是产品经理
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
量子位
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Cyberwarzone
Cyberwarzone
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
大猫的无限游戏
大猫的无限游戏
T
Tenable Blog
爱范儿
爱范儿
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Hacker News: Ask HN
Hacker News: Ask HN
小众软件
小众软件
Spread Privacy
Spread Privacy
S
Security Affairs
NISL@THU
NISL@THU
Blog — PlanetScale
Blog — PlanetScale
GbyAI
GbyAI
T
The Blog of Author Tim Ferriss
MongoDB | Blog
MongoDB | Blog
AI
AI
Cisco Talos Blog
Cisco Talos Blog
N
Netflix TechBlog - Medium
博客园 - 司徒正美

DevOps

复制企业级 Linux 开发环境:如何实现严格开发环境与生产环境一致性的基础架构策略 - V2EX 带有账密的 ISP 住宅代理,海外服务器请求正常, macOS 本地 curl 持续失败 A lock-file-based plugin manager for Jenkins 从 2022 年至今, DevOps 技术栈有什么新的发展吗 oracle 1U1G 机器能吗? 各位都是怎样优雅的 pull 容器镜像的 Gisia 新版发布,增加看板功能,欢迎提意见 内部做一个新的环境,在更新生产环境前先把生产服务等先在这个服务上过一遍,确认没问题后再上生产,这个环境叫什么环境?这种流程叫什么流程? 使用 containerd 配置镜像加速不生效问题 一个 Jenkins 技术问题,要被搞疯了 推荐一款轻量级 DevOps 平台 tg 上运维/sre/devops 相关的交流群 有哪些能满足要求的 DevOps 平台? 国内参加 CKA/CKAD 考试有无推荐的代理提供商 关于 Java 项目的健康检查、自愈和轻量级管理 drone 构建一直卡住,心力憔悴 [Terraform/腾讯云] 有用 Terraform 来管理腾讯云的朋友吗,它这个频率限制真的没问题吗? 遇到一点证书问题,望运维大佬给看看 - V2EX 关于 CMDB 如何保证数据一致性的讨论 Red Hat Access 文档下载求助 各位 Linux 运维的巨佬工作用 mac 吗 - V2EX 在单服务器搭最小规模的 CICD 的技术栈是什么 - V2EX 遇到一个 Redis 跨 VPC 读取的问题 好奇 Linux 运维 修改配置一般有做版本控制吗 - V2EX 私有化 SaaS 系统应该支持随便换域名吗 - V2EX 请教一个关于容器化部署的问题 官方 helm charts V.S. bitnami helm charts V.S. 官方 operator,大家一般倾向于用哪个? terraform 原理的一点儿思考 私有化部署太难搞了 - V2EX 开发转做运维开发,有什么需要注意的?需要额外学习和掌握什么? 大家的 CI 都是怎么搭建的? 开源 CMDB 新增支持多种认证方式: CAS、OAuth2.0、OIDC,并已兼容测试 casdoor 很好奇还有没有类似 Jenkins 的 配置 Freestyle 项目的 CI/CD 工具 坚持为「专业性」买单,就是最大的降本增效! KCL 社区最新动态速递 | IDE 插件支持引用查找和重命名、CNCF ArtifactHub KCL 集成 - V2EX cmdb vs rpa ? 国内有没有类似 FreeIPA 和 Keycloak 的产品? 求推荐一个可以管理多个 Linux 系统的平台 ipv6 访问 docker 最优雅的姿势是啥? 私有化部署术语大家一般用 self-host(及其变种)还是 on-premise? 上线时需要将迭代期内的各种配置改动同步到生产环境,有没有好用的配置备忘录的工具? 有没有数据库 CICD 方面比较好的实践 Nexus Repository 3 权限管理思路, LDAP 集成与单点,助力 CI/CD 加速 sonarqube 与 gitlab 的账号单点认证与项目集成详解 如何设置 azure devops 上 创建的 pull request 在满足某些条件时, 自动能够完成合并到目标分支 jenkins pipeline 如何在 stage3 错误的时候,返回 stage2 重新执行 4 位硬科技创始人对谈 DevOps 硬件实战 jenkins 如何在一个任务中创建多个构建触发器,并且每个构建触发器对应的步骤是不同的 Unity 单元测试和 Gitlab 自动化集成示例 怎么做好运维 Windows Server 如何做 CI/CD?
Google SRE 的 on-call 方法和工具
laiwei · 2024-02-27 · via DevOps

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

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 的老员工会有被欺骗的感觉,这非常不利于公司的士气。

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

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

文化

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

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

机制

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

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

工具

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

告警聚合:将多个告警信息“聚合”成一个单独的故障,SRE 以“故障”为维度来跟进和处理,大大降低了告警的发送量,避免重复性工作,降低了告警中的噪音,提高处理效率,以及减少工作失误。

加标签:给不同的故障,加上标签,用来额外描述故障的信息,方便 SRE 以标签为维度来筛选、统计、分析,提高告警处理效率。

提供告警数据分析能力:从不同的维度,比如团队、个人、服务、机房等不同的维度,分析告警的数量变化趋势、告警的响应效率、处理效率,以便 SRE 能从宏观层面分析 on-call 工作的不足之处,并有针对性的加以改进。

一键生成报告和公告:Outalator 中对一线 SRE 更有用的功能是可以选择一系列故障,将它们的标题、标签和“重要的”记录信息用邮件格式发送给下一个 on-call 工程师(也可以 CC 其他人或邮件列表)。这样可以很容易地进行交接工作。Outalator 同时支持一种“报告模式”,为周期性的生产服务评审(大部分团队每周进行一次)提供帮助。

Outalator 大概长下面这样: Google Outalator 2015 Google Outalator 2015

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

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

通过以上的分析,坏消息是文化和机制层面,学起来有阻力,好消息是工具层面,Google 的 on-call 工具可选项还不少。下面两款 on-call 工具推荐给大家:

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