diff --git a/TOC.md b/TOC.md index c609e5d276d5..433d56fa5492 100644 --- a/TOC.md +++ b/TOC.md @@ -383,13 +383,18 @@ + [`inspection_summary`](/system-tables/system-table-inspection-summary.md) + UI + TiDB Dashboard + + [简介](/dashboard/dashboard-intro.md) + + 运维 + + [部署](/dashboard/dashboard-ops-deploy.md) + + [反向代理](/dashboard/dashboard-ops-reverse-proxy.md) + + [安全](/dashboard/dashboard-ops-security.md) + [访问](/dashboard/dashboard-access.md) + [概况页面](/dashboard/dashboard-overview.md) + [集群信息页面](/dashboard/dashboard-cluster-info.md) + [流量可视化页面](/dashboard/dashboard-key-visualizer.md) - + SQL 语句分析页面 - + [访问列表页面](/dashboard/dashboard-statement-list.md) - + [查看执行详情](/dashboard/dashboard-statement-detail.md) + + SQL 语句分析 + + [列表页面](/dashboard/dashboard-statement-list.md) + + [执行详情页面](/dashboard/dashboard-statement-details.md) + [慢查询页面](/dashboard/dashboard-slow-query.md) + 集群诊断页面 + [访问](/dashboard/dashboard-diagnostics-access.md) @@ -397,6 +402,7 @@ + [使用示例](/dashboard/dashboard-diagnostics-usage.md) + [日志搜索页面](/dashboard/dashboard-log-search.md) + [实例性能分析页面](/dashboard/dashboard-profiling.md) + + [常见问题](/dashboard/dashboard-faq.md) + CLI + [tikv-ctl](/tikv-control.md) + [pd-ctl](/pd-control.md) diff --git a/dashboard/dashboard-access.md b/dashboard/dashboard-access.md index ec9c42f61d2b..bcc445c684cc 100644 --- a/dashboard/dashboard-access.md +++ b/dashboard/dashboard-access.md @@ -5,11 +5,15 @@ category: how-to # 访问 TiDB Dashboard -通过浏览器访问 (请将 `127.0.0.1:2379` 替换为实际 PD 实例地址和端口)即可打开 TiDB Dashboard。 +通过浏览器访问 (将 `127.0.0.1:2379` 替换为实际 PD 实例的地址和端口)即可打开 TiDB Dashboard。 + +## 多 PD 实例访问 + +当集群中部署有多个 PD 实例、且您可以直接访问到**每个** PD 实例地址和端口时,可以简单地将 地址中的 `127.0.0.1:2379` 替换为集群中**任意一个** PD 实例的地址和端口进行访问。 > **注意:** > -> 部署了多个 PD 组件时,填写任意一个 PD 组件地址都可以访问 TiDB Dashboard,但其中仅有一个 PD 组件会真正运行 TiDB Dashboard。访问其他 PD 组件时浏览器都将会被重定向到该 PD 组件。因此若防火墙没有为这个运行 PD 的实例进行配置,可能会出现无法访问 TiDB Dashboard 的情况。 +> 当处于防火墙或反向代理等环境下、无法直接访问每个 PD 实例时,可能会无法访问 TiDB Dashboard。这通常是防火墙或反向代理没有正确配置导致的。可参阅[通过反向代理使用 TiDB Dashboard](/dashboard/dashboard-ops-reverse-proxy.md) 或[提高 TiDB Dashboard 安全性](/dashboard/dashboard-ops-security.md)章节了解如何在多 PD 实例情况下正确配置防火墙或反向代理规则。 ## 浏览器兼容性 diff --git a/dashboard/dashboard-cluster-info.md b/dashboard/dashboard-cluster-info.md index ca6cfa739406..8a9d1b96f13c 100644 --- a/dashboard/dashboard-cluster-info.md +++ b/dashboard/dashboard-cluster-info.md @@ -1,10 +1,10 @@ --- -title: 集群信息页面 +title: TiDB Dashboard 集群信息页面 summary: 查看整个集群中 TiDB、TiKV、PD、TiFlash 组件的运行状态及其所在主机的运行状态 category: how-to --- -# 集群信息页面 +# TiDB Dashboard 集群信息页面 该页面上允许用户查看整个集群中 TiDB、TiKV、PD、TiFlash 组件的运行状态及其所在主机的运行状态。 diff --git a/dashboard/dashboard-diagnostics-access.md b/dashboard/dashboard-diagnostics-access.md index b91916e898ff..0a3c534c437a 100644 --- a/dashboard/dashboard-diagnostics-access.md +++ b/dashboard/dashboard-diagnostics-access.md @@ -1,9 +1,9 @@ --- -title: 集群诊断页面 +title: TiDB Dashboard 集群诊断页面 category: how-to --- -# 集群诊断页面 +# TiDB Dashboard 集群诊断页面 集群诊断是在指定的时间范围内,对集群可能存在的问题进行诊断,并将诊断结果和一些集群相关的负载监控信息汇总成一个诊断报告。诊断报告是网页形式,通过浏览器保存后可离线浏览和传阅。 diff --git a/dashboard/dashboard-diagnostics-report.md b/dashboard/dashboard-diagnostics-report.md index 90d18c68aad2..045d5a7d52e9 100644 --- a/dashboard/dashboard-diagnostics-report.md +++ b/dashboard/dashboard-diagnostics-report.md @@ -1,9 +1,9 @@ --- -title: 集群诊断页面 +title: TiDB Dashboard 诊断报告 category: how-to --- -# 集群诊断页面 +# TiDB Dashboard 诊断报告 本文档主要介绍诊断报告的内容以及查看技巧,访问集群诊断和生成报告请参考 [诊断报告访问文档](/dashboard/dashboard-diagnostics-access.md) diff --git a/dashboard/dashboard-diagnostics-usage.md b/dashboard/dashboard-diagnostics-usage.md index 3bf80814ec93..7ea7b40fb4e6 100644 --- a/dashboard/dashboard-diagnostics-usage.md +++ b/dashboard/dashboard-diagnostics-usage.md @@ -1,9 +1,11 @@ --- -title: 使用诊断报告定位问题 +title: 使用 TiDB Dashboard 诊断报告定位问题 category: how-to --- -# 使用诊断报告定位问题 +# 使用 TiDB Dashboard 诊断报告定位问题 + +本文介绍如何使用 TiDB Dashboard 诊断报告定位问题。 ## 对比诊断功能示例 diff --git a/dashboard/dashboard-faq.md b/dashboard/dashboard-faq.md new file mode 100644 index 000000000000..769bf69a5f94 --- /dev/null +++ b/dashboard/dashboard-faq.md @@ -0,0 +1,55 @@ +--- +title: TiDB Dashboard 常见问题 +category: how-to +--- + +# TiDB Dashboard 常见问题 + +本文汇总了使用 TiDB Dashboard 过程中的常见问题与解决办法。 + +## 访问 + +### 已配置防火墙或反向代理,但访问后被跳转到一个内部地址无法访问 TiDB Dashboard + +集群部署有多个 PD 实例的情况下,只有其中某一个 PD 实例会真正运行 TiDB Dashbaord 服务,访问其他 PD 实例时会发生浏览器端重定向。若防火墙或反向代理没有为此进行正确配置,就可能出现访问后被重定向到一个被防火墙或反向代理保护的内部地址的情况。 + +- 参阅 [TiDB Dashboard 多 PD 实例部署](/dashboard/dashboard-ops-deploy.md#多-PD-实例部署)章节了解多 PD 实例下 TiDB Dashboard 的工作原理。 +- 参阅[通过反向代理使用 TiDB Dashboard](/dashboard/dashboard-ops-reverse-proxy.md) 章节了解如何正确配置反向代理。 +- 参阅[提高 TiDB Dashboard 安全性](/dashboard/dashboard-ops-security.md)章节了解如何正确配置防火墙。 + +### 双网卡部署时无法通过另一个网卡访问 TiDB Dashboard + +PD 中的 TiDB Dashboard 出于安全考虑仅监听部署时所指定的 IP 地址(即只监听在一个网卡上),而非 `0.0.0.0`,因此当主机上安装了多个网卡时,通过另一个网卡将无法访问。 + +当你使用 `tiup cluster` 或 `tiup playground` 命令部署时,目前尚没有方法改变该行为。推荐使用反向代理将 TiDB Dashboard 安全地暴露给另一个网卡,具体参见[通过反向代理使用 TiDB Dashboard](/dashboard/dashboard-ops-reverse-proxy.md) 章节。 + +## 界面功能 + +### 概况页面中 QPS 及 Latency 显示 `prometheus_not_found` 错误 + +QPS 及 Latency 监控依赖于集群中已正常部署 Prometheus 监控实例,没有部署的情况下就会显示为错误。向集群中新部署 Prometheus 实例即可解决该问题。 + +若已经部署 Prometheus 监控实例但仍然显示为错误,可能的原因是您使用的部署工具(TiUP、tidb-operator 或 TiDB Ansible)版本比较旧,没有自动汇报监控地址,导致 TiDB Dashboard 无法感知并查询监控数据。可以升级到最新的部署工具并重试。 + +以下给出 TiUP 部署工具的操作方法,对于其他部署工具,请参阅工具对应文档。 + +1. 升级 TiUP、TiUP Cluster: + + ```bash + tiup update --self + tiup update cluster --force + ``` + +2. 升级后,部署包含监控节点的新集群时,应当能正常显示监控。 + +3. 对于现有集群,可通过再次启动集群的方法汇报监控地址(将 `CLUSTER_NAME` 替换为实际集群名称): + + ```bash + tiup cluster start CLUSTER_NAME + ``` + + 即使集群已经启动,请仍然执行该命令。该命令不会影响集群上正常的业务,但会刷新并上报监控地址,从而能让监控在 TiDB Dashbaord 中正常显示。 + +### 概况页面中 Top SQL 语句、最近慢查询显示 `invalid connection` 错误 + +可能的原因是你开启了 TiDB 的 `prepared-plan-cache` 功能。作为实验性功能,`prepared-plan-cache` 在某些版本的 TiDB 中存在一些缺陷,开启后可能会导致 TiDB Dashboard(及其他应用)出现该问题。请依据[文档](/tidb-configuration-file.md#prepared-plan-cache)关闭 `prepared-plan-cache` 功能。 diff --git a/dashboard/dashboard-intro.md b/dashboard/dashboard-intro.md new file mode 100644 index 000000000000..1802174de666 --- /dev/null +++ b/dashboard/dashboard-intro.md @@ -0,0 +1,62 @@ +--- +title: TiDB Dashboard 介绍 +category: how-to +--- + +# TiDB Dashboard 介绍 + +TiDB Dashboard 是 TiDB 自 4.0 版本起提供的图形化界面,可用于监控及诊断 TiDB 集群。TiDB Dashboard 内置于 TiDB 的 PD 组件中,无需独立部署。 + +![界面](/media/dashboard/dashboard-intro.gif) + +TiDB Dashboard 在 GitHub 上[开源](https://github.com/pingcap-incubator/tidb-dashboard)。 + +以下列出了 TiDB Dashboard 的主要功能,可分别点击小节内的链接进一步了解详情。 + +## 了解集群整体运行概况 + +查看集群整体 QPS 数值、执行耗时、消耗资源最多的几类 SQL 语句等概况信息。 + +参阅[概况页面](/dashboard/dashboard-overview.md)了解详情。 + +## 查看组件及主机运行状态 + +查看整个集群中 TiDB、TiKV、PD、TiFlash 组件的运行状态及其所在主机的运行状态。 + +参阅[集群信息页面](/dashboard/dashboard-cluster-info.md)了解详情。 + +## 分析集群读写流量分布及趋势变化 + +通过热力图形式可视化地展示整个集群中读写流量随时间的变化情况,及时发现业务模式的变化,或定位性能不均衡的热点所在。 + +参阅[流量可视化页面](/dashboard/dashboard-key-visualizer.md)了解详情。 + +## 列出所有 SQL 查询的耗时等执行信息 + +列出所有 SQL 语句在集群上执行情况,了解各个阶段的执行时间、总运行次数等信息,帮助用户分析和定位集群中最消耗资源的查询,优化整体性能。 + +参阅 [SQL 语句分析页面](/dashboard/dashboard-statement-list.md)了解详情。 + +## 详细了解耗时较长的 SQL 语句的执行信息 + +列出所有耗时较长的 SQL 语句文本及其执行信息,帮助用户定位 SQL 语句性能缓慢或发生性能抖动的原因。 + +参阅[慢查询页面](/dashboard/dashboard-slow-query.md)了解详情。 + +## 诊断常见集群问题并生成报告 + +自动判断集群中是否存在一些常见的风险(如配置不一致)或问题,生成报告并给出操作建议,或对比集群在不同时间段的各个指标状态,供用户分析可能存在问题的方向。 + +参阅[集群诊断页面](/dashboard/dashboard-diagnostics-access.md)了解详情。 + +## 查询所有组件日志 + +按关键字、时间范围等条件快速搜索集群中所有运行实例的日志,并可打包下载到本地。 + +参阅[日志搜索页面](/dashboard/dashboard-log-search.md)了解详情。 + +## 收集分析各个组件的性能数据 + +高级调试功能:无需第三方工具,在线地对各个组件进行性能分析,剖析组件实例在分析时间段内执行的各种内部操作及比例。 + +参阅[实例性能分析页面](/dashboard/dashboard-profiling.md)了解详情。 diff --git a/dashboard/dashboard-key-visualizer.md b/dashboard/dashboard-key-visualizer.md index 09909d333549..606d37c22277 100644 --- a/dashboard/dashboard-key-visualizer.md +++ b/dashboard/dashboard-key-visualizer.md @@ -1,10 +1,10 @@ --- -title: 流量可视化页面 +title: TiDB Dashboard 流量可视化页面 category: how-to aliases: ['/docs-cn/dev/how-to/monitor/key-visualizer/','/docs-cn/dev/key-visualizer-monitoring-tool/'] --- -# 流量可视化页面 +# TiDB Dashboard 流量可视化页面 流量可视化页面 (Key Visualizer) 可用于分析 TiDB 集群的使用模式和排查流量热点。该页面可视化地呈现了 TiDB 集群一段时间的流量情况。 @@ -18,10 +18,6 @@ aliases: ['/docs-cn/dev/how-to/monitor/key-visualizer/','/docs-cn/dev/key-visual * 在浏览器中访问 `http://127.0.0.1:2379/dashboard/#/keyviz`(将 `127.0.0.1:2379` 替换为实际 PD 实例地址和端口)。 -> **注意:** -> -> 流量可视化功能默认关闭,在初次使用时需要手动打开。请依据界面指引来开启该功能,或参见本文档[设置](#设置)部分。 - ## 界面示例 流量可视化页面示例如下: diff --git a/dashboard/dashboard-log-search.md b/dashboard/dashboard-log-search.md index dd9e0c9a827f..e98b6d50fdc2 100644 --- a/dashboard/dashboard-log-search.md +++ b/dashboard/dashboard-log-search.md @@ -1,10 +1,10 @@ --- -title: 日志搜索页面 +title: TiDB Dashboard 日志搜索页面 summary: 在集群中搜索所有节点上的日志 category: how-to --- -# 日志搜索页面 +# TiDB Dashboard 日志搜索页面 该页面上允许用户在集群中搜索所有节点上的日志,在页面上预览搜索结果和下载日志。 diff --git a/dashboard/dashboard-ops-deploy.md b/dashboard/dashboard-ops-deploy.md new file mode 100644 index 000000000000..b9a2a56bc925 --- /dev/null +++ b/dashboard/dashboard-ops-deploy.md @@ -0,0 +1,124 @@ +--- +title: 部署 TiDB Dashboard +category: how-to +--- + +# 部署 TiDB Dashboard + +TiDB Dashboard 界面内置于 TiDB 4.0 或更高版本的 PD 组件中,无需额外部署。只需部署标准 TiDB 集群,TiDB Dashboard 就会原生集成。 + +请参阅下列文档了解如何部署标准 TiDB 集群: + ++ [快速试用 TiDB 集群](/quick-start-with-tidb.md#第二种使用-tiup-playground-快速部署本地测试环境) ++ [生产环境部署](/production-deployment-using-tiup.md) ++ [Kubernetes 环境部署](https://pingcap.com/docs-cn/tidb-in-kubernetes/stable/access-dashboard/) + +> **注意:** +> +> TiDB Dashboard 目前不能在低于 4.0 版本的集群中部署或使用。 + +## 多 PD 实例部署 + +当集群中部署了多个 PD 实例时,其中仅有一个 PD 实例会固定地提供 TiDB Dashboard 服务。 + +各个 PD 首次运行时会自动协商出其中某一个实例提供 TiDB Dashboard 服务。协商完毕后,无论重启或扩容,都会固定在这个实例上运行 TiDB Dashboard 服务,除非该实例被手动缩容。其他 PD 实例不会运行 TiDB Dashboard 服务。这个协商过程无需用户介入,会自动完成。 + +当用户访问不提供 TiDB Dashboard 服务的 PD 实例时,浏览器将会收到重定向指令,自动引导用户重新访问提供了 TiDB Dashboard 服务的 PD 实例,从而能正常使用。流程如下图所示。 + +![流程示意](/media/dashboard/dashboard-ops-multiple-pd.svg) + +> **注意:** +> +> 提供 TiDB Dashboard 服务的 PD 实例不一定与 PD leader 一致。 + +### 查询实际运行 TiDB Dashboard 服务的 PD 实例 + +使用 TiUP 部署时,对于已启动的集群,可通过 `tiup cluster display` 命令查看哪个 PD 节点提供了 TiDB Dashboard 服务(将 `CLUSTER_NAME` 替换为集群名称): + +```bash +tiup cluster display CLUSTER_NAME --dashboard +``` + +输出样例如下: + +``` +http://192.168.0.123:2379/dashboard/ +``` + +> **注意:** +> +> 该功能仅在较新版本的 `tiup cluster` 部署工具中提供。可通过以下命令升级 `tiup cluster`: +> +> ```bash +> tiup update --self +> tiup update cluster --force +> ``` + +### 切换其他 PD 实例提供 TiDB Dashboard 服务 + +使用 TiUP 部署时,对于已启动的集群,可使用 `tiup ctl pd` 命令切换其他 PD 实例运行 TiDB Dashboard,或在禁用 TiDB Dashboard 的情况下重新指定一个 PD 实例运行 TiDB Dashboard: + +```bash +tiup ctl pd -u http://127.0.0.1:2379 config set dashboard-address http://9.9.9.9:2379 +``` + +其中: + +- 将 `127.0.0.1:2379` 替换为任意 PD 实例的 IP 和端口 +- 将 `9.9.9.9:2379` 替换为想运行 TiDB Dashboard 服务的新 PD 实例的 IP 和端口 + +修改完毕后,可使用 `tiup cluster display` 命令确认修改是否生效(将 `CLUSTER_NAME` 替换为集群名称): + +```bash +tiup cluster display CLUSTER_NAME --dashboard +``` + +> **警告:** +> +> 切换 TiDB Dashboard 将会丢失之前 TiDB Dashboard 实例所存储的本地数据,包括流量可视化历史、历史搜索记录等。 + +## 禁用 TiDB Dashboard + +使用 TiUP 部署时,对于已启动的集群,可使用 `tiup ctl pd` 命令在所有 PD 实例上禁用 TiDB Dashboard(将 `127.0.0.1:2379` 替换为任意 PD 实例的 IP 和端口): + +```bash +tiup ctl pd -u http://127.0.0.1:2379 config set dashboard-address none +``` + +禁用 TiDB Dashboard 后,查询哪个 PD 实例提供 TiDB Dashboard 服务将会失败: + +``` +Error: TiDB Dashboard is disabled +``` + +浏览器访问任意 PD 实例的 TiDB Dashboard 地址也将提示失败: + +``` +Dashboard is not started. +``` + +## 重新启用 TiDB Dashboard + +使用 TiUP 部署时,对于已启动的集群,可使用 `tiup ctl pd` 命令,要求 PD 重新协商出某一个实例运行 TiDB Dashboard(将 `127.0.0.1:2379` 替换为任意 PD 实例的 IP 和端口): + +```bash +tiup ctl pd -u http://127.0.0.1:2379 config set dashboard-address auto +``` + +修改完毕后,使用 `tiup cluster display` 命令查看 PD 自动协商出的 TiDB Dashboard 实例地址(将 `CLUSTER_NAME` 替换为集群名称): + +```bash +tiup cluster display CLUSTER_NAME --dashboard +``` + +还可以通过手动指定哪个 PD 实例运行 TiDB Dashboard 服务的方式重新启用 TiDB Dashboard,具体操作参见上文[切换其他 PD 实例提供 TiDB Dashboard 服务](#切换其他-PD-实例提供-TiDB-Dashboard-服务)。 + +> **警告:** +> +> 若新启用的 TiDB Dashboard 实例与禁用前的实例不一致,将会丢失之前 TiDB Dashboard 实例所存储的本地数据,包括流量可视化历史、历史搜索记录等。 + +## 下一步 + +- 参阅[访问 TiDB Dashboard](/dashboard/dashboard-access.md) 章节了解如何访问及登录集群上的 TiDB Dashboard 界面。 + +- 参阅[提高 TiDB Dashboard 安全性](/dashboard/dashboard-ops-security.md) 章节了解如何增强 TiDB Dashboard 的安全性,如配置防火墙等。 diff --git a/dashboard/dashboard-ops-reverse-proxy.md b/dashboard/dashboard-ops-reverse-proxy.md new file mode 100644 index 000000000000..aef2e6bac6f5 --- /dev/null +++ b/dashboard/dashboard-ops-reverse-proxy.md @@ -0,0 +1,174 @@ +--- +title: 通过反向代理使用 TiDB Dashboard +category: how-to +--- + +# 通过反向代理使用 TiDB Dashboard + +你可以使用反向代理将 TiDB Dashboard 服务安全从内部网络提供给外部网络。 + +## 操作步骤 + +### 第 1 步:获取实际 TiDB Dashboard 地址 + +当集群中部署有多个 PD 实例时,其中仅有一个 PD 实例会真正运行 TiDB Dashboard,因此需要确保反向代理的上游 (Upstream) 指向了正确的地址。关于该机制的详情,可参阅 [TiDB Dashboard 多 PD 实例部署](/dashboard/dashboard-ops-deploy.md#多-PD-实例部署) 章节。 + +使用 TiUP 部署工具时,操作命令如下(将 `CLUSTER_NAME` 替换为集群名称): + +```bash +tiup cluster display CLUSTER_NAME --dashboard +``` + +输出即为实际 TiDB Dashboard 地址。样例如下: + +``` +http://192.168.0.123:2379/dashboard/ +``` + +> **注意:** +> +> 该功能仅在较新版本的 `tiup cluster` 部署工具中提供。可通过以下命令升级 `tiup cluster`: +> +> ```bash +> tiup update --self +> tiup update cluster --force +> ``` + +### 第 2 步:配置反向代理 + +#### NGINX + +[NGINX](https://nginx.org/) 作为反向代理时,方法如下。 + +1. 以在 80 端口反向代理 TiDB Dashboard 为例,在 NGINX 配置文件中,新增如下配置: + + ```nginx + server { + listen 80; + location /dashboard/ { + proxy_pass http://192.168.0.123:2379/dashboard/; + } + } + ``` + + 配置 `proxy_pass` 中填写的 URL 即为[第 1 步:获取实际 TiDB Dashboard 地址](#第-1-步获取实际-TiDB-Dashboard-地址)中取得的 TiDB Dashboard 实际地址。 + + > **警告:** + > + > 请务必保留 `proxy_pass` 指令中的 `/dashboard/` 路径,确保只有该路径下的服务会被反向代理,否则将引入安全风险。参见[提高 TiDB Dashboard 安全性](/dashboard/dashboard-ops-security.md)。 + +2. 重启 NGINX,以使配置生效。 + +3. 测试反向代理是否生效:访问 NGINX 所在机器的 80 端口下 `/dashboard/` 地址,如 ,即可访问 TiDB Dashboard。 + +## 自定义路径前缀 + +TiDB Dashboard 默认在 `/dashboard/` 路径下提供服务,即使是反向代理也是如此,例如 `http://example.com/dashboard/`。若要配置反向代理以非默认的路径提供 TiDB Dashboard 服务,例如 `http://example.com/foo` 或 `http://example.com/`,可参考以下步骤。 + +### 第 1 步:修改 PD 配置指定 TiDB Dashboard 服务路径前缀 + +修改 PD 配置中 `[dashboard]` 类别的 `public-path-prefix` 配置项,可指定服务路径前缀。该配置修改后需要重启 PD 实例生效。 + +以 TiUP 部署且希望运行在 `http://example.com/foo` 为例,可指定以下配置: + +```yaml +server_configs: + pd: + dashboard.public-path-prefix: /foo +``` + +若要全新部署集群,可在 TiUP 拓扑文件 `topology.yaml` 中加入上述配置项后进行部署,具体步骤参阅 [TiUP 部署文档](/production-deployment-using-tiup.md#第-3-步编辑初始化配置文件)。 + +对于已部署的集群: + +1. 以编辑模式打开该集群的配置文件(将 `CLUSTER_NAME` 替换为集群名称) + + ```bash + tiup cluster edit-config CLUSTER_NAME + ``` + +2. 在 `server_configs` 的 `pd` 配置下修改或新增配置项,若没有 `server_configs` 请在最顶层新增: + + ```yaml + server_configs: + pd: + dashboard.public-path-prefix: /foo + ``` + + > 修改完成后的配置文件类似于: + > + > ```yaml + > server_configs: + > pd: + > dashboard.public-path-prefix: /foo + > global: + > user: tidb + > ... + > ``` + > + > 或 + > + > ```yaml + > monitored: + > ... + > server_configs: + > tidb: ... + > tikv: ... + > pd: + > dashboard.public-path-prefix: /foo + > ... + > ``` + +3. 滚动重启所有 PD 实例生效配置(将 `CLUSTER_NAME` 替换为集群名称) + + ```bash + tiup cluster reload CLUSTER_NAME -R pd + ``` + +详情请参阅 [TiUP 常见运维操作 - 修改配置参数](/maintain-tidb-using-tiup.md#修改配置参数)。 + +若希望运行在根路径(如 `http://example.com/`)下,相应的配置为: + +```yaml +server_configs: + pd: + dashboard.public-path-prefix: / +``` + +> **警告:** +> +> 修改自定义路径前缀生效后,直接访问将不能正常使用 TiDB Dashboard,您只能通过和路径前缀匹配的反向代理访问。 + +### 第 2 步:修改反向代理配置 + +#### NGINX + +以 `http://example.com/foo` 为例,相应的 NGINX 配置为: + +```nginx +server { + listen 80; + location /foo/ { + proxy_pass http://192.168.0.123:2379/dashboard/; + } +} +``` + +> **警告:** +> +> 请务必保留 `proxy_pass` 指令中的 `/dashboard/` 路径,确保只有该路径下的服务会被反向代理,否则将引入安全风险。参见 [提高 TiDB Dashboard 安全性](/dashboard/dashboard-ops-security.md)。 + +请调整配置中 `http://192.168.0.123:2379/dashboard/` 为[第 1 步:获取实际 TiDB Dashboard 地址](#第-1-步获取实际-TiDB-Dashboard-地址)中取得的 TiDB Dashboard 实际地址。 + +若希望运行在根路径(如 `http://example.com/`),NGINX 配置为: + +```nginx +server { + listen 80; + location / { + proxy_pass http://192.168.0.123:2379/dashboard/; + } +} +``` + +修改配置并重启 NGINX 后即可生效。 diff --git a/dashboard/dashboard-ops-security.md b/dashboard/dashboard-ops-security.md new file mode 100644 index 000000000000..16ab244d9c45 --- /dev/null +++ b/dashboard/dashboard-ops-security.md @@ -0,0 +1,76 @@ +--- +title: 提高 TiDB Dashboard 安全性 +category: how-to +--- + +# 提高 TiDB Dashboard 安全性 + +尽管访问 TiDB Dashboard 需要登录,但它被设计为默认供可信的用户实体访问。当你希望将 TiDB Dashboard 提供给外部网络用户或不可信用户访问时,需要注意采取以下措施以避免安全漏洞。 + +## 为 TiDB `root` 用户设置强密码 + +TiDB Dashboard 的账号体系与 TiDB SQL 用户一致。默认部署情况下,TiDB 的 `root` 用户没有密码,因而访问 TiDB Dashboard 也不需要密码验证。这将会给恶意访问者极大的集群权限,包括执行特权 SQL 等。 + +建议的措施: + +- 为 TiDB `root` 用户设置一个强密码。请参见 [TiDB 用户账户管理](/user-account-management.md) 了解详情。 + +## 使用防火墙阻止不可信访问 + +TiDB Dashboard 通过 PD Client 端口提供服务,默认为 。尽管 TiDB Dashboard 需要验证身份,但 PD Client 端口上承载的其他 PD 内部特权接口不需要验证身份,且能进行特权操作,例如 。因此,将 PD Client 端口直接暴露给外部网络具有极大的风险。 + +建议的措施: + +1. 使用防火墙禁止组件外部网络或不可信网络访问**任何** PD 组件的 Client 端口。 + + 注意,TiDB、TiKV 等组件需要通过 PD Client 端口与 PD 组件进行通信,因此请勿对组件内部网络阻止访问,这将导致集群不可用。 + +2. 参见[通过反向代理使用 TiDB Dashboard](/dashboard/dashboard-ops-reverse-proxy.md) 了解如何配置反向代理将 TiDB Dashboard 服务在另一个端口上安全地提供给外部网络。 + +### 如何在多 PD 实例部署时开放 TiDB Dashboard 端口访问 + +> **警告:** +> +> 本章节描述了一个不安全的访问方案,仅供测试环境使用。在生产环境中,不要使用本方案。请参见本文的其余章节。 + +在测试环境中,您可能需要配置防火墙开放 TiDB Dashboard 端口供外部访问。 + +当部署了多个 PD 实例时,其中仅有一个 PD 实例会真正运行 TiDB Dashboard,访问其他 PD 实例时会发生浏览器重定向,因此需要确保防火墙配置了正确的 IP 地址。关于该机制的详情,可参阅 [TiDB Dashboard 多 PD 实例部署](/dashboard/dashboard-ops-deploy.md#多-PD-实例部署) 章节。 + +使用 TiUP 部署工具时,可使用以下命令查看实际运行 TiDB Dashboard 的 PD 实例地址(将 `CLUSTER_NAME` 替换为集群名称): + +```bash +tiup cluster display CLUSTER_NAME --dashboard +``` + +输出即为实际 TiDB Dashboard 地址。 + +> **注意:** +> +> 该功能仅在较新版本的 `tiup cluster` 部署工具中提供。可通过以下命令升级 `tiup cluster`: +> +> ```bash +> tiup update --self +> tiup update cluster --force +> ``` + +以下是一个样例输出: + +``` +http://192.168.0.123:2379/dashboard/ +``` + +在这个样例中,需要为防火墙配置开放 IP `192.168.0.123` 的 `2379` 端口入站访问,并通过 访问 TiDB Dashboard。 + +## 反向代理仅代理 TiDB Dashboard + +如前文所述,PD Client 端口下提供的服务不仅有 TiDB Dashboard(位于 ),还有其他 PD 内部特权接口(如 )。因此,使用反向代理将 TiDB Dashboard 提供给外部网络时,应当确保仅提供 `/dashboard` 前缀下的服务,而非该端口下所有服务,避免外部网络能通过反向代理访问到 PD 内部特权接口。 + +建议的措施: + +- 参见 [通过反向代理使用 TiDB Dashboard](/dashboard/dashboard-ops-reverse-proxy.md) 了解安全且推荐的反向代理配置。 + +## 其他建议的安全措施 + +- [为 TiDB 组件间通信开启加密传输](/enable-tls-between-components.md) +- [为 TiDB 客户端服务端间通信开启加密传输](/enable-tls-between-clients.md) diff --git a/dashboard/dashboard-overview.md b/dashboard/dashboard-overview.md index e83456b80ab4..dae6fd6fcb04 100644 --- a/dashboard/dashboard-overview.md +++ b/dashboard/dashboard-overview.md @@ -1,9 +1,9 @@ --- -title: 概况页面 +title: TiDB Dashboard 概况页面 category: how-to --- -# 概况页面 +# TiDB Dashboard 概况页面 该页面显示了整个集群的概况,包含以下信息: diff --git a/dashboard/dashboard-profiling.md b/dashboard/dashboard-profiling.md index 3ab6ac68b1b4..048f2f24d0ad 100644 --- a/dashboard/dashboard-profiling.md +++ b/dashboard/dashboard-profiling.md @@ -1,9 +1,9 @@ --- -title: 实例性能分析页面 +title: TiDB Dashboard 实例性能分析页面 category: how-to --- -# 实例性能分析页面 +# TiDB Dashboard 实例性能分析页面 该功能允许用户对各个 TiDB、TiKV、PD 实例在不重启的情况下进行内部性能数据收集。收集到的性能数据可显示为火焰图或有向无环图,直观展现实例在性能收集的时间段内执行的各种内部操作及比例,快速了解该实例 CPU 资源消耗的主要内容。 diff --git a/dashboard/dashboard-slow-query.md b/dashboard/dashboard-slow-query.md index 7f54a52822ef..62dafdb5fd0a 100644 --- a/dashboard/dashboard-slow-query.md +++ b/dashboard/dashboard-slow-query.md @@ -1,18 +1,14 @@ --- -title: 慢查询页面 +title: TiDB Dashboard 慢查询页面 summary: 了解如何在 TiDB Dashboard 中查看慢查询。 category: how-to --- -# 慢查询页面 +# TiDB Dashboard 慢查询页面 -本文档介绍如何在 TiDB Dashboard 中查看慢查询页面。 +该页面上能检索和查看集群中所有慢查询。 -## 慢查询简介 - -查询集群中所有慢查询语句,系统默认将执行时间超过 Session 变量 [`tidb_slow_log_threshold`](/tidb-specific-system-variables.md#tidb_slow_log_threshold) 或者配置参数 [`slow-threshold`](/tidb-configuration-file.md#slow-threshold) 值的 SQL 语句视为慢查询语句,系统会自己记录到[慢查询日志](/identify-slow-queries.md) 中。此功能通过 SQL 将查询结果输出到页面。 - -默认情况下,执行时间超过 300ms 的 SQL 就会被视为慢查询,被记录到[慢查询日志](/identify-slow-queries.md)中,并可通过本功能对记录到的慢查询进行查询。可调整 [`tidb_slow_log_threshold`](/tidb-specific-system-variables.md#tidb_slow_log_threshold) SESSION 变量或 TiDB [`slow-threshold`](/tidb-configuration-file.md#slow-threshold) 参数调整慢查询阈值。 +默认情况下,执行时间超过 300ms 的 SQL 查询就会被视为慢查询,被记录到[慢查询日志](/identify-slow-queries.md)中,并可通过本功能对记录到的慢查询进行查询。可调整 [`tidb_slow_log_threshold`](/tidb-specific-system-variables.md#tidb_slow_log_threshold) SESSION 变量或 TiDB [`slow-threshold`](/tidb-configuration-file.md#slow-threshold) 参数调整慢查询阈值。 > **注意:** > @@ -20,7 +16,7 @@ category: how-to ## 访问列表页面 -访问页面的两种方式,如下: +可以通过以下两种方法访问慢查询页面: * 登录后,左侧导航条点击**慢查询** (**Slow Queries**): diff --git a/dashboard/dashboard-statement-detail.md b/dashboard/dashboard-statement-details.md similarity index 93% rename from dashboard/dashboard-statement-detail.md rename to dashboard/dashboard-statement-details.md index 06d72f9cda96..e1a9d237fa73 100644 --- a/dashboard/dashboard-statement-detail.md +++ b/dashboard/dashboard-statement-details.md @@ -1,10 +1,11 @@ --- -title: 查看执行详情 +title: TiDB Dashboard SQL 语句分析执行详情页面 summary: 查看单个 SQL 语句执行的详细情况 category: how-to +aliases: ['/docs-cn/dev/dashboard/dashboard-statement-detail/'] --- -# 查看执行详情 +# TiDB Dashboard SQL 语句分析执行详情页面 在列表中点击任意一行可以进入该 SQL 语句的详情页查看更详细的信息,这此信息包括三大部分: diff --git a/dashboard/dashboard-statement-list.md b/dashboard/dashboard-statement-list.md index 0d1fe6e70cbc..294726dcf3bb 100644 --- a/dashboard/dashboard-statement-list.md +++ b/dashboard/dashboard-statement-list.md @@ -1,10 +1,10 @@ --- -title: SQL 语句分析页面 +title: TiDB Dashboard SQL 语句分析列表页面 summary: 查看所有 SQL 语句在集群上执行情况 category: how-to --- -# SQL 语句分析页面 +# TiDB Dashboard SQL 语句分析执行详情页面 该页面可以查看所有 SQL 语句在集群上执行情况,常用于分析总耗时或单次耗时执行耗时较长的 SQL 语句。 @@ -62,3 +62,7 @@ SQL 语句分析页面所展示的所有数据都来自于 TiDB Statement 系统 > 由于 Statement 系统表只存放在内存中,关闭此功能后,系统表中的数据会将清空。 > > 数据收集周期和保留时间的值会影响内存占用,因此建议根据实际情况调整,保留时间不宜设置过大。 + +## 下一步 + +阅读[查看执行详情](/dashboard/dashboard-statement-details.md)章节了解如何进一步查看 SQL 语句的详细执行情况。 diff --git a/media/dashboard/dashboard-intro.gif b/media/dashboard/dashboard-intro.gif new file mode 100644 index 000000000000..404893b88f6f Binary files /dev/null and b/media/dashboard/dashboard-intro.gif differ diff --git a/media/dashboard/dashboard-ops-multiple-pd.svg b/media/dashboard/dashboard-ops-multiple-pd.svg new file mode 100644 index 000000000000..a9dc2abbf79a --- /dev/null +++ b/media/dashboard/dashboard-ops-multiple-pd.svg @@ -0,0 +1,3 @@ + + +
PD
PD
PD
PD
PD
(with Dashboard)
PD...
1
1
2
2
3
3
Viewer does not support full SVG 1.1
\ No newline at end of file diff --git a/media/dashboard/dashboard-overview-monitor.png b/media/dashboard/dashboard-overview-monitor.png index f5febacc4bb3..1ebe9cc6db57 100644 Binary files a/media/dashboard/dashboard-overview-monitor.png and b/media/dashboard/dashboard-overview-monitor.png differ diff --git a/media/dashboard/dashboard-slow-queries-access.png b/media/dashboard/dashboard-slow-queries-access.png index 177fa2e95c44..abdd2124c789 100644 Binary files a/media/dashboard/dashboard-slow-queries-access.png and b/media/dashboard/dashboard-slow-queries-access.png differ diff --git a/media/dashboard/dashboard-slow-queries-detail1.png b/media/dashboard/dashboard-slow-queries-detail1.png index a7872a5a0718..3b40093742db 100644 Binary files a/media/dashboard/dashboard-slow-queries-detail1.png and b/media/dashboard/dashboard-slow-queries-detail1.png differ diff --git a/media/dashboard/dashboard-slow-queries-detail2.png b/media/dashboard/dashboard-slow-queries-detail2.png index aa8033494326..c8048b7a04db 100644 Binary files a/media/dashboard/dashboard-slow-queries-detail2.png and b/media/dashboard/dashboard-slow-queries-detail2.png differ diff --git a/media/dashboard/dashboard-slow-queries-list1.png b/media/dashboard/dashboard-slow-queries-list1.png index 404aaa89b16e..204e88804f0a 100644 Binary files a/media/dashboard/dashboard-slow-queries-list1.png and b/media/dashboard/dashboard-slow-queries-list1.png differ diff --git a/media/dashboard/dashboard-slow-queries-list2.png b/media/dashboard/dashboard-slow-queries-list2.png index 75adc218e222..b621eeabcb4c 100644 Binary files a/media/dashboard/dashboard-slow-queries-list2.png and b/media/dashboard/dashboard-slow-queries-list2.png differ diff --git a/media/dashboard/dashboard-slow-queries-list3.png b/media/dashboard/dashboard-slow-queries-list3.png index a7006f661b6e..27fabac4a1e9 100644 Binary files a/media/dashboard/dashboard-slow-queries-list3.png and b/media/dashboard/dashboard-slow-queries-list3.png differ