Metabase 性能排查指南:在 Chrome、Firefox 与 Safari 中创建 HAR 文件
【免费下载链接】metabaseThe easy-to-use open source Business Intelligence and Embedded Analytics tool that lets everyone work with data :bar_chart:项目地址: https://gitcode.com/GitHub_Trending/me/metabase
HAR(HTTP Archive,HTTP 归档)文件会记录浏览器在页面会话期间产生的全部网络请求,是排查 Metabase 性能问题(如仪表盘加载缓慢、查询请求异常、接口超时)时最直观的诊断材料之一。本指南以 Metabase 官方故障排查手册为基础,完整介绍 HAR 文件的原理、安全注意事项,以及在 Chrome/Edge、Firefox、Safari 三大主流浏览器中录制并导出的分步操作,同时说明它与 Metabase 其他诊断手段(诊断信息导出、服务端日志)的配合使用方式,让你能快速产出可复现、可分析、可交付给支持团队的排查素材。
HAR 文件是什么,为什么能帮助排查 Metabase 性能问题
HAR 是 HTTP Archive 的缩写。当浏览器向 Metabase 发起页面请求、运行查询、加载仪表盘时,每个请求——包括 URL、HTTP 方法、状态码、响应耗时、请求头、Cookie 等——都会被浏览器记录。将这些记录导出为一个.har文件,就等于拿到了网络层的完整"黑匣子"。
在 Metabase 场景下,HAR 文件尤其适合用于排查以下问题:
- 仪表盘或问题(Question)加载缓慢:通过每个 API 请求(如
/api/dataset、/api/dashboard/*)的响应时间,可以定位瓶颈是某个查询请求耗时过长,还是静态资源加载缓慢。 - 请求中断或失败:结合状态码(如 502、504、403)判断是代理、负载均衡、权限校验还是服务端超时导致。
- 会话与认证异常:HAR 中包含会话 Cookie 与认证信息,可用于诊断登录态失效、SSO 跳转等问题。
- 前端与后端交互异常:将 HAR 中记录的请求时序,与 Metabase 服务端日志中对应请求的
Response time、DB calls等信息对照,可以判断问题究竟出在浏览器端、网络链路还是查询执行阶段。
重要:HAR 文件可能包含敏感信息
在开始录制之前,务必理解这一点:按照下方操作录制的 HAR 文件,会包含你在录制期间提交的敏感信息,包括但不限于:
- 会话 Cookie(如
metabase.SESSION) - 身份认证信息(Token、Basic Auth 等)
- 表单提交内容与查询参数
因此请注意:
- 仅在 Metabase 支持人员明确要求,且确实需要诊断会话、认证等类型的问题时,才录制包含敏感数据的 HAR 文件。
- 在把 HAR 文件分享给任何人之前,先用文本编辑器打开文件审阅一遍内容,确认没有泄漏不必要的凭证。
- 如果问题不涉及会话/认证,可以先尝试普通(不含敏感数据)的导出方式,或先手动删除 HAR 文件中的 Cookie 与 Authorization 头再分享。
在 Google Chrome 与 Microsoft Edge 中创建 HAR 文件
Chrome 与 Edge 基于同一套 Chromium 内核,操作完全一致。两者的关键差异在于:默认情况下导出 HAR 会剔除 Cookie 等敏感数据,如需完整记录会话信息,必须先在设置中打开对应开关。
第 1 步:打开开发者工具(Developer tools)
在 Metabase 页面上右键,选择"检查"(Inspect)即可打开。
第 2 步:切换到 Network(网络)面板
DevTools 顶部的Network标签页即是网络日志面板。打开后网络日志的录制通常会自动开始,此时面板会实时列出页面加载的每一个请求。
第 3 步:开启"允许生成包含敏感数据的 HAR 文件"
点击 DevTools 顶栏左侧的小齿轮图标打开设置(Settings),向下滚动到Network一节,勾选"Allow to generate HAR files with sensitive data"(允许生成包含敏感数据的 HAR 文件)。下图中的橙色高亮框即为该选项所在位置:
从截图可以看到,该选项位于 Network 设置区,同区的 "Record network log"(记录网络日志)与 "Disable cache while DevTools is open"(打开开发者工具时禁用缓存)等开关也会影响录制行为。排查缓存导致的"看到旧数据"问题时,可以顺带勾选禁用缓存项。
第 4 步:复现问题
保持 Network 面板打开并处于录制状态,在 Metabase 中重复触发问题的操作步骤(例如重新加载某个缓慢的仪表盘、运行某个报错的查询)。
第 5 步:导出 HAR 文件
问题复现完成后,点击 Network 工具栏(标签栏下方)最右侧的下载图标,在下拉菜单中选择"Export HAR (with sensitive data)…"(导出包含敏感数据的 HAR),选择保存位置即可得到一个.har文件。
提示:如果无需敏感数据,Chrome 中也可选择普通的 "Export HAR";但按 Metabase 官方流程,若要完整诊断会话类问题,请使用上述带敏感数据的导出项,并在分享前自行审阅。
在 Firefox 中创建 HAR 文件
Firefox 的录制流程与 Chrome 类似,但没有单独的"敏感数据"开关,导出时会直接生成包含请求全部细节的 HAR 文件,因此审阅文件内容这一步更加不可省略。
第 1 步:打开开发者工具
在页面上右键选择"检查"(Inspect)打开 Firefox 开发者工具。
第 2 步:切换到 Network 面板
点击工具条上的Network标签页,网络日志会自动开始记录。
第 3 步:复现问题
保持录制状态,在 Metabase 中重复触发问题的操作步骤。
第 4 步:保存为 HAR
问题复现完成后,在 Network 面板的请求列表中任意位置右键单击,在弹出的菜单中选择"Save All As HAR"(将所有请求另存为 HAR),指定保存路径即可。
在 Safari 中创建 HAR 文件
Safari 的开发者工具默认是隐藏的,需要先手动开启Develop(开发)菜单。
第 1 步:启用开发菜单
打开Safari > 设置(Settings)> 高级(Advanced),勾选"Show features for web developers"(为网页开发者显示功能)。启用后菜单栏会出现开发(Develop)菜单。
第 2 步:打开 Web 检查器(Web Inspector)
通过开发(Develop)> 显示 Web 检查器(Show Web Inspector)打开;也可以右键页面选择"检查元素"(Inspect Element)。
第 3 步:切换到 Network 面板
点击 Web Inspector 中的Network标签页,网络日志录制会自动开始。
第 4 步:复现问题
保持录制状态,在 Metabase 中重复触发问题的操作步骤。
第 5 步:导出 HAR
问题复现完成后,点击 Network 面板右上角的 "Export"(导出)按钮,选择保存位置即可。
导出 HAR 后:与 Metabase 的其他诊断手段配合使用
HAR 文件描述了"浏览器看到了什么",但它只覆盖网络层。要完整定位问题,建议将 HAR 与以下 Metabase 内置诊断能力配合分析——这也是 docs/troubleshooting-guide/index.md 中将三者并列归入"获取诊断信息(Getting diagnostic info)"的原因。
1. 导出 Metabase 诊断信息(Diagnostic Info)
在 Metabase 中,按下 Mac 的Cmd + F1或 PC 的Ctrl + F1,即可打开诊断信息窗口(也可通过Cmd/Ctrl + K唤起命令面板,搜索 "Diagnostic" 并选择 "Open diagnostic error modal")。诊断 JSON 文件可包含:问题/仪表盘的条目定义、浏览器错误消息、服务端错误消息、服务端日志(全部或仅当前用户)、实例版本信息等,详见 docs/troubleshooting-guide/diagnostic-info.md。
注意:诊断信息同样可能包含敏感数据,下载后请先审阅再分享。
2. 对照 Metabase 服务端日志
HAR 中的每个/api/请求,都能在服务端日志中找到对应条目。例如日志行:
2021-07-07 15:53:18,560 DEBUG middleware.log :: POST /api/dataset 202 [ASYNC: completed] 46.9 ms (17 DB calls) App DB connections: 1/10 Jetty threads: 3/50 (4 idle, 0 queued) (72 total active threads) Queries in flight: 0 (0 queued); h2 DB 4 connections: 0/1 (0 threads blocked)其中46.9 ms是请求处理耗时、(17 DB calls)是数据库调用次数、Queries in flight是在途查询数。将 HAR 中的请求耗时与服务端日志的Response time对照,即可判断耗时发生在"浏览器→服务器"的网络链路,还是发生在"服务器→数据库"的查询执行链路。日志字段的完整解读见 docs/troubleshooting-guide/server-logs.md。
3. 针对具体症状选择后续排查路线
- 仪表盘加载缓慢:参见 我的仪表盘很慢或加载失败。
- 查询或连接超时:参见 我的连接或查询超时。
- 数据库整体响应缓慢:参见 我的数据库很慢。
- 需要深入服务端性能(内存、线程)分析:参见 对 Metabase 进行性能剖析(Profiling),通过 JMX + VisualVM 获取堆转储(Heap Dump)与线程转储(Thread Dump)。
常见问题与注意事项
- 导出的 HAR 文件很大?属正常现象。录制期间所有请求(含图片、字体等静态资源)都会被记录,分享前可先用文本编辑器或 JSON 工具筛选出
/api/开头的关键请求。 - 录制时没勾选 Chrome 的"敏感数据"开关,导出后没有 Cookie?这是 Chrome 的默认隐私保护行为。需要会话信息时,务必先完成第 3 步再录制。
- Safari 里找不到 Export 按钮?确认当前处于 Network 面板且已停止录制(或录制完成后),Export 位于面板右上角。
- 把 HAR 与诊断信息一起交付:在向 Metabase 支持团队反馈性能类问题时,附上 HAR 文件 + 诊断 JSON + 服务端日志片段,可以大幅减少来回沟通的成本。
小结
HAR 文件是连接"浏览器侧现象"与"服务端侧原因"的关键桥梁。本指南覆盖了 Chrome/Edge、Firefox、Safari 三大浏览器中创建 HAR 的完整流程,并特别强调了两点:其一,录制会话/认证类问题需要显式允许导出敏感数据;其二,分享前务必审阅文件内容,防止泄漏 Cookie 与凭证。将 HAR 与 Metabase 的诊断信息导出、服务端日志对照分析,即可形成一套完整的性能问题定位闭环。
【免费下载链接】metabaseThe easy-to-use open source Business Intelligence and Embedded Analytics tool that lets everyone work with data :bar_chart:项目地址: https://gitcode.com/GitHub_Trending/me/metabase
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考