先给结论:不要直接把两份日志按时间戳硬拼。百度抓取日志里的时间通常记录的是请求到达或完成的一刻,而应用日志可能记的是业务处理、写库或异步任务落地的时刻,两者相差几秒到几分钟都正常。对齐的目标不是让时间相等,而是让同一事件在两份日志里可被同一条链路识别。
把两份日志按小时分桶,统计每个桶里请求量的差值。如果差值在多个小时里接近同一个常数,例如总是差 40 秒左右,这更像时区、NTP 同步或日志写入缓冲造成的固定偏移。此时可以先用该偏移做粗略对齐,再验证是否稳定。
如果差值忽大忽小,甚至出现负值,说明不是简单的时间校准问题。常见解释包括:应用侧有多个实例且各自时钟不同步;请求经过代理或负载均衡后,应用日志记录的是后端处理时刻;异步队列把业务日志推迟到实际执行时才写。这些情况不能靠统一减一个秒数解决。
动作与结果:先取一天数据做分桶差值,若固定偏移成立,进入时间校正流程;若漂移明显,转向请求标识对齐流程。这个判断会直接决定后面用哪套方法,避免在错误方向上反复调参。
当应用日志里保留了请求 ID、追踪 ID 或上游传递的 header,优先走标识对齐,而不是时间对齐。做法是:从百度抓取日志中提取 URL、时间、状态码,再从应用日志中按同一 URL 和时间窗口检索,匹配到相同请求 ID 后,把两份记录合并成一条事件。
这里的关键是时间窗口要足够宽。假设抓取日志记的是 10:00:03,应用日志记的是 10:00:07,窗口设为前后 5 分钟即可覆盖大多数正常延迟。窗口太窄会漏匹配,太宽会引入同 URL 的重复请求干扰。
动作与结果:用请求 ID 合并后,如果匹配率明显高于纯时间对齐,说明应用侧确实存在处理延迟,后续分析应围绕处理链路而不是抓取时刻。若匹配率仍然很低,则要检查应用日志是否只记录了成功请求,或是否对静态资源根本不写日志。
旧系统或旧合作关系下,应用日志可能只有时间、路径和状态码,没有可传递的标识。这时只能做模糊对齐,但要接受误差。做法是:以 URL 路径为第一约束,以时间窗口为第二约束,对同一路径在窗口内的记录做配对。若同一路径在窗口内出现多次,标记为不确定,不强行配对。
一个假设例子:抓取日志显示 14:20:10 请求了 /old-page,应用日志在 14:20:12 和 14:20:45 各有一条 /old-page 记录。前者更可能是同一次事件,后者可能是用户访问或重试。此时应把 14:20:12 作为候选,14:20:45 单独保留,不要合并成一条。
动作与结果:完成模糊对齐后,统计不确定配对的比例。如果比例过高,说明当前日志字段不足以支撑精确分析,下一步应优先补字段,而不是继续扩大分析范围。
当旧内容、旧系统或旧合作关系需要退出,对齐日志的目的是判断哪些 URL 仍有真实抓取需求,哪些只是历史残留。若某旧 URL 在抓取日志中持续出现,但在应用日志中对应的是 404 或 410,且时间窗口内没有成功处理记录,可以把它列入退出清单。若抓取日志有请求、应用日志也有正常响应,说明该内容仍被访问,退出前需要先确认是否有替代页面或跳转方案。
例外情况:robots.txt 中的抓取限制不等于可靠的索引移除。即使你在 robots.txt 里屏蔽了旧路径,百度仍可能保留已有索引一段时间。站点地图不保证收录,移除站点地图中的旧 URL 也不等于索引会立即消失。HTTPS 不保证安全无漏洞或排名,不能作为旧内容是否退出的判断依据。不同搜索引擎对协议和指令的支持情况须分别核查,不能把百度语境下的结论直接套到其他引擎。
动作与结果:根据对齐结果把旧 URL 分为“仍有真实请求”和“仅历史残留”两类。前者先做替代或跳转,后者再进入退出流程。这个分类会直接影响下一步是改配置还是直接下线,避免把仍有价值的页面误删。
无论用哪种方法,对齐完成后都要反向抽查:从合并后的事件里随机取若干条,回到原始两份日志中确认时间、URL 和状态码能对应上。如果抽查中发现同一请求被拆成两条,或两条不同请求被合并成一条,说明对齐规则需要调整。验证通过后,再基于对齐结果做退出或保留决策,否则后续判断都建立在错误的事件关系上。