实时监控视图 — 像 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,所有对外调用,一目了然。