一、作者声明
- TiHC 为 TiDB 爱好者开发工具,属于个人行为与 PingCAP 官方无关,请谨慎使用;
- TiHC 现阶段作者定义为 Alpha 版本,因此存在诸多 BUG 与不完善,生产环境请谨慎使用,如导致任何损失与作者无关;
- TiHC 的发版将在 Github 完成,鉴于国内用户可能由于 “科学上网” 原因无法登录 Github,作者还会同步在 Gitee 更新代码;
- 本篇文章的目的是希望 TiDB 爱好者初步体验 TiHC ,作者认为一个好用、有价值的工具软件不应该限于作者的个人脑补,而应切合真实的使用场景。因此,希望得到各位爱好者的宝贵意见并对 TiHC 不断加以改进。
- 鉴于声明 4 ,如果大家反馈 TiHC 没有使用价值,作者会果断终止丰富该工具的行为,欢迎文章留言。
二、TiHC 是什么
TiHC (TiDB Healthy Check) 是一个开源的、基于 rust 构建的 TiDB 巡检工具,目的是为缩短巡检时间,提高交付效率。与传统 Oracle、MySQL 等巡检工具使用 SQL 采集对应内存表、操作系统指标,最终生成 Html 巡检报告不同。因为 TiDB 排查问题的方法论基于 Grafana 监控指标构建,tihc 借鉴 TiDB 官方工具 tiup 分发 ssh 的原理,分布式采集各节点信息并整合 grafana 监控,最终生成可交付的巡检 Office Doc 文件。
TiHC 的作用 :
1. 对于 TiDB DBA 角色,节约 TiDB 巡检过程中大量可模版化工作;
2. 对于 Others DBA 角色,提供一套针对 TIDB 健康检查的简单方法;
Tips : TiHC 不期望探究所有性能细节,仅关注 TiDB 读写请求流中较为常见、重要的组件监控进行采集与分析。详细的根因分析还是需 Grafana 各组件配合分析、定论。
TiHC 价值何在 :
1. 作为非甲方 DBA 而言,存在巡检后需为客户出具巡检报告的工作场景,如果巡检的数据库是 TiDB ,那么 TiHC 可以为你缩短大量编写文档的时间,专心依据 Grafana 检查客户集群是否有问题便可;
2. 作为 TiDB 小白巡检 TIDB 数据库时,由于 TiDB 非按照常理的、非内存表信息、等待事件的巡检方法论经常导致手足无措,那么 TiHC 期望巡检报告从上至下浏览完后,可以列出很多预设的问题对常见风险简单预、判定、学习; 3.对 TiDB 巡检而言,据作者所知还处于一个依据 DBA 经验巡检阶段,即:不同 DBA 对 TIDB 的认识不同,巡检时侧重点也不同。这将会导致交付报告的给规范化,而 Oracle 由于强大的应用生态,很多爱好者写出来的巡检报告模版(Html)可以对其他 DBA 起到启发、规范作用,这也是 TiHC 期望做到的。 4. 另外,很多 “甲方爸爸” 其实根本不在意巡检报告的细节,只在意结论如何,TiHC 可以让你 1min 交差(前提是巡检下来,数据库真的没有潜在问题)。哈哈哈,点 4 就当做玩笑吧,其中真意需要读者自己领会😂
三、TiHC 的特性
-
采集 grafana 监控面板
调用 grafana-image-render 插件,获取指定时间段内的监控信息。
-
生成 Docx 巡检文档
TiHC 将收集的统计数据排版、生成 Office Word 文档模版,仅需少量修改便可直接交付客户。
-
轻量化巡检采集操作
TiHC 只需初次巡检时,配置 Grafana-image-render。此后,仅需要可执行文件便可完成全部巡检。
四、文档与快速上手
4.1 TiHC 文档
TiHC 遵循 terminal cli 使用风格,可 --help 或 -h 简单查看使用方法。
$ tihc % ./bin/tihc -h
TiHC 1.0
Jan Su
TiHC (TiDB Healthy Check) is a tool designed by RUST to reduce inquiry time and improve delivery efficiency.
USAGE:
tihc [OPTIONS]
FLAGS:
-h, --help Prints help information
-v, --version Print TiHC version
OPTIONS:
-c <cluster_name> The name of cluster which need to health check.
-t <grafana_end_time> The TSO of grafana end time which need to get images.
-p <grafana_pwd> Use password of target grafana. (default "admin")
-f <grafana_start_time> The TSO of grafana start time which need to get images.
-u <grafana_user> Use user name of target grafana. (default "admin")
-P <ssh_pwd> The password to login via SSH with "ssh_user".
-U <ssh_user> The user name to login via SSH.
针对安装部署、使用过程中遇到的诸多,非软件 BUG 问题作者创建了 Github Project Wiki FAQ,更多细节相见 TiHC Wiki。
4.2 快速上手
4.2.1 本地安装
首先,使用 TiHC 之前需要选择一个已经部署好 TiDB 的集群作为巡检目标;
其次,使用 TiHC 前需要在 TiDB 中控机的 tidb 用户下 ,执行脚本为 Grafana 配置插件 grafana-image-render,TiHC 作者准备了 deploy_grafana_image_render.sh
部署脚本。该脚本有两种部署模式 online
和 offline
两种;
下面仅展示 online 下载方式部署 grafana-image-render,至于 offline 方式请参考 Wiki 描述,部署过程中遇到的问题请参考 Wiki FAQ。
wget https://github.com/jansu-dev/tihc/releases/download/v0.1.0-alpha/tihc-v0.1.0-alpha-linux-amd64.tar.gz && \
tar -zxvf tihc-v0.1.0-alpha-linux-amd64.tar.gz && \
cd tihc-v0.1.0-alpha-linux-amd64 && \
chmod 777 ./deploy_grafana_image_render.sh && \
./deploy_grafana_image_render.sh CLUSTER_NAME online
最后,部署成功屏幕输出 [Log ] --> grafana-image-renderer has been downloaded and configed successfully!
,如下:
3.2 执行采集
使用一下命令执行巡检,详情见 TiHC Wiki Quick Start 部分。
./tihc -c xu-tidb \
-u admin \ # grafana 登录用户名
-p admin \ # grafana 登录密码
-U tidb \ # 各节点 ssh 登录用户名
-P tidb \ # 各节点 ssh 登录密码
-f "2022-03-17 14:00:00" \ # grafana 图像采集开始时间点
-t "2022-03-17 14:10:00" # grafana 图像采集结束时间点
当巡检命令发出后 terminal 输出如下,并且会在 tihc 可执行文件目录下找到的名为 tidb_check.docx
的文件。
最后,将 tidb_check.docx 文件从 tidb 中控机上取下打开,可双击查看生成的巡检文档。概览如下:
3.3 使用串讲
最后,附上 3 张操作全流程图,帮助大家串联上面的步骤拆解:
五、TiHC 源码编译
在本地安装 Rust 环境下,访问 tihc repo 直接获取源码至本地。使用 make 命令便可编译二进制文件。
# Get repo from github
git clone git@github.com:jansu-dev/tihc.git && cd tihc
# Build the tool by Makefile
make
# Get binary of tihc
ll ./bin/tihc
六、代码贡献与意见收集
- 作者作为 rust 的初学者,期待与大家一起构建 TiHC 工具,如有兴趣者可以直接提交 PR;
- TiHC 现在代码中缺少很多注释,作者会陆续将其补充完整,更好让感兴趣者参与其中;
- 针对使用过程中遇到的任何问题,大家均可通过 Issue 提问交流(主),或者本文下方留言(辅);
- TiHC 虽然简单将各模块抽离,模仿流水线设计模式构建,但因急于实现功能且代码实战应验少导致功能过于耦合,未来可能大幅度重构,欢迎来喷😂。