直接回答:不要只盯着报错那一分钟,而是把“时段前、时段中、时段后”的原始日志先固定下来,再用同一时间轴对照请求量、响应码、耗时和上游变化。若错误只持续几分钟,实时抓取往往来不及,优先保留完整原始文件与滚动日志,比事后凭印象筛选更可靠。下面用一个假设情境把取舍讲清。
假设某站点每天凌晨两点前后出现少量 5xx,持续约三到五分钟,白天完全正常。运维怀疑是定时任务挤压资源,开发怀疑是上游接口超时。此时有两种看似合理的做法:一是立刻上监控面板做实时告警并只保留聚合指标;二是先不动系统,把该时段的原始访问日志、错误日志和上游调用日志完整留存。前者响应快,后者证据全。若错误短暂且原因未明,先选后者,因为聚合指标会丢掉单条请求的路径、参数和先后顺序,而这些正是判断“谁先出错”的关键。
判断依据可以落在证据上:如果同一时段内请求量正常但错误集中,偏向应用或上游逻辑;如果请求量骤增伴随耗时上升,偏向资源竞争;如果错误只在某几个 IP 或某类路径出现,偏向特定调用方。注意,请求量归零或某项统计突降,不能单独证明处理正确,也可能是采集中断、轮转覆盖或流量本身减少,需要交叉核对。
实际动作是给日志加一条统一的时间基准,并记录服务器时区与上游时区的偏移。做法包括:确认日志时间戳格式一致,记录轮转周期,把该时段的原始文件复制到独立目录,避免后续写入覆盖。做完这一步,下一步的比对才有共同坐标;否则两个服务的日志相差几分钟,结论会完全相反。
可以先用 grep 按时间范围粗筛,再用 awk 或脚本按秒聚合,观察错误是均匀分布还是集中在某一秒。若集中在某一秒,说明是瞬时事件;若缓慢爬升,说明是资源逐步耗尽。这个区分直接决定下一步是查定时任务还是查连接池。
仍用上面的假设。读法一:只看错误日志,发现凌晨两点零三分有 12 条超时,于是断定上游故障。读法二:把访问日志与上游调用日志按秒对齐,发现两点零二分五十秒起本站响应耗时先从 200ms 升到 2s,上游此时仍正常,两点零三分本站才开始报错。读法二说明瓶颈可能在本站而非上游。两种读法用的是同一批数据,差别在于是否保留了时段前后的完整记录。这个例子是假设,用于说明比较方法,不代表任何真实项目结果。
回到决策本身:当错误窗口短、复现难,优先保留原始证据并统一时间轴;当错误持续且分布清晰,聚合监控更省成本。无论选哪种,都要先写下当前假设,再用日志去证伪它,而不是用日志去证明它。这样下一步的排查方向才由证据决定,而不是由最初的猜测决定。