2021 年的TiDB Hackathon在狂欢中结束了,但是其余味却是久久难以消散。作为 TiDB十年老粉的选手,真的是十分有幸能够参加如此优秀的活动,但遗憾的是我们的TiCheck并没有获得一个很好的成绩,当青姐宣布20强的时候,我看看整整三遍名单,思索了很久,果然还是我们太弱了嘛。
第一天看完大家预选赛的答辩,虽说是能感受到在座各位大佬的强大,但是依旧抱有一丝丝的幻想自己的项目能够脱颖而出,直到最后结果出来的时候,我们也是继承某些优良的传统,各种找借口来安慰自己,比如,评委们都是一群干开发和大老板们,他们能懂个锤子的数据库运维,他们懂我们做运维的痛苦嘛?
好了,回来谈一谈咱们这个项- Automated checklist, 又叫TiCheck, 最早这个项目源自我们一个真实场景下的运维生活,大家都知道,数据库是一个非常重要的系统,尤其在一些十分注重安全和稳定的情景中,比如金融银行这些,那么数据库的管理和运维就十分的复杂和难受,举几个列子:
大量的日常操作必须都进行脚本化,一套数据库得整一两百个脚本,还得现写现审核,每当上头有个新的操作需求,你就得写一个脚本,最主要的是数据库脚本这个东西,很难去找到现有的直接用,每个DBA都有自己的小私库。
TiDB 有Grafana, Dashboard然后加上数据库SQL查询,共有三种方法获取数据库的不同信息,但是,当你的网络和权限受限的时候,你很难说去三个地方来检查数据库是否正常,同时每次查看集群信息,得从三个地方跳来跳去的,如果能有个统一的地方来查看这些,会不会非常舒服?
日常巡检,就是每天上去查看数据库是否正常,有无异常和隐患,TiDB有多稳,不需要多说了吧,再加上一堆监控和告警,能出什么问题呢?但是为了数据安全,你就必须每天上去巡查一边,把所有巡检指标过一遍,并且进行巡检记录,这个少则十几分钟,多则几小时的操作,在平稳运行的每一天都是折磨,你恨不得今天某个指标来点小问题,让自己显得有一丝价值。
历史记录的问题,数据库日常巡检之后,这些记录保存与否,如何保存,多久清理一次等等问题,同时如果想要查看历史巡检的情况,只能一份一份的看,如果想要看一段时间巡检的统计和分析,还得手动操作一波,而这个又是领导们常常想要的。
说到领导,领导经常会关心数据库状态是否正常,用的怎么样,这个时候,你得写一份领导看的懂的报告,加一些易懂的图图表表,如果你把那些Grafana和SQL查询结果拿过去,我只能说很难。最重要的是,当领导要看的时候,你得在最短的时间内拿出报告,不然有得好果子吃。
在这个项目中干了许久之后,我们渐渐发现,我们成为了一个又一个的操作机器,日复一日的脚本生成,日常巡检(点点点),文档生成。没多少技术含量不说,每天还显得异常忙碌,到底在忙碌些什么呢?
在写了无数个脚本之后,我的某个同事率先发难了,咱们现在讲的是一个什么?开源!共享!为什么就是没有人共享一下数据库脚本,做一个脚本仓库,大家把自己的脚本上传上去,也可以从上面下载各种各样的脚本,这难道不舒服?
确实,但第二个同事觉得,不如做一个巡检平台,最好一键巡检完,生成报告,免得每天花一堆时间做巡检写报告,跟个机器人似的,最好是那有那种可视化的展示模式,这样方便看,也方便应付老板们。
所以,为什么不两个合在一起呢?刚好就这次Hackathon,我们可以开发一个日常巡检平台,欸~,就是冲,说不定还能白嫖十万块钱。
这个平台可以干什么呢?
首先,它肯定可以一键跑一次日常巡检,关于巡检指标,可以自己添加不同的脚本和阈值来设定,进行自定义设置。并且你可以设置一个周期任务,比如说每天6点跑一次指定巡检。
然后有可视化平台,方便运维人员执行巡检任务,查看巡检指标状态,包括历史巡检记录和巡检分析,最近一周,一个月,一年出现较多的异常指标等
可以随意导出历史巡检记录,老板来了完全不慌,当然,你也可以通过这个平台来管理你的巡检历史文件,导出,修改和清理等。
最重要的来了,巡检的每个指标都是一个脚本,通过脚本,你可以将Dashboard, Prometheus 和 SQL 语句的结果统一输出到巡检指标中,再也不用开多个平台去查看集群状态。而且我们建立了远程脚本仓库,上面有大量现成的脚本共用户下载使用,你也可以书写自己的脚本贡献上去!
当然这个平台还可以集成很多其他的功能,这些功能也是我们未来规划的,但由于Hackathon时间有限没有实现的:
每日定时自动巡检完成后,可以对接用户的告警系统,对相应异常指标输出到告警系统之中,或者将报告通过短信的方式发送到相关运维人员,避免人员需要每天到机房查看。
通过历史巡检数据可以对集群状态进行深度分析,提前发掘集群可能存在问题,例如每日巡检到存储空间增长情况,来预测未来多少天会出现存储空间不足的情况。
加入根因分析功能(这个其实是我本来和另一个伙伴报名Hackathon比赛参加的项目,但由于他太忙了,就弃赛了),当发现巡检指标异常的时候,能够快速定位到集群问题的根本原因,方便运维人员的维护,避免长时间的集群排查。
Hackathon 只是一个开始,各种各样的花式idea在其中涌出,打开一扇扇新的大门,巡检平台这个项目,虽然没有取得较好的成绩,但是我们不希望巡检平台刚刚开始就结束了,因为我们相信,会有许多人 遇到我们这类似的运维问题,那么自动巡检平台就会有他存在的价值。
所以大家如果对于巡检平台有什么更好的想法,可以联系我们,对其进行优化,或是集成到其他平台一起使用。
Github: DigitalChinaOpenSource/TiCheck: TiDB automated checklist for hackathon 2021. (github.com)