无服务器部署与 CI CD 自动化
11.12 SRE入门意识
Tip
真正的崩溃不是报错,而是"沉默"。
1. 为什么要学这个?
恐怖故事: 你睡得正香,第二天早上醒来,发现老板发了 50 条微信。 "网站打不开了!" "用户付不了款了!" 一看日志,昨晚凌晨 2 点证书过期,服务挂了整整 6 个小时。 不仅丢了钱,还丢了信任。
SRE (Site Reliability Engineering) 就是要在用户发现问题之前,先发现问题。
2. 核心概念:监控体系
1. Uptime Monitor (心跳检测)
这是你的"心电图仪"。
这就好比 ICU 里的"滴...滴...滴..."。
它每隔 5 分钟尝试访问你的网站 https://your-site.com。
- 状态 200: 活着。
- 状态 500/无法连接: 死了 -> 立刻给你的手机发报警 (短信/电话)。
- 工具: UptimeRobot (免费且好用), Better Stack。
2. Error Tracking (病情诊断)
这是你的"验血报告"。 用户端报错了 (White Screen),或者后端抛异常了。 用户是不会主动告诉你的,他们只会默默关掉网页。 你需要一个工具,自动捕获这些错误,并告诉你:
- 谁错了: User A (Chrome on Windows)。
- 哪错了:
SubmitButton.tsxLine 42。 - 怎么错的:
TypeError: Cannot read property 'price' of undefined。 - 工具: Sentry (行业标准)。
3. 核心术语 (SLA/SLO)
- SLI (Indicator): "体温多少度?" (当前的延迟是 200ms)。
- SLO (Objective): "发烧线是多少?" (我们目标是 99% 的请求在 500ms 内)。
- SLA (Agreement): "烧坏了咋赔?" (如果停机超过 1 小时,赔偿客户 1 个月会员)。
4. 解决方案 (HOW)
第一步:接入 UptimeRobot
- 注册 UptimeRobot。
- Add New Monitor -> HTTP(s)。
- 输入你的网址。
- 勾选 "Email Alert" (在这个阶段不需要电话报警)。 成本: 0 元/月。
第二步:接入 Sentry
- 注册 Sentry。
- Create Project -> Next.js。
- 在项目里运行 Wizard:
npx @sentry/wizard@latest -i nextjs - 它会自动修改
next.config.js并上传 Source Maps。 成本: 0 元/月 (个人版额度足够)。
SRE 循环图
graph TD
Monitor["Step 1: 监控 (Monitor)"] -->|"报警: 网站挂了"| Alert["Step 2: 告警 (Alert)"]
Alert -->|"唤醒工程师"| Fix["Step 3: 修复 (Fix)"]
Fix -->|"复盘"| Postmortem["Step 4: 事故报告 (Postmortem)"]
Postmortem --"改进架构 (比如加缓存)"--> Monitor
style Alert fill:#ffcdd2,stroke:#c62828
style Monitor fill:#e1bee7,stroke:#8e24aa
5. 真实案例
Story
"安静的购物车"
某电商大促,老板发现无论流量多大,成交量都是 0。
前端界面看起来完全正常,没有白屏。
工程师打开 Sentry 一看,发现有一个 Unhandled Promise Rejection 正在疯狂刷屏。
原因:后端更新了一个字段名,前端的"加入购物车"逻辑因为取不到值,默默失败了 (try-catch 捕获了但没处理)。
这个错误在控制台里只是红了一行字,但对业务来说是毁灭性的。
Vibe 心法: 不要相信"沉默"的系统。 没有 Error Log 不代表没有 Bug,可能只是你没捕获到。 Sentry 是开发者的第六感,它能让你隔着屏幕感知到系统的疼痛。
6. 本章小结
- 心跳检测:UptimeRobot 是底线,没它就别上线。
- 错误追踪:Sentry 是标配,一定要配置 SourceMap 才能看懂报错。
- 告警疲劳:不要把
console.log都发报警,只有真正需要你立刻起床的事才值得报警。