跳到主要内容

实时监控视图 — 像 Chrome DevTools 一样看调用

WebSocket 实时推送,新的调用从顶部冒出来。熟悉的感觉,不一样的体验。

界面概览

实时监控视图是你打开 dlz-lens 看到的第一个页面。它的设计灵感来自 Chrome DevTools 的 Network 面板——开发者最熟悉的调试界面。

┌─────────────────────────────────────────────────────────────────┐
│ 🔴 ⚪ ⚪ DLZ Lens — my-app [搜索框] [筛选] [慢] [错]│
├─────────────────────────────────────────────────────────────────┤
│ 时间 类型 调用 / 调用者 耗时 标签 │
├─────────────────────────────────────────────────────────────────┤
│ 14:32:15 SELECT SELECT * FROM users WHERE id = ? 3ms │
│ ↳ UserService.java:42 · getUserById() │
│ 14:32:15 SELECT SELECT * FROM orders WHERE user_id = 12ms N+1│
│ ↳ OrderService.java:87 · listOrders() │
│ 14:32:14 UPDATE UPDATE users SET last_login = ? WHER 5ms │
│ ↳ UserService.java:156 · updateLoginTime() │
│ 14:32:13 SELECT SELECT * FROM big_table WHERE statu 2340ms 慢 │
│ ↳ ReportService.java:203 · queryBigData() │
│ 14:32:10 INSERT INSERT INTO logs (msg, level) VALUE 2ms │
│ ↳ LogMapper.xml · insertLog │
│ 14:32:08 REDIS GET user:456:profile 1ms │
│ ↳ UserCache.java:34 · getProfile() │
│ 14:32:05 HTTP GET https://api.xxx.com/config 45ms │
│ ↳ ConfigClient.java:18 · fetchConfig() │
└─────────────────────────────────────────────────────────────────┘

所有调用按时间倒序排列,最新的在最上面。新的调用会实时从顶部冒出来——就像 Chrome DevTools 一样。

调用列表

每一行显示什么

说明
时间调用开始时间(精确到毫秒)
类型调用类型图标和名称(SELECT / INSERT / UPDATE / DELETE / REDIS / HTTP / MQ / BEGIN / COMMIT)
调用内容SQL 语句前若干字符 / Redis 命令 / HTTP URL
调用者触发这次调用的业务类名.方法名() + 行号,点击跳 IDE
耗时调用总耗时,慢调用显示橙色,错误显示红色
标签慢 / N+1 / 错误 / 事务风险 等诊断标签

颜色含义

颜色含义
🔵 蓝色SELECT 查询(SQL)
🟢 绿色INSERT 插入(SQL)
🟡 黄色UPDATE 更新(SQL)
🔴 红色DELETE 删除 / 错误调用
🟣 紫色REDIS 调用
🟠 橙色HTTP 调用
⚪ 灰色MQ / 事务 / 其他

不同类型的调用用不同颜色区分,扫一眼就知道大概是什么操作。

诊断标签

标签颜色含义
橙色耗时超过阈值(默认 1000ms)
N+1紫色同 Trace 内同模式调用超过阈值(默认 4 次)
红色调用执行失败,有异常
⚠️黄色事务风险(事务内有 HTTP 调用等)

有问题的调用会自动带上标签,不用你自己找。

调用详情面板

点击列表中任意一条调用,右侧弹出详情面板。

基本信息

  • 调用类型、操作名
  • 开始时间、结束时间、总耗时
  • 状态(成功 / 失败)
  • TraceID、事务 ID、连接 ID
  • 数据源名称 / Redis 节点 / HTTP 域名

调用详情

不同类型的调用显示不同的详情:

SQL 调用:

  • 完整 SQL 语句(语法高亮)
  • 结构化参数列表(参数名 / 值 / 类型)
  • 影响行数(UPDATE/DELETE/INSERT 时)

Redis 调用:

  • 命令名(GET / SET / HGET / ZRANGE 等)
  • Key
  • 参数列表
  • 返回值大小

HTTP 调用:

  • 请求方法 + URL
  • 请求头摘要
  • 请求体(可选,敏感字段脱敏)
  • 响应状态码
  • 响应大小

调用者信息

  • 类名、方法名、行号
  • 文件路径
  • 【跳转到 IDE】按钮 — 点击直接打开 IDEA 并定位到行

完整调用栈

40 层完整栈帧,每一行都显示:

  • 类名 + 方法名 + 行号
  • 文件路径
  • 点击任意帧 → 跳转到 IDE 对应行

框架类(Spring / MyBatis / Hikari / CGLIB 等)灰色显示,业务类高亮显示。你一眼就能找到自己的代码在哪。

错误信息(失败时显示)

  • 异常类型
  • 异常消息
  • 异常堆栈
  • 错误码(如果有)

工具栏功能

搜索框

按调用内容、类名、方法名、文件名模糊搜索。支持中英文,实时过滤。

类型筛选

按调用类型筛选:

  • 全部
  • 仅 SQL
  • 仅 SELECT / INSERT / UPDATE / DELETE
  • 仅 Redis
  • 仅 HTTP
  • 仅事务操作

慢调用按钮

一键只看慢调用。橙色高亮,方便排查性能问题。

错误按钮

一键只看失败的调用。红色高亮,方便排查错误。

自动滚动开关

新调用到达时是否自动滚动到顶部(类似 tail -f)。

关掉的话,列表不会自动滚动,你可以慢慢看当前的内容。

清空按钮

一键清空所有记录和 Trace。

顶部状态栏

🟢 WS 已连接 | 📊 调用 1,234 | 🐢 慢 12 | ❌ 错 3 | 📖 Trace 256 | 🗑️ 清空
  • WS 状态:WebSocket 连接状态(绿色=已连接,红色=断开重连中)
  • 调用数:当前内存中的调用记录总数
  • 慢调用数:超过阈值的调用数量(橙色)
  • 错误数:执行失败的调用数量(红色)
  • Trace 数:当前存储的请求 Trace 数量
  • 清空:一键清空所有数据

开发时怎么用

边写代码边看

开着 dlz-lens 写代码,每执行一个操作都能实时看到执行了哪些 SQL、参数对不对、耗时多少。

不用再打 System.out.println(),不用再在 DAO 层加 debug 日志——控制台里直接看。

调试 Bug 时

遇到 Bug 了?先看控制台里有没有红色错误。点一下错误调用,看异常信息,点调用者跳代码。

很多时候,Bug 还没等你打断点就已经定位到了。

优化性能时

想知道一段代码执行了多少次 SQL?操作一下,看控制台里冒出来多少条。

如果一操作就冒出来十几二十条 SQL——大概率有 N+1,紫色标签会帮你标出来。


💡 为什么要做成 DevTools 风格?

因为每个前端开发者都离不开 Chrome DevTools——打开 F12,Network 面板一看,请求什么时候发的、传了什么、返回了什么、花了多久,清清楚楚。

后端开发者为什么不能有同样的体验?

dlz-lens 就是后端版的 DevTools——数据库、Redis、HTTP、MQ,所有对外调用,一目了然。