使用pingcapclinic诊断tidb集群(代码片段)

添香小铺 添香小铺     2022-12-01     400

关键词:

对于使用 TiUP 部署的 TiDB 集群和 DM 集群,PingCAP Clinic 诊断服务(以下简称为 PingCAP Clinic)可以通过 Diag 诊断客户端(以下简称为 Diag)与 Clinic Server 云诊断平台(以下简称为 Clinic Server)实现远程定位集群问题和本地快速检查集群状态。

注意

  • 本文档适用于使用 TiUP 部署的集群。如需查看适用于使用 Operator 部署的集群,请参阅 在 TiDB Operator 部署环境使用 PingCAP Clinic

  • PingCAP Clinic 暂时不支持对使用 TiDB Ansible 部署的集群进行数据采集。

使用场景

  • 远程定位集群问题

    • 当集群出现问题,需要远程咨询 PingCAP 技术支持时,你可以先使用 Diag 采集诊断数据,然后将其数据上传到 Clinic Server,最后把数据链接提供给技术支持人员,协助远程定位集群问题。
    • 当集群出现问题,但无法马上进行问题分析时,你可以先使用 Diag 采集数据,并将其数据保存下来,用于自己后期进行问题分析。
  • 本地快速检查集群状态

    即使集群可以正常运行,也需要定期检查集群是否有潜在的稳定性风险。PingCAP Clinic 提供的本地快速诊断功能,用于检查集群潜在的健康风险,本地诊断只覆盖配置项检查。如果需要更全面的检查,推荐上传诊断数据包到 Clinic Server,使用 Clinic Server 提供的 Health Report 对 Metrics、日志和配置项进行全面的快速检查。

准备工作

在使用 PingCAP Clinic 功能之前,你需要先安装数据采集组件 Diag 并准备数据上传环境。

  1. 安装 Diag。

    • 如果你的中控机上已经安装了 TiUP,可以使用以下命令一键安装 Diag:

       

      tiup install diag

    • 若已安装了 Diag,你可以通过以下命令,将本地的 Diag 一键升级至最新版本:

       

      tiup update diag

    注意

    • 对于离线集群,你需要离线部署 Diag 诊断客户端。具体方法,请参照离线部署 TiUP 组件:方式 2
    • Diag 诊断客户端包含在 v6.0.0 及后续版本的 TiDB Server 离线镜像包中。
  2. 获取并设置用于上传数据的 Access Token(以下简称为 Token)。

    使用 Diag 上传采集到的数据时,你需要通过 Token 进行用户认证,以保证数据上传到组织后被安全地隔离。获取一个 Token 后,你可以重复使用该 Token。如果你已经获取过并在 Diag 上设置过 Token,可跳过此步骤。

    首先,通过以下方法获取 Token:

    • 登录 Clinic Server。

      • Clinic Server 中国区
      • Clinic Server 美国区

      Clinic Server 中国区,数据存储在亚马逊云服务中国区。

    • 点击 Cluster 页面右下角的图标,选择 Get Access Token For Diag Tool,在弹出窗口中点击 + 符号获取 Token 后,复制并保存 Token 信息。

    注意

    • 如果你第一次访问 Clinic Server,请参考快速上手指南:准备数据上传环境的相关步骤。
    • 为了确保数据的安全性,TiDB 只在创建 Token 时显示 Token 信息。如果丢失了 Token 信息,你可以删除旧 Token 后重新创建。
    • Token 只用于上传数据。

    然后,参考以下命令,在 Diag 中设置该 Token:

     

    tiup diag config clinic.token $token-value

  3. 在 Diag 中设置 region

    region 决定数据打包时使用的加密证书和上传的目标 Clinic Server 地址。参考以下命令,根据你的 Clinic Server 在 Diag 中设置 clinic.region

    注意

    • Diag v0.9.0 及以后的版本支持 region 设置。
    • 对于 Diag v0.9.0 之前的版本,数据默认上传到 Clinic Server 中国区。
    • 如果你的 Diag 是 v0.9.0 之前的版本,你可以通过 tiup update diag 命令将其升级至最新版本后设置 region
    • Clinic Server 中国区
    • Clinic Server 美国区

    对于 Clinic Server 中国区,参考以下命令,将 region 设置为 CN

     

    tiup diag config clinic.region CN

  4. 开启日志脱敏配置(可选步骤)。

    TiDB 在提供详细的日志信息时可能会打印数据库的敏感信息(例如用户数据)。如果希望本地日志及上传到 Clinic Server 的日志中不带有敏感信息,你可以开启日志脱敏配置。具体操作请参考日志脱敏

远程定位集群问题

你可以使用 Diag 快速抓取 TiDB 集群和 DM 集群的诊断数据,其中包括监控数据、配置信息等。

第 1 步:确定需要采集的数据

如需查看 Diag 支持采集的数据的详细列表,请参阅 PingCAP Clinic 数据采集说明

建议收集监控数据、配置信息等全量诊断数据,有助于提升后续诊断效率。具体方法,请参考采集 TiDB 集群的数据

第 2 步:采集数据

你可以使用 Diag 采集使用 TiUP 部署的 TiDB 集群和 DM 集群的数据。

采集 TiDB 集群的数据

  1. 运行 Diag 数据采集命令。

    例如,如需采集从当前时间的 4 小时前到 2 小时前的诊断数据,可以运行以下命令:

     

    tiup diag collect $cluster-name -f="-4h" -t="-2h"

    采集参数说明:

    • -f/--from:指定采集时间的起始点。如果不指定该参数,默认起始点为当前时间的 2 小时前。如需修改时区,可使用 -f="12:30 +0800" 语法。如果没有在该参数中指定时区信息,如 +0800,则默认时区为 UTC。
    • -t/--to:指定采集时间的结束点。如果不指定该参数,默认结束点为当前时刻。如需修改时区,可使用 -f="12:30 +0800" 语法。如果没有在该参数中指定时区信息,如 +0800,则默认时区为 UTC。

    参数使用提示:

    除了指定采集时间,你还可以使用 Diag 指定更多参数。如需查看所有参数,请使用 tiup diag collect -h 命令。

    注意

    • Diag 默认不收集系统变量数据 (db_vars)。如需收集该数据,你需要额外提供开启了系统变量可读权限的数据库用户名和密码。
    • Diag 默认不收集性能数据 (perf)和 Debug 数据 (debug)。
    • 如需收集全量诊断数据,可以使用命令 tiup diag collect <cluster-name> --include="system,monitor,log,config,db_vars,perf,debug"
    • -l:传输文件时的带宽限制,单位为 Kbit/s, 默认值为 100000(即 scp 的 -l 参数)。
    • -N/--node:支持只收集指定节点的数据,格式为 ip:port
    • --include:只收集特定类型的数据,可选值为 systemmonitorlogconfigdb_vars。如需同时列出多种类型的数据,你可以使用逗号 , 来分割不同的数据类型。
    • --exclude:不收集特定类型的数据,可选值为 systemmonitorlogconfigdb_vars。如需同时列出多种类型的数据,你可以使用逗号 , 来分割不同的数据类型。

    运行 Diag 数据采集命令后,Diag 不会立即开始采集数据,而会在输出中提供预估数据量大小和数据存储路径,并询问你是否进行数据收集。例如:

     

    Estimated size of data to collect: Host Size Target ---- ---- ------ 172.16.7.129:9090 43.57 MB 1775 metrics, compressed 172.16.7.87 0 B /tidb-deploy/tidb-4000/log/tidb_stderr.log ... ... 172.16.7.179 325 B /tidb-deploy/tikv-20160/conf/tikv.toml Total 2.01 GB (inaccurate) These data will be stored in /home/qiaodan/diag-fNTnz5MGhr6 Do you want to continue? [y/N]: (default=N)

  2. 如果确认要开始采集数据,请输入 Y

    采集数据需要一定的时间,具体所需时间与需要收集的数据量有关。例如,在测试环境中收集 1 GB 数据,大概需要 10 分钟。

    采集完成后,Diag 会提示采集数据所在的文件夹路径。例如:

     

    Collected data are stored in /home/qiaodan/diag-fNTnz5MGhr6

采集 DM 集群的数据

  1. 运行 Diag 数据采集命令。

    例如,如需采集从当前时间的 4 小时前到 2 小时前的诊断数据,可以运行以下命令:

     

    tiup diag collectdm $cluster-name -f="-4h" -t="-2h"

    如需了解在上述命令中使用的参数说明或需要查看使用 Diag 工具时会使用的其他参数,请参考采集 TiDB 集群的数据

    运行 Diag 数据采集命令后,Diag 不会立即开始采集数据,而会在输出中提供预估数据量大小和数据存储路径,并询问你是否进行数据收集。

  2. 如果确认要开始采集数据,请输入 Y

    采集数据需要一定的时间,具体所需时间与需要收集的数据量有关。例如,在测试环境中收集 1 GB 数据,大概需要 10 分钟。

    采集完成后,Diag 会提示采集数据所在的文件夹路径。例如:

     

    Collected data are stored in /home/qiaodan/diag-fNTnz5MGhr6

第 3 步:本地查看数据(可选步骤)

已收集的数据会根据其数据来源存储于独立的子目录中,这些子目录以机器名和端口号来命名。每个节点的配置、日志等文件的存放位置与在真实服务器中存放的相对路径相同,其中:

  • 系统和硬件的基础信息:位于 insight.json
  • 系统 /etc/security/limits.conf 中的内容:位于 limits.conf
  • 内核参数列表:位于 sysctl.conf
  • 内核日志:位于 dmesg.log
  • 采集时的网络连接情况:位于 ss.txt
  • 配置数据:位于每节点目录下的 config.json
  • 集群本身的元信息:位于 meta.yaml(此文件位于采集数据存储目录的顶层)
  • 监控数据:位于 /monitor 文件目录。默认经过压缩,无法直接查看。如需直接查看监控指标的 JSON 文件内容,可在采集时通过 --compress-metrics=false 参数禁用压缩。

第 4 步:上传数据

如需将集群诊断数据提供给 PingCAP 技术支持人员,请先将数据上传到 Clinic Server 后,再把获取到的数据访问链接发送给技术支持人员。Clinic Server 为 PingCAP Clinic 的云服务,可提供安全的诊断数据存储和共享。

根据集群的网络连接情况,你可以选择以下上传方式之一:

注意

如果在上传前没有在 Diag 中设置 Token 或 region,Diag 会提示上传失败,并提醒你进行设置。关于 Token 获取方法,请参考准备工作:第 2 步

方式 1:直接上传

如果你的集群所在的网络可以访问互联网,你可以直接通过以下命令上传在第 2 步:采集数据中收集的数据包文件夹:

 

tiup diag upload

完成上传后,Diag 会提示诊断数据的下载路径 Download URL。你可以打开 Download URL 中的链接查看数据,也可以将 Download URL 中的链接发给与你对接的 PingCAP 技术支持人员。

方式 2:打包后上传

如果你的集群所在的网络无法访问互联网,你需要先在内网打包数据后,再将其数据包发送到网络连通的设备上进行上传。具体操作方法如下:

  1. 打包在第 2 步:采集数据中采集的数据,并对其数据包进行压缩和加密:

     

    tiup diag package $filepath

    打包时,Diag 会同时对数据进行压缩和加密。在测试环境中,800 MB 数据压缩后变为 57 MB。示例输出如下:

     

    Starting component `diag`: /root/.tiup/components/diag/v0.7.0/diag package diag-fNTnz5MGhr6 packaged data set saved to /home/qiaodan/diag-fNTnz5MGhr6.diag

    完成打包后,数据包为 .diag 格式。只有上传到 Clinic Server 后,该数据包才能被解密并查看。如需直接转发已收集的数据,而不在 Clinic Server 中查看,你可以自行压缩后转发数据。

  2. 使用可以访问互联网的机器上传数据压缩包。

     

    tiup diag upload $filepath

    完成上传后,Diag 会提示诊断数据的下载路径 Download URL。你可以打开 Download URL 中的链接,在 Clinic Server 页面进行数据查看,也可以将 Download URL 中的链接发给与你对接的 PingCAP 技术支持人员。

本地快速检查集群状态

你可以使用 Diag 对集群状态进行快速诊断。即使集群可以正常运行,也需要定期检查集群是否有潜在的稳定性风险。PingCAP Clinic 提供的本地快速诊断功能,用于检查集群潜在的健康风险,本地诊断只覆盖配置项检查。如果需要更全面的检查,推荐上传诊断数据包到 Clinic Server,使用 Clinic Server 提供的 Health Report 对 Metrics、日志和配置项进行全面的快速检查。

  1. 采集配置数据:

     

    tiup diag collect $cluster-name --include="config"

    配置文件数据较小,采集后会默认存放至当前路径下。在测试环境中,对于一个 18 个节点的集群,配置文件数据量小于 10 KB。

  2. 诊断配置数据:

     

    tiup diag check $subdir-in-output-data

    其中,$subdir-in-output-data 为采集数据的存放路径,其路径中存放 meta.yaml 文件。

  3. 查看诊断结果:

    诊断结果会在命令行中返回,示例如下:

     

    Starting component `diag`: /root/.tiup/components/diag/v0.7.0/diag check diag-fNTnz5MGhr6 # 诊断结果 lili 2022-01-24T09:33:57+08:00 ## 1. 诊断集群名称等基础信息 - Cluster ID: 7047403704292855808 - Cluster Name: lili - Cluster Version: v5.3.0 ## 2. 诊断数据来源信息 - Sample ID: fNTnz5MGhr6 - Sampling Date: 2022-01-24T09:33:57+08:00 - Sample Content:: [system monitor log config] ## 3. 诊断结果信息,包括发现的可能的配置问题 In this inspection, 22 rules were executed. The results of **1** rules were abnormal and needed to be further discussed with support team. The following is the details of the abnormalities. ### 诊断结果摘要 The configuration rules are all derived from PingCAP’s OnCall Service. If the results of the configuration rules are found to be abnormal, they may cause the cluster to fail. There were **1** abnormal results. #### 诊断结果文档的保存路径 Rule Name: tidb-max-days - RuleID: 100 - Variation: TidbConfig.log.file.max-days - For more information, please visit: https://s.tidb.io/msmo6awg - Check Result: TidbConfig_172.16.7.87:4000 TidbConfig.log.file.max-days:0 warning TidbConfig_172.16.7.86:4000 TidbConfig.log.file.max-days:0 warning TidbConfig_172.16.7.179:4000 TidbConfig.log.file.max-days:0 warning Result report and record are saved at diag-fNTnz5MGhr6/report-220125153215

    在上述示例诊断结果信息的最后一部分(即“#### 诊断结果文档的保存路径”)中,对于被发现的每一条潜在的配置问题,Diag 都会提供对应的知识库链接,以便查看详细的配置建议。在上面示例中,相关链接为 https://s.tidb.io/msmo6awg

常见问题

  1. 如果数据上传失败了,可以重新上传吗?

    可以。数据上传支持断点上传,如果上传失败了,可以直接再次上传。

  2. 数据上传后,无法打开返回的数据访问链接,怎么办?

    你可以先尝试登录 Clinic Server。如果登录后依然无法打开链接,请确认你是否拥有访问该数据的权限。如果没有权限,你需要联系数据所有人给你添加权限后,重新登录 Clinic Server 并访问数据链接。

  3. 上传到 Clinic Server 的数据后会保存多久?

    最长 180 天,用户可以随时通过 Clinic Server 页面删除自己上传的集群诊断数据。

     

猿创征文|国产数据库实战之使用docker部署tidb集群(代码片段)

猿创征文|国产数据库实战之使用Docker部署TiDB集群一、TiDB介绍1.TiDB简介2.TiDB特性3.TiDB集群整体架构4.TiDB集群各部分介绍5.本次TiDB集群组件二、检查本地环境1.检查docker状态2.检查docker版本3.检查docker-compose版本三、下载tidb-docker-comp... 查看详情

猿创征文|国产数据库实战之使用docker部署tidb集群(代码片段)

猿创征文|国产数据库实战之使用Docker部署TiDB集群一、TiDB介绍1.TiDB简介2.TiDB特性3.TiDB集群整体架构4.TiDB集群各部分介绍5.本次TiDB集群组件二、检查本地环境1.检查docker状态2.检查docker版本3.检查docker-compose版本三、下载tidb-docker-comp... 查看详情

猿创征文|国产数据库实战之使用docker部署tidb集群(代码片段)

猿创征文|国产数据库实战之使用Docker部署TiDB集群一、TiDB介绍1.TiDB简介2.TiDB特性3.TiDB集群整体架构4.TiDB集群各部分介绍5.本次TiDB集群组件二、检查本地环境1.检查docker状态2.检查docker版本3.检查docker-compose版本三、下载tidb-docker-comp... 查看详情

tidb-使用tiup在线搭建tidb集群(代码片段)

...建以及如何在docker中搭建环境,前面就讲到官方建议使用TiUP来搭建管理整个集群环境,下面我们来体验下。TiUP是TiDB4.0版本引入的集群运维工具,TiUPcluster是TiUP提供的使用Golang编写的集群管理组件,通过TiUPcluster... 查看详情

tidb查询优化及调优系列慢查询诊断监控及排查(代码片段)

本章节介绍如何利用TiDB提供的系统监控诊断工具,对运行负载中的查询进行排查和诊断。除了上一章节介绍的通过EXPLAIN语句来查看诊断查询计划问题外,本章节主要会介绍通过TiDBSlowQuery慢查询内存表,以及TiDBDashboar... 查看详情

在开发环境使用tiup安装tidb集群(代码片段)

...TiDB4.0版本引入的集群运维工具,TiUPcluster是TiUP提供的使用Golang编写的集群管理组件,通过TiUPcluster组件就可以进行日常的运维工作,包括部署、启动、关闭、销毁、弹性扩缩容、升级TiDB集群;管理TiDB集群参数。... 查看详情

在开发环境使用tiup安装tidb集群(代码片段)

...TiDB4.0版本引入的集群运维工具,TiUPcluster是TiUP提供的使用Golang编写的集群管理组件,通过TiUPcluster组件就可以进行日常的运维工作,包括部署、启动、关闭、销毁、弹性扩缩容、升级TiDB集群;管理TiDB集群参数。... 查看详情

必须收藏别再乱找tidb集群部署教程了,这篇保姆级教程来帮你!!|博学谷狂野架构师(代码片段)

TiDB基础使用TiDBdashboard使用TiDBDashboard是TiDB自4.0版本起提供的图形化界面,可用于监控及诊断TiDB集群。TiDBDashboard内置于TiDB的PD组件中,无需独立部署。集群概况查看集群整体QPS数值、执行耗时、消耗资源最多的几类SQL语句等概况... 查看详情

tidb-tidb集群的扩容和缩容及tiup指令说明(代码片段)

一、TIUP工具简介前面介绍了使用TIUP搭建TIDB集群,本篇文章详细介绍下使用TIUP对集群进行扩容和缩容。在面对双十一这种流量突峰的场景,我们平常的TIDB集群有可能承受不住,因此需要提前进行扩容,例如增加ti... 查看详情

通过tidboperator升级tidb集群

...级TiDB集群的版本,来减少对业务的影响。本文介绍如何使用滚动更新来升级Kubernetes上的TiDB集群。滚动更新功能介绍Kubernetes提供了​​滚动更新功能​​,在不影响应用可用性的前提下执行更新。使用滚动更新时,TiDBOperator会... 查看详情

tidb故障诊断与性能排查:发生即看见,一切可回溯,continuousprofiling应用实践

...#xff0c;如何提高数据库的可观测性,帮助运维人员快速诊断问题,优化故障处理流程一直是困扰着企业的一大难题。一次海量数据场景下的性能排查经历没有continuousprofiling的客户故障排查案例19:15新节点上线19:15-19:32上线... 查看详情

tiup部署tidb数据库集群

一、部署本地测试集群(Linux版本)适用场景:利用本地Mac或者单机Linux环境快速部署TiDB测试集群,体验TiDB集群的基本架构,以及TiDB、TiKV、PD、监控等基础组件的运行。1、创建tidb用户组及用户[root@tidbhome]#groupaddtidb[root@tidbhome]#u... 查看详情

tidb-使用tidblightning迁移mysql数据至tidb中(代码片段)

...Mydumper或CSV输出格式的数据源。你可以在以下两种场景下使用Lightning:迅速导入大量新数据。备份恢复所有数据。TiDBLightning主要包含两个部分:tidb-lightning(“前端”):主要完成适配工作,通过读取数据源ÿ... 查看详情

数据库必知必会:tidb(11)tidb数据库集群安装(代码片段)

(数据库必知必会:TiDB(11)TiDB数据库集群安装)TiDB数据库集群安装TiDB集群的安装,需要先安装一台中控机,然后通过中控机进行集群的安装及管理。单机环境上安装集群单机环境集群式将所有节点都安装在同一台服务器上。在... 查看详情

tidb-使用tidbbinlog实现数据复制(代码片段)

...og与TiDBv5.0版本开始引入的一些特性不兼容,无法一起使用,建议使用TiCDC替代TiDBBinlog。TiCDC在后面的文章中也会讲到。下面实现TIDB到Mysql的数据复制。二、在集群中扩容出pump和drainer当前的集群情况:tiupclusterdisplaytidb... 查看详情

tidb集群的可用性详解及tikvlabel规划

...1.TiKVLabel简介2.Label相关的PD调度策略解读3.TiKVLabel的规划4.使用Label的注意事项五、典型两地三中心跨中心高可用多活容灾备配置1.物理服务器主机配置2.服务器,机柜,机房,网络要求3.两地三中心集群的扩容策略分布式系统的核... 查看详情

tidb集群配置

架构图:650)this.width=650;"src="http://s4.51cto.com/wyfs02/M00/8A/4D/wKioL1gtLd_iGm76AACSTtDrgnU699.png"title="tidb.png"alt="wKioL1gtLd_iGm76AACSTtDrgnU699.png"/>准备前的工作:A、同步系统时间B、是否把刷屏日志写到一个文件里,可在启动命令后面追 查看详情

tidboperator恢复持久卷上的备份文件

...复方法基于TiDBOperator的CustomResourceDefinition(CRD)实现,底层使用​​BR​​工具来恢复数据。BR全称为Backup&Restore,是TiDB分布式备份恢复的命令行工具,用于对TiDB集群进行数据备份和恢复。常用场景当使用BR将TiDB集群数据备份到... 查看详情