返回第17章:熟悉的幽灵  复仇星耀途首页

关灯 护眼     字体:

上一页 目录 下一页

    第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,有的用自增数字。

    但像这样,每一个细节都吻合——

    只有一种可能。

    写这些日志记录的服务,是同一个程序员开发的。

    或者更准确地说,设计这些日志格式规范的人,是同一个人。

    李剑。

    路容的嘴唇无声地动了一下,念出这个名字。

    三年前,他是天启科技的技术副总裁,负责“灯塔”项目的整体架构。所有核心服务的日志规范,都是他亲自审核定稿的。路容记得很清楚,因为当时她还为此和他争论过——李剑坚持要在分号前面加空格,说这样“更美观”;路容认为这不符合大多数编程语言的惯例,容易造成解析问题。最后李剑用职权压了下来:“按我的规范来。”

    她当时只觉得这个人固执。

    现在她知道了,那不是固执。

    那是习惯。

    是烙印。

    是无论换到哪家公司、哪个项目、哪个系统,都会不自觉带上的个人印记。

    就像指纹。

    而现在,这个指纹,出现在了星耀集团

    (本章未完,请点击下一页继续阅读)

『加入书签,方便阅读』

上一页 目录 下一页