凌晨 3 点的报警:我是怎么 5 秒定位根因的
如果你做过运维或者后端开发,大概率经历过这种场景。
凌晨 03:12。
手机突然震动。
【监控报警】
服务:payment-service
告警:ERROR 日志激增
你从睡梦中醒来,第一反应通常是:
系统是不是挂了?
于是你打开电脑,开始排查。
一、值班工程师的日常
很多工程师都经历过类似的值班夜晚。
典型流程通常是这样:
第一步
打开日志系统:
ELK
Loki
Kibana
第二步
输入关键词:
ERROR
Exception
Timeout
第三步
开始翻日志。
看到的通常是这样:
2026-03-08 03:12:01 ERROR GlobalExceptionHandler
java.lang.RuntimeException: payment timeout
往下翻:
2026-03-08 03:12:02 ERROR GlobalExceptionHandler
java.lang.RuntimeException: payment timeout
再往下:
2026-03-08 03:12:03 ERROR GlobalExceptionHandler
java.lang.RuntimeException: payment timeout
几百行日志。
问题来了:
到底发生了什么?
二、值班工程师真正关心的三件事
其实值班工程师只需要判断三件事:
1 是否系统故障?
还是只是:
业务异常
2 是否影响用户?
例如:
服务是否不可用
请求是否失败
3 是否需要立即处理?
可能需要:
马上修复
也可能只是:
观察
但这些信息通常都藏在日志里。
三、为什么排查日志这么慢
原因其实很简单。
1 日志太多
线上系统一旦出现异常,很容易产生:
几百行甚至上千行日志
2 信息太杂
一段异常日志通常包含:
ERROR
StackTrace
框架日志
业务日志
真正有用的信息可能只有 一两行。
3 需要人工总结
工程师必须从日志中提取:
异常类型
根因
影响范围
然后才能做出判断。
四、如果日志可以自动总结呢?
我一直在想一个问题:
日志 → 能不能自动生成结论?
所以我做了一个开源工具:
Incident Community
它做的事情非常简单:
上传日志 → 自动生成事故报告
五、AI 自动分析结果
例如一段日志:
BusinessException: 该业务功能已绑定流程
系统生成的事故报告:
🚨 Incident Report
Service: xfxk-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: payment-service
Environment: production
## Root Cause
Database connection timeout.
## Impact
Payment requests failed for 3 minutes.
## Recommendation
Increase database connection pool size.
支持导出:
Markdown
HTML
PDF
方便:
事故复盘
团队知识库
技术博客
七、为什么做这个项目
很多团队每天都在重复做一件事:
翻日志
写事故报告
如果这些事情可以自动化:
排查效率会提高很多
所以我做了这个项目:
Incident Community
八、项目地址
开源项目:
核心功能:
日志上传分析
支持:
日志文件
文本日志
自动异常识别
识别:
Exception
Error
Timeout
Database errors
自动生成事故报告
报告包含:
事故概述
根因分析
影响范围
修复建议
多格式导出
支持:
Markdown
HTML
PDF
九、总结
很多线上事故排查的时间,其实都花在:
翻日志
如果日志可以自动生成结论:
排查效率会提高很多
如果你也经历过:
凌晨被报警吵醒
翻几百行日志
不知道问题严不严重
可以看看这个项目:
如果觉得有帮助,欢迎给一个 ⭐ Star。