第17章:熟悉的幽灵 (第2/3页)
双击打开。
图片在屏幕上展开。
同样是日志。
同样是时间戳。
同样是服务记录。
```
[2022-07-15 22:31:45.887] INFO 数据导出服务 - 接收到导出请求 请求ID: EXP-20220715-223145 用户: lujian (李剑) 导出数据集: 灯塔_用户行为_样本_202207
[2022-07-15 22:31:46.112] INFO 数据导出服务 - 开始处理导出请求: EXP-20220715-223145 处理线程:导出线程-2
[2022-07-15 22:31:47.334] INFO 数据导出服务 - 导出完成 请求ID: EXP-20220715-223145 输出文件: /export/灯塔_样本_20220715_223145.zip 文件大小: 2.3GB
[2022-07-15 22:31:47.889] AUDIT 系统审计 - 操作: 数据导出 执行用户: lujian 目标数据集: 灯塔_用户行为_样本_202207 审计ID: AUDIT-20220715-223147-001
```
路容的视线在两个屏幕之间来回移动。
左边,是星耀集团“深蓝计划”的审计日志。
右边,是三年前天启科技“灯塔项目”的日志截图。
时间不同。
项目不同。
公司不同。
服务名称不同。
但格式——
[2025-03-18 01:08:17.112] AUDIT 系统审计 - 操作: 数据隔离 执行服务: 审核服务 目标数据包: DL-20250318-014723-8876 审计ID: AUDIT-20250318-010817-001
[2022-07-15 22:31:47.889] AUDIT 系统审计 - 操作: 数据导出 执行用户: lujian 目标数据集: 灯塔_用户行为_样本_202207 审计ID: AUDIT-20220715-223147-001
时间戳的毫秒数用点分隔。
破折号后面永远跟着一个空格。
操作描述后面是冒号加空格。
执行者字段的写法。
审计ID的生成规则:AUDIT-年月日-时分秒-序号。
还有——
路容把两张图片并排放在一起,放大细节。
错误码的写法。
天启科技的日志里,有一次网络超时的记录:
```
[2022-07-15 22:30:12.445] WARN 数据传输 - 连接超时 (错误码: NET_TIMEOUT; 重试次数: 3)
```
分号。
错误码后面是分号。
但分号前面有一个空格。
NET_TIMEOUT;
她猛地切回星耀的日志窗口,搜索分号。
找到了。
在解密服务的某条警告日志里:
```
[2025-03-18 01:05:33.778] WARN 解密服务 - 密钥缓存未命中 (错误码: KEY_CACHE_MISS; 已触发密钥重新加载)
```
KEY_CACHE_MISS;
分号。
空格。
然后分号。
一模一样。
路容的整个身体开始颤抖。
不是冷——出租屋里的暖气还在工作,空气温热干燥。是那种从骨髓深处渗出来的寒意,沿着脊椎爬升,在头皮上炸开细密的刺痛。她的手指蜷缩起来,指甲陷进掌心。疼痛让她稍微清醒了一些,但视线依然模糊,屏幕上的文字在晃动。
“若溪?”周哲的声音再次传来,这次带着明显的疑惑,“你那边还好吗?我这边看到你的鼠标很久没动了。”
路容张开嘴。
她想说话。想说“我没事”。想说“继续排查”。但喉咙像被什么东西堵住了,声带僵硬,发不出任何声音。她只能听见自己粗重的呼吸,在安静的房间里显得格外刺耳。
“若溪?”
她用力吞咽,口腔里干得发苦。手指在键盘上摸索,敲出两个字:“在。”
“你找到什么了吗?”周哲问,“我这边倒是发现问题了。你看这个——”
屏幕切换回数据流监控界面。周哲用鼠标圈出一段代码:“你的过滤规则,第87行,边界条件判断有问题。`if (error_rate > 0.01 && data_volume > 1000)`,这里用的是逻辑与,但实际应该用逻辑或。因为只要异常率超过1%或者数据量超过阈值,就应该告警。你用与的话,必须两个条件同时满足才会触发。所以之前那些零散的异常数据包没触发告警,直到今晚这个新数据源涌入大量数据,两个条件才同时满足。”
他的声音轻松了一些,甚至带着点笑意:“小bug,我改一下就行。改完重新部署,告警应该就能解除。不过你设计这个规则的时候,是不是太谨慎了?怕误报太多?”
路容盯着屏幕上被圈出的那行代码。
她的代码。
她故意留下的漏洞。
她精心设计的鱼饵。
现在,周哲轻松地找到了问题,轻松地修复了。他以为这只是新手工程师常犯的逻辑错误。他不知道这行代码背后藏着什么。不知道这个漏洞是故意留下的。不知道这个告警是她等待的契机。
更不知道,就在他排查技术问题的这几分钟里,她已经看到了地狱。
“若溪?”周哲又问了一次,“你确定没事吗?你的呼吸声有点重。”
路容闭上眼睛。
三秒。
五秒。
十秒。
她重新睁开眼睛,手指在键盘上敲击,通过聊天窗口发送消息:“没事,刚才在对比日志。你说得对,是我考虑不周。谢谢指正。”
发送。
然后她关掉了麦克风。
她需要安静。
需要绝对的、彻底的安静。
周哲在耳机里说了什么,她听不见。她只看见聊天窗口里弹出他的回复:“客气什么,一起解决问题嘛。我改好了,正在重新部署。大概两分钟后生效。你那边可以继续监控异常率的变化。”
路容没有回复。
她的目光重新回到那两个并排的屏幕上。
左边,星耀。
右边,天启。
相同的日志格式。
相同的标点习惯。
相同的空格用法。
相同的分号前面加空格的诡异细节。
这不是巧合。
这不是“行业通用规范”——她在这行干了七年,看过无数公司的系统日志。有的用方括号,有的用圆括号。有的时间戳精确到秒,有的到毫秒。有的错误码用下划线,有的用点号。有的在冒号后面加空格,有的不加。有的审计ID用UUID,有的用自增数字。
但像这样,每一个细节都吻合——
只有一种可能。
写这些日志记录的服务,是同一个程序员开发的。
或者更准确地说,设计这些日志格式规范的人,是同一个人。
李剑。
路容的嘴唇无声地动了一下,念出这个名字。
三年前,他是天启科技的技术副总裁,负责“灯塔”项目的整体架构。所有核心服务的日志规范,都是他亲自审核定稿的。路容记得很清楚,因为当时她还为此和他争论过——李剑坚持要在分号前面加空格,说这样“更美观”;路容认为这不符合大多数编程语言的惯例,容易造成解析问题。最后李剑用职权压了下来:“按我的规范来。”
她当时只觉得这个人固执。
现在她知道了,那不是固执。
那是习惯。
是烙印。
是无论换到哪家公司、哪个项目、哪个系统,都会不自觉带上的个人印记。
就像指纹。
而现在,这个指纹,出现在了星耀集团
(本章未完,请点击下一页继续阅读)
『加入书签,方便阅读』