vlambda博客
学习文章列表

开源版全链路压测平台Takin安装和初步使用体验

Takin版本:v1.0.0

系统:CentOS7.X


参考网址:

https://github.com/shulieTech/Takin/blob/main/README_CN.md

https://github.com/shulieTech/LinkAgent/blob/main/doc/QuickStart.md

https://docs.shulie.io/docs/opensource/opensource-1d40ib39m90bu


全链路压测的概念提出来应该有不少年头了,现在许多大厂应该都有自己内部的全链路压测方案。当然我也查了下,阿里云在2020年也推出了云端的PTS服务,结合阿里云其它很多产品,它也能为很多公司提供服务。

但是,如果你想找到一个免费的,目前还是有点困难的。

就拿我们自己来说,我们目前的压测,在IDC机房,就是用jMeter、promethues、开源APM工具来做,上线前确实可以拿生产环境做一次或者多次。但是上线后,最多只能在生产环境做下查询类压测。

要说服务器监控、服务健康检查、链路监控这些,现在很多产品都有这些功能,最不济就是结合多个产品一起组合出来。我个人认为,在理念上,全链路压测最关键的,就是在压测的时候解决了生产环境压测的数据隔离问题

Takin的开发者团队——数列科技将自身沉淀了多年的全链路压测平台开源到社区,可以说是对广大技术公司的一种福利。

希望数列团队的这次举措能让他们在行业打响知名度并且能促进整个技术行业在压测这个领域能前进一大步吧。


下面就是我花了1-2天时间的一个简单安装和体验过程。

安装

1、docker准备

备注:鉴于部分同学可能未接触过docker,所以这里直接提供一些命令。当然也可以自行到docker官网查看。并且直接采用了root安装

参考:https://www.cnblogs.com/hellxz/p/11044012.html

卸载旧版:

yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine


删除旧版docker文件

rm /var/lib/docker/ -rf


安装依赖包:

yum install -y yum-utils \ device-mapper-persistent-data \ lvm2


添加阿里云镜像稳定版仓库:

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo


更新yum缓存:

yum makecache fast


安装docker

yum install -y docker-ce docker-ce-cli containerd.io


启动docker

systemctl start docker


2、拉取镜像和启动

具体在github的readme页更详细,这里只列出我执行的几个步骤命令

拉取镜像:

docker pull registry.cn-hangzhou.aliyuncs.com/shulie-takin/takin:v1.0.0


启动镜像

docker run -d -p 80:80 -p 2181:2181 -p 3306:3306 -p 6379:6379 -p 8086:8086 -p 9000:9000 -p 10032:10032 -p 6628:6628 -p 8000:8000 -p 6627:6627 -p 8888:8888 -p 29900-29999:29900-29999 registry.cn-hangzhou.aliyuncs.com/shulie-takin/takin:v1.0.0


启动后想直接登录进去是不行的,还需要做些其它更改(并且需要进入到docker容器里面)


官方说明是这样的:

我先改了index.html,然后改了上面脚本的。

然后这里,说了再执行,没说明白到底怎么执行,我就直接再做了一次./install.sh

结果就是发现在安装过程中,原来好多都安装过了(mysql又重新安装、很多文件都重新覆盖……)。

然后发现上面的index.html又被覆盖掉了。

然后仔细看了安装脚本和执行过程,发现应用基本都安装在了/data/apps下

所以上面这个手册里面修改index.html是修改了安装后的,而执行install会把原始的再覆盖进去,导致这个url又被该回来了。

反而上面那个脚本,因为是改的install,所以后面到/data/apps下面已经对了

这里的说明有一些问题,所以我被绕了一下


备注:这块在操作上不如jumpserver流畅,个人感觉可能是刚开源,确实有改进的地方。我觉得可以参考jumpserver,做个简单的安装包,下载好安装包,把一些配置提前修改好。然后再执行./install,在install的时候自动下载docker安装以及一系列事情,会更加友好,有利于初次使用的用户。

3、访问web

http://192.168.1.197/tro

默认账号密码:账号:admin 密码:pamirs@2020

开源版全链路压测平台Takin安装和初步使用体验

备注:上图是我已经加了两个应用,实际进来都是0

配置

1、下载agent和配置

把包传到服务器

需要修改agent.properties配置文件,需要把simulator.zk.servers修改掉

simulator.zk.servers=192.168.1.197:2181

修改simulator.properties配置文件,把tro.web.url修改掉

tro.web.url=http://192.168.1.197/tro-web


注意:agent.properties在simulator-agent/config目录下,simulator.properties在simulator-agent/agent/simulator/config目录下。开始以为系统默认没这个,还在simulator-agent/config建了一个simulator.properties文件,发现怎么配置都无效,一直会报以下错误。

开源版全链路压测平台Takin安装和初步使用体验

这个配置完之后,在应用启动脚本里面增加:

JAVA_OPTS=" --add-exports=java.base/jdk.internal.loader=ALL-UNNAMED"JAVA_OPTS="${JAVA_OPTS} --add-exports=java.base/jdk.internal.module=ALL-UNNAMED"JAVA_OPTS="${JAVA_OPTS} --add-exports=java.base/jdk.internal.misc=ALL-UNNAMED"JAVA_OPTS="${JAVA_OPTS} -javaagent:/home/harbinzg/app/simulator-agent/transmittable-thread-local-2.12.1.jar"JAVA_OPTS="${JAVA_OPTS} -javaagent:/home/harbinzg/app/simulator-agent/simulator-launcher-instrument.jar"JAVA_OPTS="${JAVA_OPTS} -Dpradar.project.name=harbinzg-access"JAVA_OPTS="${JAVA_OPTS} -Djdk.attach.allowAttachSelf=true"JAVA_OPTS="${JAVA_OPTS} -Dsimulator.delay=10"JAVA_OPTS="${JAVA_OPTS} -Dsimulator.use.premain=true"


注意:又一个坑,github上的说明里面还在说jdk9以上需要tools.jar,如果你信了,你的agent是怎么都启动不起来的。


上面的带到启动脚本一起即可。启动完之后,控制台会自动出来应用的(不需要手工添加)

开源版全链路压测平台Takin安装和初步使用体验

2、配置

1)应用配置

可以配置影子库、出口挡板、白名单、黑名单等等

开源版全链路压测平台Takin安装和初步使用体验

白名单这个我试了下,发现路径就算没设置,也能压测(可能是bug)


2)添加业务活动:

开源版全链路压测平台Takin安装和初步使用体验

看这个业务域的选项,感觉就是给电商用的。不知道这块和后续压测有无关联,还是只是后续展示的一种分类依据,如果是后者,下拉框加个其它也不是不可以

开源版全链路压测平台Takin安装和初步使用体验

3)编写压测脚本

因为是初步体验,所以直接接了我们应用中最简单的两个接口

下载最新版的jMeter5.4.1,并安装 Concurrency ThreadGroup插件

https://www.cnblogs.com/xioawu-blog/p/11127874.html

配置了最简单的http请求,并且把jmx文件上传

开源版全链路压测平台Takin安装和初步使用体验

4)添加压测场景

开源版全链路压测平台Takin安装和初步使用体验

里面可以设置各项目标指标、施压模式、SLA配置(终止和告警等)

压测

直接点击启动。

压测过程中可以看到实施压测的情况,5秒钟刷新一次。

压测完可以直接看压测报告。

开源版全链路压测平台Takin安装和初步使用体验
开源版全链路压测平台Takin安装和初步使用体验

当然这里右上角的性能分析报告(这里应该是有线程、CPU、GC等等),貌似看不到东西,不清楚是开源版没支持,还是安装过程中出现什么差错了。

最后

暂时未体验功能:

1、影子库;

2、挡板;

3、黑名单

后续体验了再继续写文章出来


不足的地方:

1、团队应该已经很努力做了,但是可能因为刚刚开源,所以安装步骤或者安装手册还有提升的地方(其实说白了,拉取镜像需要改两个配置、安装agent需要改两个配置,但是第一次安装下来就感觉有点折腾);

2、请求流量明细当中可以增加一个按照总耗时的排序(这个改动虽小,但属于很实用的一个功能);


从我们自身平时压测需求出发,其它觉得需要但没有的(企业版可能会有,或者做一定程度的定制化)

1、混合压测。平时我们用jMeter压测完单接口之后,会把相关的接口混在一起做一次混合型的压测,目前开源版Takin无该功能——企业版已经有的;

2、开源版只支持http(在请求头染色)。各行各业除了http,可能还会存在其他的协议,比如TCP/IP协议(很多自定义协议)、纯文件协议等等,这些有时候也需要压测。这块可以建议团队把平台做的更优化,可以快速开发自定义插件以便适配自己的协议——这个需要定制的;


当然,企业版比社区版要多实用的功能,这里就不做过多介绍,有兴趣的同学可以自行联系数列团队了解更多。