先确认两套日志记录的是不是同一时间口径:应用日志通常写服务器处理完请求的时刻,抓取日志可能写请求发出、响应收到或任务入队的时刻。只要口径不同,几秒到几分钟的偏移是正常的,不能直接判定抓取异常。对齐的做法是先把两套时间统一到同一时区、同一时间语义,再用可重复的请求标识关联,而不是靠时间戳近似匹配。
抓取日志里的时间,常见有请求发起时间和收到响应时间;应用日志里的时间,常见有请求进入时间和响应写出时间。如果抓取方记录的是收到响应的时刻,而应用记录的是请求进入的时刻,那么应用时间一般会早于抓取时间,差值约等于网络往返加服务处理耗时。反过来,如果抓取方记录发起时刻,应用记录响应完成时刻,应用时间就会偏晚。
判断属于哪种情况,可以看两套日志的差值分布:若差值稳定且接近一个固定量级,多半是口径差异;若差值忽大忽小、甚至出现应用时间早于抓取发起时间,就要怀疑时钟同步或时区设置问题。
时间戳只能缩小范围,真正能对齐事件的是请求级标识。可用的关联点包括:
实际操作时,先取应用日志中一条明确成功的记录,记下它的请求 ID 和响应状态,再到抓取日志中按该 ID 检索。如果能命中,说明两套日志可以精确关联,后续排查都走这条路径;如果命中不了,说明抓取方没有透传标识,只能退回弱关联,此时结论的确定性要相应降低。
时间不一致通常有两种解释。第一种是时钟或时区偏移,两套系统都在记录同一批请求,只是时间基准不同。第二种是事件本身缺失,比如抓取日志里有请求,应用日志里没有对应记录,或反之。这两种情况的处理方向完全不同。
能区分它们的证据是差值的一致性。若所有匹配记录的偏移方向相同、幅度接近,偏向时钟问题;若部分能匹配、部分完全找不到对应记录,偏向事件缺失。还可以看偏移是否跨越整点或夏令时切换点,跨点突变往往指向时区配置。
假设某站点应用日志时间普遍比抓取日志早 40 秒左右,且这个差值在一天内基本稳定。此时可先假设抓取日志记录的是响应收到时刻,应用记录的是请求进入时刻,差值来自网络与处理耗时。下一步动作是:在应用日志中筛选出响应耗时字段,看这 40 秒是否与耗时分布吻合。若吻合,就不必再追时钟问题,转而检查抓取频率和状态码;若不吻合,再核对两套服务器的 NTP 同步状态和时区设置。这个动作的结果直接决定后续是排查业务逻辑还是排查基础设施。
对齐事件只是让两套日志能互相解释,不等于抓取行为一定符合预期。robots.txt 中的抓取限制不等于可靠的索引移除,站点地图也不保证收录。若对齐后发现抓取正常但页面未出现在结果中,问题就不在日志对齐层面,需要另行判断索引状态。另外,不同搜索引擎对同一标识和字段的支持情况不同,涉及百度时应以百度实际返回的日志字段为准,不要直接套用其他引擎的字段含义。