Jmeter:开源性能压测工具
安装位置:自己电脑
作用:并发测试、压测测试、稳定性测试
InfluxDB:开源时序型数据库
安装位置:性能服务器
作用:按时间标签的方式存放各种性能测试指标
Grafana:开源可视化监控工具
安装位置:性能服务器
作用:生成各种漂亮的性能指标图,方便插入性能测试报告中
telegraf:收集服务器性能代理程序
安装位置:性能服务器
作用:收集性能服务器的各种系统资源指标
安装Docker地址:安装Docker
docker pull influxdb
docker images
docker run --name myinfluxdb -p 8086:8086 -p 8083:8083 -d influxdb
–name myinfluxdb 启动镜像后就是个容器,给容器起个名字叫myinfluxdb
-p 8086:8086 -p 8083:8083 指定宿主机(Linux)的8086、8083端口与myinfluxdb容器的8086、8083端口对应
-d 后台运行
Influxdb 启动的镜像名
遇到的问题:Docker追加端口映射时报错WARNING: IPv4 forwarding is disabled. Networking will not work
解决方法:
编辑/etc/sysctl.conf
文件
vim /etc/sysctl.conf
在最后面加上如下代码,按ESC,输入:wq
保存并退出
net.ipv4.ip_forward=1
systemctl restart network
查看
sysctl net.ipv4.ip_forward
使用docker ps
命令查看运行中的容器,使用docker rm -f 容器的CONTAINER ID/NAMES
删除之前生成的错误容器,然后重新启动容器就可以了(从头执行3.后台启动influxDB镜像)
docker ps
地址:http://ip地址:8086/
例如:http://192.168.0.104:8086/
输入Username(用户名):admin,Password(密码):123456789,Confirm Password(确认密码),Initial Organization Name(初始组织名称):org-jmeter,Inital Bucket Name(初始桶名称):jmeter,点击Continue(继续)。注意:Inital Bucket Name(初始桶名称)必须是jmeter。
点击API Tokens,点击Generate API Token(生成Token令牌),点击Read/Write Token(读/写Token)
填写Description(描述):jmeter-Tocken,选择Read和Write的桶jmeter,点击Save(保存)。
注意:必须使用5.2以上版本
参考链接:后续补充
在后端监听器实现中选择InfluxdbBackendListenerClient,在influxdbURL中把http://ip:8086/api/v2/write?org=org-jmeter&bucket=jmeter复制进去并修改为自己的influxdb的ip地址,在application 中输入InfluxDB2,点击添加,在左侧输入influxdbToken,右侧输入的内容为 在InfluxDB中配置的外部读写Token:jmeter-Token的值。
注意:有时候可能没图,是因为你jmeter设置的线程数太低导致画不出来图,多跑几遍就好了。
docker pull grafana/grafana
docker images
docker run --name mygrafana -p 3000:3000 -d grafana/grafana
–name mygrafana启动镜像后就是个容器,给容器起个名字叫mygrafana
-p 3000:3000 指定宿主机(Linux)的3000端口与mygrafana容器的3000端口对应
-d 后台运行
grafana/grafana 启动的镜像名
地址:http://ip地址:3000/
例如:http://192.168.0.104:3000/
Name填写InfluxDB-jmeter,或者你也可以自己起个名字,Query Language(查询语言)选择InfluxQL,URL输入InfluxDB 地址,开启With Credentials(证书)。
在Custom HTTP Headers(自定义HTTP头)栏,点击+Add header,Header输入:Authorization, Value:Token +空格+在InfluxDB 的Data-API Tokens中配置的外部访问token:jmeter-Token的值,Database为jmeter(也就是InfluxDB设置的桶的名称),user为InfluxDB的账号admin,密码为InfluxDB的密码123456789,HTTP Method(HTTP方法)选择Get,点击Save & Test(保存和测试)按钮。
注意:在点击Save & Test(保存和测试)按钮后,可能会出现InfluxDB Error,Bad Gateway(坏网关)。
主要原因在服务器屏蔽从docker内部的访问, 修改服务器的防火墙设置即可。
# 添加端口(--permanent永久生效,没有此参数重启后失效)
firewall-cmd --zone=public --add-port=8086/tcp --permanent
# 更新防火墙规则
firewall-cmd --reload
进入网址https://grafana.com/grafana/dashboards,搜索jmeter,选择合适的模板并复制ID,咱们选择第一个就好。点击第一个进入。
点击Copy ID to Clipboard(复制ID到剪贴板)
点击+号,点击Import(导入)
输入ID,点击Load(加载)
DB name(数据库名称)选择InfluxDB-jmeter,点击Import(导入)。
由于InfluxDB2.0升级,使用新方式查询数据,不直接支持2.0之前的版本查询,而dashboard模板使用的还是旧方式查询,如果不进行新旧版本映射,则dashboard无法显示数据。
在命令行输入以下内容(需修改为自己的,下面有解释,建议把内容复制到.txt中,修改为自己的,然后再复制粘贴到命令行中)
curl --request POST http://localhost:8086/api/v2/dbrps \
--header "Authorization: Token YourAuthToken" \
--header 'Content-type: application/json' \
--data '{
"bucketID": "00oxo0oXx000x0Xo",
"database": "example-db",
"default": true,
"orgID": "00oxo0oXx000x0Xo",
"retention_policy": "example-rp"
}'
命令解释:
请求方法:POST
Token YourAuthToken:InfluxDB的对外读写Token:jmeter-Token,注意:需输入Token+空格+jmeter-Token值。
bucketID:桶的ID。位置在InfluxDB-Data-Buckets。
database:数据库名称,也就是桶的名称,咱们这里是jmeter
orgID:组织的ID,在InfluxDB的地址栏查看,咱们这里是07c5e203d2f6e65b
其他保持默认
运行结果:
docker pull telegraf
docker images
docker run --net=container:myinfluxdb --name mytelegraf -d telegraf
–net=container:myinfluxdb:设置与myinfluxdb容器在同一网络中
–name mytelegraf 启动镜像后就是个容器,给容器起个名字叫mytelegraf
-d 后台运行
telegraf 启动的镜像名
在InfluxDB中,Data-Buckets点击Create Bucket(创建桶)
Name输入telegraf,点击Create(创建)
在InfluxDB中,点击Data,点击API Tokens,点击Generate Token(生成Token令牌),点击Read/Write Token(读/写Token)
填写Description(描述):telegraf-Token,选择Read和Write的桶telegraf,点击Save(保存)。
在命令行输入以下内容(需修改为自己的,下面有解释,建议把内容复制到.txt中修改为自己的,然后再复制粘贴到命令行中):
curl --request POST http://localhost:8086/api/v2/dbrps \
--header "Authorization: Token YourAuthToken" \
--header 'Content-type: application/json' \
--data '{
"bucketID": "00oxo0oXx000x0Xo",
"database": "telegraf",
"default": true,
"org": "org-jmeter",
"retention_policy": "example-rp"
}'
命令解释:
请求方法:POST
Token YourAuthToken:InfluxDB的对外读写Token:telegraf-Token,注意:Token+空格+telegraf-Token的值。
bucketID:桶的ID
database:数据库名称,也就是桶的名称,咱们这里是telegraf
org:组织名称,咱们创建InfluxDB时的组织名是org-jmeter
其他保持默认
运行结果:
Data-点击Telegraf,点击Create Configuration(创建配置)按钮。
Bucket(桶)选择telegraf,选择System,点击Continue(继续)。
填写名称为telegraf,其他保持默认,点击Create and Verify(创建并验证)
第一步:您可以通过访问扩展数据下载页面安装最新的Telegraf。如果您的系统上已经安装了Telegraf,请确保它是最新的。您将需要1.9.2或更高版本。
咱们这里忽略。
第二步:进入mytelegraf容器
docker exec -it mytelegraf bash
复制第二步的命令,运行。注意:粘贴命令后可能在命令行显示错乱,不影响命令的运行,不用管。
复制第三步的命令,在最后面加&,意思是后台运行。注意:粘贴命令后可能在命令行显示错乱,不影响命令的运行,不用管,直接添加&即可。
按Enter键,查看进程ps -ef,看到已经启动
点击Listen for Data(监听数据)。
显示Connection Found!(找到连接!),点击Finish(完成)。
点击设置图标,选择Data sources(数据源),点击Add data source(添加数据源)
Time series databases(时间序列数据库)选择InfluxDB。
Name填写InfluxDB-telegraf,Query Language(查询语言)选择InfluxQL,URL输入InfluxDB 地址,开启With Credentials(证书)
在Custom HTTP Headers(自定义HTTP头)栏,点击+Add headers,在Header输入:Authorization, Value:Token +空格+在InfluxDB 中配置的外部访问token:telegraf-Token的值,Database为telegraf,user为InfluxDB的账号admin,密码为InfluxDB的密码123456789,HTTP Method(HTTP方法)选择Get。
点击Save & Test(保存和测试)按钮,提示Data source is working(数据源正在工作),表示配置已经好了,点击Back(返回)。
在地址栏打开https://grafana.com/grafana/dashboards/3967,复制ID。
打开Grafana,鼠标移动到+,点击Import(导入)
输入复制的ID,点击Load(加载)。
telegraf选择InfluxDB-telegraf,点击Import(导入)