乐于分享
好东西不私藏

每天查日志查到怀疑人生?我做了一个「AI 日志分析助手」,一分钟定位问题

每天查日志查到怀疑人生?我做了一个「AI 日志分析助手」,一分钟定位问题

程序员每天都在写代码,但真正耗时间的,往往不是写代码,而是查日志。

如果你做过银行系统开发,一定经历过这样的场景。

一个电话,半天没了

上午十点。

业务同事急匆匆跑过来:

有客户反馈,转账失败了,赶紧看看。

开发的第一反应不是打开 IDE。

而是一连串问题:

  • 什么时间发生的?
  • 哪个环境?
  • 哪个账号?
  • 哪个接口?
  • 有没有 TraceId?
  • 请求经过了哪些系统?

如果这些信息不完整,那么接下来的工作基本就是“大海捞针”。

打开终端。

登录第一台服务器。

tail -f app.log

没有。

继续登录第二台。

grep "6222****8888" *.log

还是没有。

然后开始在十几台服务器之间来回切换。

  • ESB
  • 账户中心
  • 支付平台
  • 核心系统
  • 消息队列
  • 短信平台

最后终于找到一条异常:

java.lang.NullPointerException

为了这一行日志,花了两个小时。

相信很多银行开发,对这一幕都不会陌生。

真正的问题,不是日志太多

很多人觉得:

日志越来越多,所以查起来越来越慢。

其实不是。

真正的问题是:日志没有被组织。

举个例子,一次普通转账,请求可能经过:

手机银行
      │
      ▼
API 网关
      │
      ▼
ESB
      │
      ▼
账户中心
      │
      ▼
支付平台
      │
      ▼
核心系统

每个系统都会打印日志。

每个服务都有自己的格式。

每台服务器都有自己的文件。

真正需要看的,可能只有几行。

但是开发却需要在几十万行日志里寻找答案。

我们真正缺少的,不是日志。

而是一个能够把这些日志串起来的人。

如果这个工作交给 AI 呢?

想象一下。

你只需要输入一句话:

今天上午10:32,尾号8888,客户转账失败

系统自动完成下面这些事情:

  1. 根据时间、账号、交易号找到对应请求。
  2. 自动提取 TraceId。
  3. 把所有微服务日志聚合到一起。
  4. 识别异常。
  5. 分析根因。

最后直接输出:

异常原因:Redis 连接超时
影响服务:payment-service
最终结果:事务回滚
建议:检查 Redis 连接池配置

整个过程,一分钟。

开发甚至不用再 SSH 登录服务器。

银行内网不能接 AI,怎么办?

很多朋友会说:

我们银行不能联网,AI 根本用不了。

这其实也是我最近一直在思考的问题。

后来发现,真正值钱的,不是 AI,而是分析流程

哪怕没有大模型,我们一样可以先做一个“日志分析助手”。

整个流程其实很简单:

日志采集
      │
      ▼
日志解析
      │
      ▼
Trace 聚合
      │
      ▼
异常分类
      │
      ▼
根因分析
      │
      ▼
生成诊断报告

前面的所有步骤,都可以用 Java 完成。

例如:

  • 根据 TraceId 聚合同一请求
  • 自动识别 Exception 类型
  • 找出慢 SQL
  • 分析接口耗时
  • 检测线程池耗尽
  • 检测 MQ 消息堆积
  • 检测 Redis 超时
  • 检测数据库连接池不足

最后,即使没有 AI,也能够生成一份结构化诊断报告。

等以后银行可以接入大模型,AI 只需要负责最后一步:

把诊断结果解释给开发人员。

整个架构完全不用推倒重来。

如果让我重新设计这个工具

我不会把它写成一堆脚本,而是拆成几个独立模块:

LogAnalyzer

├── LogLoader          日志加载
├── TraceCollector     请求链路聚合
├── ExceptionDetector  异常识别
├── SlowSqlDetector    慢 SQL 分析
├── TimeoutDetector    超时分析
├── RootCauseAnalyzer  根因分析
└── ReportGenerator    报告生成

最终输出的,不再是一堆日志,而是一份真正能看的诊断报告。

例如:

==================================
交易编号:202607120001
影响接口:TransferAPI
调用链:Gateway → ESB → Payment → CoreBank
异常:Redis Timeout
出现次数:28 次
影响范围:转账交易全部失败
建议:检查 Redis 连接池配置
==================================

开发看到这里,基本已经知道下一步该去哪里排查。

AI 时代,我们真正应该做什么?

很多人认为:

AI 来了,程序员以后不用写代码了。

我反而越来越觉得:

AI 最擅长的,不是替你写代码,而是替你完成那些重复、机械、耗时间的工作。

  • 查日志
  • 分析 SQL
  • 比对配置
  • 解析报文
  • 定位异常

这些工作,本质上都有固定流程。

谁能先把流程结构化,谁就能最快把 AI 用起来。

写在最后

最近我给自己定了一个目标:

每天解决一个工作中的真实痛点。

不追求多大的系统,也不追求多复杂的架构。

只希望每做一个工具,都能帮同事节省一点时间。

  • 今天解决查日志
  • 明天解决 SQL 分析
  • 后天解决配置比对

一年以后,也许这些看似不起眼的小工具,就会组成一个真正属于银行研发团队的 AI 效率平台。

如果你也是银行开发,或者每天都在和日志打交道,欢迎留言告诉我:

你最希望帮你解决哪一个重复劳动?

也许下一篇文章,我们就一起把它做出来。