Skip to content
难度LEVEL★★★★
阅读READ约 3 分钟~3 min
更新UPDATED2026-09

第 9 章 日志、监控与告警 · 出事之前先知道

easycode · Agent Skill

三个词先分家。日志是系统写的日记,出事后翻。监控是持续量体温的仪表盘,随时看。告警是体温超标自动打给你的电话,不用一直盯。大多数个人项目停在"有日志但不会看"这一级,今晚往上爬两级。

第一步,画出日志地图。我们的日志散落在四大件里,各有各的入口。Vercel 的函数日志,第一册第 14 章提过的那个。Supabase 的数据库与 Auth 日志。DO 上,服务的日记用 journalctl -u 服务名(第 3 章的管家日记),Nginx 另有 access log 和 error log。Cloudflare 则有整体流量分析。于是排障的完整咒语终于凑齐了,症状定层(每章末尾攒的那张表),层定日志(本章这张地图)。两步走完,"网站坏了"就变成了"去翻某一本具体的日记"。

第二步,会读一行日志。拿 Nginx 的访问日志当标本。

203.0.113.7 - - [24/Jul/2026:20:14:03] "GET /api/v1/certificates/abc HTTP/1.1" 200 512 0.003

从左到右。谁(IP),何时,要什么(方法加路径,第 7 章设计的窗口在这里留下脚印),结果如何(状态码,那几张头牌脸),回了多大,花了多久。最原始也最有效的巡逻术,是第二册的 grep。grep " 500 " access.log,把所有"我这边坏了"的瞬间抓出来排队。

第三步,给 AI 立打日志的家规,可直接进 CLAUDE.md。其一,关键动作必留痕,谁,何时,做了什么。其二,错误日志必须带上下文,只写一个 "failed" 是对未来自己的犯罪,要写给谁、做什么、因为什么失败。其三,秘密永不进日志,密码、完整的 API Key、令牌,一个都不许。日志天生会被到处传阅,贴给 AI,发到群里,存进监控平台,第一册第 9 章的纪律在这里长出了新的一面。

第四步,最小监控三件套。别贪多,三个数字起步。网站还活着吗,配一个 uptime 探针,这类免费服务每分钟替你打开一次网站,打不开就发邮件。磁盘还剩多少,第 2 章说过,日志撑爆磁盘是裸服务器的头号杀手,让探针或定时任务盯着 df。错误率有没有突跳,各平台的仪表盘都有现成图。配告警时守一条黄金法则,每条告警必须对应一个行动。会响但不需要你做任何事的告警,唯一的作用是训练你忽略告警,等于给自己安装"狼来了"。宁少勿滥。

出事时想起我(本章是"想起我"们的总部)

用户说"昨晚打不开"而你毫不知情,缺 uptime 告警,今晚补上。排障时东翻西找像无头苍蝇,先默念咒语,症状定层,层定日志。日志翻到了却查不到关键信息,家规第二条没立,回去补上下文。

关键领悟

日志是写给"出事后的你"的信,监控是替你值班的眼睛,告警是只在需要行动时才响的铃。三件套的唯一目标,让你永远比用户先知道

试一试(安全档 · 只读,外加一个小设置)

把四大件的日志入口各打开一次,做成一页"排障地图"(哪层的日志在哪看,一层一行)存进项目文档。然后给网站配上第一个 uptime 探针,告警发到你天天会看的邮箱。这套书里第一位"替你值班"的员工,今晚上岗。

由 Charles Tao 与 Claude 协作写成——这本身就是这套书讲的工作方式。Written by Charles Tao with Claude — which is itself the working method this series teaches. · 许可License