减少琐事
识别并消除重复、手动、可自动化的运维工作对工程时间的消耗。
为什么
琐事是重复、手动、可自动化的工作,若不检查会涨到消耗 SRE 一周 50%+ — 重启 pod、拷日志、跑同 SQL 出报告、手动故障转移队列。每小時琐事是未花在减少未来琐事的工程工作上的小时,所以琐事复利:越多越没时间消除所以越涨。SRE 处方是琐事预算(限 <50% 时间)和常设减琐队列:每季选 top 琐事源自动化或消除。这样做的团队报一年内琐事从 60% 降到 20%,余下时间给防宕机的可靠性项目。
何时使用
当运维工作消耗工程师一周 >50%,或同手动任务做过 3+ 次。季度审查。
如何做
1. 测琐事 2 周 - 记每任务:什么、耗时、手动/重复/可自动 - 琐事 = 手动 + 重复 + 可自动 + 无持久价值 - 总琐事时 / 总时 = 琐事百分比 2. 建琐事队列 - 按(耗时 × 频率)排 — 最大消耗优先 - 每项标:"自动化" / "消除" / "文档并接受" - 队列是 backlog 项,冲刺规划审查 3. 选 top 项消除它 - 自动化:写脚本/runbook 做;从告警或计划触发 - 消除:任务必要吗?常流程在原因消失后很久仍存在 - 文档+接受:若真必要且不可自动,使它 5 分钟非 30 分钟 4. 限琐事 <50% 时间 - 若琐事 >50%,减琐是冲刺最高优先,非功能工作 - 这是 SRE"琐事预算"— 硬上限非愿望 5. 防新琐事 - 每新手动流程需"如何自动化此"计划 - 代码审查:若变更加手动步,要求同时加自动化
示例
# 琐事日志 (2 周样本): # restart-pod-orders 15m × 12 次 = 3h → 自动化(runbook-trigger) # generate-weekly-report 45m × 1 次 = 45m → 自动化(cron + SQL) # copy-logs-for-debug 10m × 8 次 = 80m → 自动化(仪表盘链接) # manual-failover-queue 30m × 2 次 = 60m → 自动化(自动故障转移) # 总琐事:5h 25m / 80h = 6.8%(健康,但 restart-pod 是最大消耗) # 自动化 restart-pod-orders(top 项): # 前:值班 SSH 到机器,跑 kubectl delete pod,等,确认 # 后:告警自动触发 runbook 删 pod 并验证恢复 # - runbook:https://rb/restart-orders-pod(可自动执行,见 runbook-trigger) # - 每周省 3h 琐事,且 MTTR 降 10m(无人登录时间) # 琐事预算策略: # 若 toil_pct > 50:冲刺最高优先 = 减琐(无功能) # 每季度审查琐事日志,重排,消除 top 项
常见问题
- ⚠不测琐事 — 无 2 周日志琐事是感觉,工程师无法论证自动化时间超功能工作。
- ⚠自动化琐事但不维护自动化 — 脚本腐烂坏,回手动并加"修脚本"琐事于上。
- ⚠把减琐当一次性项目而非常设队列 — 每功能加新琐事,队列须永久。
- ⚠无琐事预算上限 — 琐事涨到填满可用时间因功能工作总比它造的琐事更可见。
最佳实践
- ✓记琐事 2 周以量化 — 无数字,减琐在每次冲刺规划对话输给功能工作。
- ✓保持按耗时×频率排的永久减琐 backlog;每季消除 top 项,非有空才做。
- ✓把琐事限 <50% 工程时间作硬预算;超时减琐是冲刺最高优先非功能。
- ✓要求每新手动流程带自动化计划 — 代码审查拒绝加永久手动步的变更。