posts

一个人的运维:可用性、告警、事故与值班(10 篇)

运维不是把服务器看住,是把「坏了怎么办」提前写好。本组用十篇把一人产品的稳定运行拆开:可用性换成停机分钟、五条探针、告警降噪、日志串联、状态页与公告、容量水位、依赖降级、发布后观察、事故复盘,最后用十项控制与四张表做验收。

一个人运维,不是不出事,是出事后知道先做什么。

这个系列解决什么问题

产品上线之后,工作重心会悄悄换一次:从「把它做出来」变成「让它一直能用」。这件事没有排期、没有验收、也很少有人提醒,直到某天你被一封「你们的服务是不是挂了」的邮件叫醒。

这个系列把这部分补上:先把可用性换成每月停机分钟,定下对外承诺与内部目标;再用五条探针把发现时间从四十七分钟压到三分钟;把四十条告警降成三条;用请求 ID 把日志串成证据;用状态页与三条模板解决「故障时说什么」;用四项水位判断先撞哪堵墙;为九个依赖各写一条降级动作;在发布后的四个窗口里按阈值决定回滚;用五分钟止损、一天说明、七天复盘处理事故;最后用十项控制与四张表做一次季度验收。

它服务的是一个人。 你没有值班表、没有 SRE、没有 on-call 轮换;你能投入的是每月四小时,和一份出事时还能看懂的清单。

核心主张:五条口径

10 篇速览

#文章核心内容阶段
01可用性是一份预算:四个 9、停机分钟与一个人的取舍停机分钟换算、三档成本、对外与对内两档承诺目标
02最小监控:四个信号、五条探针与三分钟发现延迟/流量/错误/饱和度、五条关键路径探针、发现时间发现
03告警降噪:从 40 条到 3 条四类告警、三级分级、持续时间、抑制与静默通知
04日志与错误聚合:在五分钟内找到那一次失败四个必记字段、请求 ID、指纹聚合、采样与保留取证
05状态页与故障沟通:故障时说什么、多久说一次五种状态、三条模板、15 分钟首发与 30 分钟更新沟通
06容量与成本:先找瓶颈,再谈扩容四项水位、三倍增长、零成本优先的扩容顺序容量
07第三方依赖运维:供应商挂了,你怎么办九个依赖、SLA 读数、三层降级与一次演练依赖
08发布后的 24 小时:观察窗口、回滚判据与冻结期四个窗口、五条阈值、回滚与热修的算术发布
09事故响应与复盘:五分钟止损、一天说明、七天复盘三选一止损、五段式复盘、MTTR 与长尾事故事故
10运维验收:十项控制、四张表与月度巡检十项控制、四维加权、3.9 分与季度只改一件事验收

三条阅读路径

路径 A:刚上线,还没有任何监控。 从 02 建五条探针,再用 03 把通知压到能看,接着用 05 把状态页与模板准备好。这条路径的重点是「先能发现,再谈优化」。

路径 B:有监控,但天天被误报吵。 先做 03 的四类分诊与持续时间条件,再用 04 把日志串起来、08 定下回滚判据。这条路径的重点是「把噪音换成信号」。

路径 C:刚出过一次大事故。 从 09 的五分钟三选一与五段式复盘开始,回到 01 重算可用性,再用 10 做一次季度打分。这条路径的重点是「把这次的教训变成下一次的顺序」。

与其它专题的边界

站内已有运维与安全内容,但多在团队与基础设施语境。下表说明本组不重复什么。

既有内容它讲什么本组边界
独立开发者的资产韧性:一个人的账号、数据与恢复能力(10 篇)账号、域名、代码、备份、收款与账号被盗的 72 小时它保证「资产不丢」;本组保证「服务可用」,两者的触发条件与处置顺序不同
一个人把软件交付到用户手里:签名、安装、更新与审核(10 篇)构建、签名、安装包、商店审核与崩溃遥测它管「怎么发到用户手里」;本组管「发出去之后怎么盯住」
一个人给产品加 AI:判据、成本、护栏与验收(10 篇)推理成本、滥用防线与供应商降级它针对单一 AI 链路;本组处理全站依赖、容量与发布
一个人的自助支持:帮助中心、排查树与工单减少(10 篇)帮助中心、排查树、更新日志与升级路径它让用户自助解决;本组让你先知道出了问题
一个人的消息系统:事务邮件、通知分层与送达率(10 篇)事务邮件、通知分级与送达率它管「发给用户的消息」;本组管「发给自己的告警」
一个人的财务:现金流、runway 与月度结账(10 篇)现金、成本、runway 与月度结账它算钱;本组算停机分钟与时间预算,两者共用同一个四小时/月
一个人的公司:独立开发者的主体、税务与合规底座(10 篇)主体、合同、知识产权与法定申报它是法律义务;本组是工程控制,合规口径以其为准
信息安全与云安全专题威胁建模、认证授权、供应链与安全运营它讲安全工程;本组只讲可用性,不涉及攻击面与数据保护
独立开发者生存指南专题导航:11 篇从认知到 12 个月路线图的完整手册12 个月路线、变现与项目节奏它是长期策略;本组是上线后的日常动作
一个人的产品度量:事件字典、指标口径与决策看板(10 篇)事件字典、指标口径、漏斗、看板与数据质量它量用户行为;本组量系统状态,两者的告警不该混在一条通道
一个人的架构:技术选型、模块边界与演进(10 篇)技术选型排除法、九个模块与依赖方向、数据迁移三步、四个升级窗口、技术债预算、三次规则、重构判据、可替换性、幂等与补偿、四维验收那组讲代码层的幂等与补偿;本组讲可用性、告警、事故与值班
一个人的计费系统:订阅状态机、按比例计费与失败重试(10 篇)订阅状态机、五个时点、按比例计费、按量计量、催收、退款拒付、发票税务、对账漏损、自建决策、十二项验收那组讲交易与对账;本组讲可用性、告警、事故与值班
一个人的隐私工程:数据地图、最小化与删除权(10 篇)数据地图、最小化、合法性依据与同意、政策一致性、数据主体请求、删除、保留期、跨境与供应商、泄露响应、十二项验收那组讲事故与日志里的个人数据;本组讲可用性、告警、事故与值班
一个人的数据搬家:导入、去重、迁移与退出(10 篇)迁移漏斗、导入契约、字段映射、去重合并、幂等重跑、人工代导入、窗口与回滚、附件限额、导出退出、十项验收那组讲导入窗口与回滚演练;本组讲可用性、告警、事故与值班
一个人的质量守门:验证预算、回归清单与发布门禁(10 篇)47 缺陷与三条红线、12 条关键路径、三层配比、38→26 回归、六项门禁、四级缺陷、测试数据、不可逆保护、测试债、十项验收那组管上线前敢不敢发;本组管上线后的可用性、告警、事故与值班
一个人的安全基线:十四个入口、十七个密钥与一次 72 小时响应14 个攻击面、认证与枚举、会话撤销、17 个密钥三档、四条边界、41 个依赖与 186 条告警、四类限流、9 类审计日志、72 小时三段响应、20 项验收那组管「别被破」;本组管「别挂」——可用性、告警与事故
一个人的性能与账单:4.2 秒的首屏、一千二百次查询与每月 210 美元4 项预算与 20 格、RUM 与慢查询、412→168 KB、1,200→3 次查询、0→86% 缓存、34 秒导出、7→4 个第三方、210→118 美元、3 次回归告警、10 项验收那组管「同样容量下快不快、贵不贵」;本组管「别挂」——可用性、告警与事故
一个人的企业客户:九家询价、一百四十八道问卷与 134 天的第一单9 家询价与 130 h、96 天采购、148 题问卷、7 个子处理者、SLA 43.2/216 分钟、26 h SSO、4 周试点、38 天到账、8 h 实施、10 项验收那组讲 SLA 敢承诺几个 9;本组讲可用性预算、告警与事故复盘
一个人的开源产品:4,200 个 star、一百八十个付费与一年 612 小时的维护4,200 star 与 1,949 美元、612 h 维护、214 依赖、48,600 行 78/22、1,180 个 issue、214 条告警、23 个赞助者、9 家双许可、17 位贡献者、10 项验收那组讲开源项目的维护与告警分流;本组讲可用性预算、告警与事故复盘

这十篇不承诺「按这套做就不会出故障」,也不提供任何厂商报价。可复算的部分全部用四则运算给出算式;不可复算的部分(实例价格、SLA 条款、供应商赔付)明确指向账单与合同。所有数字都是教学假设,代入前请换成自己的水位与记录。

本组统一口径

全组共用一组教学假设,各篇引用时不换分母:

产品:一人 SaaS,120 个付费账户、344 个登录账号
月历:30 天 = 43200 分钟
对外承诺 99.5% → 每月允许停机 216 分钟
内部目标 99.9% → 每月允许停机 43.2 分钟
近 90 天(129600 分钟):4 次故障、累计 138 分钟 → 99.89%
其中依赖方 42 分钟、自因 96 分钟(含数据库恢复 82 分钟)
探针:5 条 × 每分钟 1 次 = 7200 次/天 = 216000 次/月
告警:40 条/月 → 抖动 22、重复 9、非紧急 6、真实 3 → 误报率 77.5%
日志:写入 1.2 GB/月,采样 10% → 索引 0.12 GB/月,保留 30 天
请求:18 万次/月 → 6000 次/天,峰值约 0.42 次/秒
容量:连接 9/20、队列 320/1000、存储 1.8/10 GB、CPU 62%
发布:4 次/月 × 45 分钟观察 = 3 小时;双周发布 = 90 分钟
运维预算:4 小时/月 = 48 小时/年,不新增现金支出

四周月口径。 凡涉及月度的地方按 30 天计算;季度按 90 天、129600 分钟计算,不用自然月的长度替换。

可用性按分钟算。 99.89% 与 99.9% 看着接近,差的是 8.4 分钟;不换成分钟,讨论会停在形容词上。

成本是教学假设。 55、190、640 与 40 美元只用来展示数量级;真实价格随区域、规格与合同变化。

时间是本组真正的分母。 4 小时/月是所有方案的约束:任何建议如果超过这个预算,就不适合一人产品。

使用说明

先读 01,不要先去买监控。 不知道自己要承诺几个 9,买什么工具都只是多一个看板。

每篇都可以单独使用。 文章之间共享基线,但不依赖前后文;你可以只拿 03 的降噪规则或 08 的回滚阈值回去改。

先做零成本的动作。 五条探针、持续时间条件、请求 ID、状态页静态化、连接池调整,这些都不花钱。

工具越少越好。 一个探针服务、一个错误聚合、一个状态页,比五个平台更容易坚持。

本组的证据与使用方法

证据类型。 本组用的是「探针记录 + 错误日志 + 事故时间线 + 账单水位」:可用性分钟数、告警条数、错误分组、连接与存储水位。没有行业均值,也没有「通常来说」的推断。

如何使用。 先把 01 的 138 分钟填成自己的记录,再用 02 的五条探针补上发现能力,用 03 的三级分级压掉误报,最后用 10 的四维评分做季度体检。

如何复核。 取最近 90 天的探针结果与事故记录,按 01 的口径重算可用性、按 03 的口径重算误报率、按 06 的口径重算四项水位;缺关键分母时先补采集,结论以实际数据为准。

系列导航

全部文章 game Indie golang 客户端开发 Minigame Saas rust Python Java cg