Docker set up
- 安装docker应用
https://docs.docker.com/desktop/install/mac-install/,在官网下载docker安装包,和安装其他的mac应用是一样的操作。
- 设置国内的镜像仓库(拉取镜像会快很多)
{
"registry-mirrors": [
"https://dockerproxy.com",
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com",
"https://ccr.ccs.tencentyun.com",
]
}
influxDB set up
docker官方文档:https://hub.docker.com/_/influxdb/
- 拉取镜像文件,使用
docker pull influxdb
命令
- 将influxdb2.0版本的config写入到宿主机当前目录下的config.yml文件中
docker run --rm influxdb:2.0 influxd print-config > config.yml
- 使用宿主机文件目录下的config启动influxdb2.0版本,将数据持久化到宿主机当前目录下的data文件夹中
docker run -d -p 8086:8086 \
-v $PWD/data:/var/lib/influxdb2 \
-v $PWD/config:/etc/influxdb2 \
-e DOCKER_INFLUXDB_INIT_MODE=setup \
-e DOCKER_INFLUXDB_INIT_USERNAME=my-user \
-e DOCKER_INFLUXDB_INIT_PASSWORD=my-password \
-e DOCKER_INFLUXDB_INIT_ORG=my-org \
-e DOCKER_INFLUXDB_INIT_BUCKET=my-bucket \
-e INFLUXDB_DB=jmeter \
influxdb:2.0
-
打开浏览器localhost:8086,检查服务是否正常启动,可使用my-user/my-password 进行登陆。
-
获取到my-user的token,后续要用在jmeter的监听器配置和grafana的数据源配置中。
-
获取到bucket的id,后续要用在influxdb client的配置中。
jmeter first running
- 准备测试的接口
- 添加backend监听器
- 具体设置如下图
influxdbUrl使用宿主机ip+8086端口;
db=jmeter指的是数据库名称,org=my-org,bucket=my-bucket,都是在启动influxdb的时候设置的名称;
measurement指的是表的名称;
influxdbToken是需要我们手动新增的一个参数,使用influxdb中my-user的token即可
- 运行jmeter,会发现请求都是成功的,但是日志表明写入influxdb异常
ERROR o.a.j.v.b.i.HttpMetricsSender: Error writing metrics to influxDB Url: http://192.168.60.242:8086/write?db=jmeter&org=my-org&bucket=my-bucket, responseCode: 401, responseBody: {“code”:“unauthorized”,“message”:“Unauthorized”}
我们可以通过安装influxdb client来解决此问题!
influxdb client set up
我们可以通过安装influxdb client来解决jmeter influx监听器无法向influxdb写入数据的问题
-
进入到influxdb的容器中,获取client的安装包
wget https://dl.influxdata.com/influxdb/releases/influxdb2-client-2.4.0-linux-amd64.tar.gz
-
解压安装包
tar -xzvf influxdb2-client-2.4.0-linux-amd64.tar.gz
-
创建influx client的配置,使其能够与influxdb连接成功(这里使用到influxdb中的token、org)
influx config create -n influxdb-cli-config -u http://127.0.0.1:8086 -o my-org -t 7FlFxXV1LVKu21o7fmDFID6LLBB9A92VVACeAApBAL4tuJVY0D0j_0laaE7aUowAKiEUGe_4rTl-oSU4J7CcEg== -a
-
创建库(这里使用到influxdb中的bucketId和DB名称jmeter)
./influx v1 dbrp create --db jmeter --rp jmeter --bucket-id afad123096ce5a98 --default
jmeter running again
在配置好了influxdb client之后,再次尝试运行jmeter脚本,这次不再报错了,我们可以通过curl查询influxdb中的数据,脚本如下(记得替换ip和token)
curl --get http://192.168.60.242:8086/query \
--header "Authorization: Token fASVB9QFnVJ7fxgLbGXpmmS01Cs8rV0j_r_8jvZklLxRlp4hQMGYmXL5MZBheqoLNtPiMahpHvz4jizyo-jAuw==" \
--data-urlencode "q=select * from jmeter.jmeter.jmeter order by time desc limit 10;"
another fantastic backend listener
后面改成使用这个RawBackendListener,也发现行得通(在网上搜了下,说这个raw的监听器是用来适配2.x版本的influxdb的,上面那个是用来适配1.x版本的)
grafana set up
注意点:
grafana上要填写本机的ip地址,比如http://192.168.60.242:8086,不能使用localhost或者127.0.0.1。
第一次尝试用编号为5496的模板,数据显示不出来,都是感叹号。
后面在官网上搜索了influxdb2(https://grafana.com/grafana/dashboards/?search=influxdb2),依旧是不展示数据
在网上搜啊搜,搜到了解决方案
- 升级了jdk,从8升级到11
- 下载了jmeter-influxdb2的插件,我用的是版本2.6,放到jmeter的lib/ext文件夹中,重启jmeter(https://github.com/mderevyankoaqa/jmeter-influxdb2-listener-plugin/releases)
- 如图所示,有了influxdb2的listener,选中它
- 编辑参数,主要是url、token、org、bucket
- 执行jmeter,查看grafana的influxdb2 dashborad,终于成了~