Skip to content

MySQL 监控 ​

本页把 Druid 数据库连接池的监控控制台嵌进了平台:数据源是否健康、每条 SQL 执行了多少次、最慢多少毫秒、有没有错误,一屏看完。回答「系统慢是不是数据库慢」的第一现场。

功能在哪 ​

  • 菜单路径:基础设施 → 监控中心 → MySQL 监控
  • 路由地址:/infra/monitors/druid
  • 页面形态:iframe 内嵌 Druid Monitor 控制台,地址默认为「后端地址 + /druid/index.html」,可在配置管理中用键 url.druid 覆盖指向独立部署的控制台

这个页面能不能打开,取决于后端环境与你的来源 IP

控制台由后端提供,不走平台的登录鉴权,防护只有后端配置里的 IP 白名单(allow)与账号口令两项。当前默认:

环境控制台说明
生产(prod)默认关闭整个控制台不注册,本页 iframe 会白屏 / 404。要启用需由运维在后端同时给出「启用 + IP 白名单 + 口令」三项环境变量
本地 / 开发开,白名单默认只放通 127.0.0.1在后端所在那台机器上用浏览器打开没问题;从别的机器访问会被拒(403),此时本页 iframe 同样白屏

🔴 白名单看的是浏览器的来源 IP,不是 Web 服务器的 IP——因为 iframe 是浏览器直连后端的。所以「我能打开平台其它页面,却打不开这一页」是正常现象,不是故障。要让运维网段能看,需要同时配好口令,别只放白名单:控制台里能看到 JDBC 连接串、库名、账号名与全部已执行 SQL 原文。

界面认识 ​

控制台顶部是横向导航:首页 / 数据源 / SQL监控 / SQL防火墙 / Web应用 / URI监控 / Session监控 / Spring监控 / JSON API,右侧两个动作按钮 重置、记录日志并重置,最右可切换 English | 中文。

首页:Stat Index ​

Druid 首页 Stat Index

字段含义
启动时间后端进程启动时刻,统计数据的起点
版本Druid 版本(当前 1.2.28)
驱动已加载的 JDBC 驱动列表
是否允许重置 / 重置次数统计计数器能否清零、已清零几次
Java版本 / JVM名称运行时环境(如 21.0.12.1 / OpenJDK 64-Bit Server VM)
classpath路径后端 jar 位置,确认连的是哪套部署

SQL监控:SQL Stat ​

Druid SQL 监控

表格每行是一条参数化归并后的 SQL,主要列:

列含义
SQL归并后的语句模板,点击可进详情页看执行计划级信息
数据源所属数据源(默认 master)
执行数 / 执行时间累计执行次数 / 累计耗时(ms)
最慢单次最慢耗时——慢 SQL 的第一线索
事务执行 / 错误数事务内执行次数 / 抛错次数
更新行数 / 读取行数累计影响 / 返回行数
执行中 / 最大并发当前正在执行数 / 历史最大并发
执行时间分布 等四列耗时所落区间的直方图数组

右上角 刷新时间 下拉(默认 10s)控制自动刷新频率,暂停刷新 可定格画面便于截图或比对。

常用操作 ​

抓慢 SQL ​

  1. 打开 SQL监控,按「执行时间」或「最慢」列倒序点表头;
  2. 「最慢」超过百毫秒的语句即候选——当前部署的慢 SQL 阈值为 100 ms(slow-sql-millis: 100),超阈语句会同时记入慢 SQL 日志;
  3. 点击该 SQL 进详情页,看每次执行的时间线与读取 / 更新行数,判断是缺索引还是扫描量大。

看连接池是否吃紧 ​

切到 数据源 页:活跃连接(ActiveCount)长期贴近最大连接数、等待线程(WaitThreadCount)大于 0,说明池子不够用或存在长事务 / 连接泄漏。

清零统计 ​

  • 重置:直接清空全部统计计数器,从此刻重新累计;
  • 记录日志并重置:先把当前统计写入后端日志再清零——做压测或故障复盘时用这个,事后可在日志里找回基线。

重置会丢掉历史统计

统计是自后端启动(或上次重置)以来的累计值,重置不可恢复。做对比前先截图或导出 JSON API 数据。

视角对照 ​

视角能看到什么
任意登录用户(含租户管理员)控制台为后端全局统计,不区分租户;所有视角看到的内容相同
未登录直接访问后端 /druid/index.html只要来源 IP 在白名单内就能打开——控制台不校验平台登录态,拦它的只有 IP 白名单与它自己的账号(见页首 warning)

进阶 ​

  1. SQL 归并(merge-sql):同结构、不同参数的语句归并为一条统计(? 占位),所以行数远少于真实请求数;想看单条参数化语句的去 访问日志。
  2. SQL防火墙:Wall 过滤器页签,当前配置允许多语句(multi-statement-allow: true);若收紧为 false,此页会开始记录被拦截语句。
  3. JSON API:导航末项,全部统计的机器可读出口,接外部监控或写脚本抓基线时用。
  4. URI监控 / Web应用:按 Web 请求 URI 维度的统计,仅当 Druid 的 Web 统计过滤器启用时有数据;当前部署以 SQL 维度为主。
  5. 与错误日志联动:SQL Stat 的「错误数」大于 0 时,拿 SQL 模板回 错误日志 按异常名(如 MyBatisSystemException)找对应堆栈。
  6. 统计起点:所有数字自后端启动或上次重置起累计;重启后端即自然清零。

常见问题 ​

iframe 一片空白? 控制台地址取自后端地址 + /druid/index.html。白屏有三种成因,直接在浏览器开这个地址即可区分:

浏览器里看到成因
404后端把控制台关了(生产环境默认如此,见页首 warning)
403你的来源 IP 不在白名单内(本地 / 开发环境默认只放通 127.0.0.1)
一片空白、无状态码后端未启动,或配置键 url.druid 指错了地方

为什么没有登录框? 默认没配控制台账号,靠 IP 白名单兜着(见页首 warning)。这不是页面故障;生产环境默认直接把控制台关掉,要开就必须同时配白名单与口令。

SQL监控为什么没有数据? 统计自启动 / 重置起累计:刚重启、刚重置、或尚无任何数据库请求时表格为空。操作几下业务页面再刷新即可。

「最慢」195 ms 算慢吗? 超过 100 ms 即已被记为慢 SQL。偶发可接受,高频出现就该看执行计划与索引。

重置和记录日志并重置选哪个? 日常清零用「重置」;需要事后回看本次统计(压测、复盘)用「记录日志并重置」。

控制台里的数据源和「数据源配置」页是一回事吗? 不是。本页是 Druid 连接池运行时统计;数据源配置 是平台定制的业务数据源登记,二者独立。

相关页面 ​