一次线上事故排查:200 行 ERROR 日志定位根因

0 阅读3分钟

如果你做过运维或者后端开发,一定遇到过这种情况。

线上报警:

ERROR 日志激增

第一反应通常是:

系统是不是挂了?

于是开始排查日志。


一、事故背景

某天生产环境出现报警:

服务:oa-server
报警:ERROR 日志突增
时间:15:05

日志系统里很快出现大量异常:

2026-03-08 15:05:09 ERROR GlobalExceptionHandler
BusinessException: 该业务功能已绑定流程

接下来几秒钟:

2026-03-08 15:05:10 ERROR GlobalExceptionHandler
2026-03-08 15:05:11 ERROR GlobalExceptionHandler
2026-03-08 15:05:12 ERROR GlobalExceptionHandler

日志数量:

200+ 行

此时值班工程师要判断一件事:

这是事故吗?

二、传统排查方式

大多数团队排查流程差不多。

第一步

打开日志系统:

ELK
Loki
Kibana

第二步

搜索:

ERROR
Exception

第三步

开始人工阅读日志。

典型流程:

翻日志
找异常
分析堆栈
判断影响

这个过程通常需要:

5 ~ 10 分钟

如果日志多,时间更长。


三、运维真正想知道的其实只有三件事

其实值班工程师只关心三个问题:

1 是否系统故障?

还是只是:

业务异常

2 是否影响用户?

例如:

是否请求失败
是否服务不可用

3 要不要现在处理?

可能是:

立即处理

也可能只是:

观察

但这些结论通常要 翻完日志才能判断


四、AI 自动分析日志

为了减少人工翻日志的时间,我做了一个开源工具:

Incident Community

核心能力:

日志 → 自动生成事故报告

五、AI 分析结果

同样一段日志:

BusinessException: 该业务功能已绑定流程

系统生成的事故报告:

🚨 Incident Report

Service: oa-server
Environment: production

Severity: P3

Root Cause
BusinessException triggered by business rule.

Impact
No system failure detected.

Recommendation
No immediate action required.

核心结论其实只有两句话:

结论:业务异常
动作:无需处理

值班工程师 5 秒就能判断情况


六、事故报告自动生成

系统还能生成完整 事故复盘报告

# Incident Report

## Incident Summary
Service: oa-server  
Environment: production  

## Root Cause
Business rule triggered BusinessException.

## Impact
No service outage detected.

## Recommendation
No action required.

支持导出:

Markdown
HTML
PDF

方便:

事故复盘
团队知识库
技术博客

七、为什么做这个工具

在很多团队里,运维每天都在做重复的事情:

翻日志
找异常
写事故报告

如果这些事情可以自动化:

排查效率会提高很多

这也是我做这个项目的原因。


八、开源项目

项目地址:

github.com/LukeGitHub-…


核心功能:

日志上传分析

支持:

日志文件
文本日志

自动异常识别

识别:

Exception
Error
Timeout
Database errors

自动生成事故报告

报告包含:

事故概述
根因分析
影响范围
修复建议

多格式导出

支持:

Markdown
HTML
PDF

九、总结

很多线上事故排查的时间,其实都花在:

翻日志

如果日志可以自动生成结论:

排查效率会提升很多

如果你也遇到过:

凌晨报警
翻几百行日志
不知道问题严不严重

可以看看这个项目:

github.com/LukeGitHub-…

如果觉得有帮助,欢迎给一个 ⭐ Star。