Docker+Jmeter+InfluxDB+Grafana搭建性能监控平台
JMeter在执行时,我们是看不到看不到综合场景下的每个接口的实时处理能力,而原生的实时查看结果是有些鸡肋的,如果想实时且直观地看到每个接口的处理能力,我比较推荐 JMeter+InfluxDB+Grafana 的方式,基本流程如下图所示
InfluxDB 和 Grafana简单介绍
InfluxDB
InfluxDB 是 Go 语言编写的时间序列数据库,用于处理海量写入与负载查询。涉及大量时间戳数据的任何用例(包括 DevOps 监控、应用程序指标等)。我认为 InfluxDB 最大的特点在于可以按照时间序列面对海量数据时候的高性能读写能力,非常适合在性能测试场景下用作数据存储。
安装
安装方式一:基于 CentOS 7.0,直接输入以下命令行即可
1
2
3
4
5# wget htTPS://dl.influxdata.com/InfluxDB/releases/InfluxDB-1.1.0.x86_64.rpm
# rpm -ivh InfluxDB-1.1.0.x86_64.rpm
# systemctl enable InfluxDB
# systemctl start InfluxDB
# systemctl status InfluxDB (查看 InfluxDB 状态)
安装方式二:基于Docker安装(推荐的方式),输入下面的命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14# 1. 查找镜像
[root@lvjing ~]# docker search influxdb
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
influxdb InfluxDB is an open source time series datab… 1279 [OK]
telegraf Telegraf is an agent for collecting metrics … 466 [OK]
……
# 2. 拉去镜像
[root@lvjing ~]# docker pull influxdb:1.7.10
Using default tag: latest
latest: Pulling from library/influxdb
……
# 3.启动容器
[root@lvjing ~]# docker run -d --name jmeter-influx -p 8083:8083 -p 8086:8086 influxdb:1.7.10
cd5b2ae3d6f06cacc4f95d266139b8a76c40fef27987d67fff9b64627196b982注意:
- 云服务,需要在安全组添加端口
- InfluxDB 最新的版本(2.0.4)不支持以下的版本,因此重新拉取1.17.10的版本
基本使用
1 | linux 命令行模式下进入数据库 |
Docker安装完成InfluxDB后,进入到容器创建名为jmeter的数据库
1 | [root@lvjing ~]# docker ps |
使用 jmeter
库,select
查看数据,这个时候应该是没有数据的
1 | > use jmeter |
Grafana
Grafana 是一个跨平台的开源的度量分析和可视化工具,纯 JavaScript 开发的前端工具,通过访问库(如 InfluxDB),展示自定义报表、显示图表等。大多时候用在时序数据的监控上。Grafana 功能强大、UI 灵活,并且提供了丰富的插件。
安装
安装方式一:在 linux 命令行下直接输入以下内容即可:
1
2
3
4
5
6
7
8
9
10
11# 1. 下载 granafa
# wget https://dl.grafana.com/oss/release/grafana-6.4.4-1.x86_64.rpm
# 2. 安装,遇到需要输入的直接 y 就 ok;
# yum install Grafana-6.4.4-1.x86_64.rpm
# 3.启动 Grafana
# systemctl start Grafana-server
# systemctl enable Grafana-server
# 4. 配置文件路径,一般保持默认配置即可。
# /etc/Grafana/Grafana.ini
# 5.查看防火墙状态,防止出现其他干扰问题,最好关闭
# systemctl status firewalld.service登录访问 Grafana 访问:
http://ip:3000
(ip 自行替换,3000 为默认端口)
默认账号/密码:admin/admin安装方式二:基于Docker安装(推荐的方式),输入下面的命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14# 1.查找镜像
[root@lvjing ~]# docker search grafana
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
grafana/grafana The official Grafana docker container 1811
kamon/grafana_graphite All in one image running StatsD, Graphite an… 154
……
# 2. 拉取镜像
[root@lvjing ~]# docker pull grafana/grafana
Using default tag: latest
latest: Pulling from grafana/grafana
……
# 3.启动容器
[root@lvjing ~]# docker run -d --name grafana -p 3000:3000 grafana/grafana
3ab44d637061dde41914caa6cdab075f880e0c8244015218b1f3cbf709e249bf浏览器访问:http://ip:3000
默认账号/密码:admin/admin,会提示修改密码
JMeter脚本设置
完成上面的安装,接下来我们要学习如何将JMeter结合InfluxDB和Granfana展示结果了
JMeter的测试数据导入influxDB
需要在Jmeter中使用Backend Listener配置
查看Backend Listener中的配置
主要配置说明:
implementation选择influxdb所对应的:
influxdbUrl:需要改为自己influxdb的部署ip和映射端口,我这里是部署在本地,所以就是localhost,端口是容器启动时映射的8086端口,db后面跟的是刚才创建的数据库名称
application:可根据需要自由定义,只是注意后面在grafana中选对即可
measurement:表名,默认是jmeter,也可以自定义
summaryOnly:选择true的话就只有总体的数据,false会将每个transaction都分别记录
运行验证
运行Jmeter
脚本,然后再次在influxdb
中查看数据,发现类似下面的数据说明输入导入成功:
Granfana配置数据展示
添加数据源
搜索Influxdb数据源,进行添加
配置数据源
数据源创建成功时会有绿色的提示:
导入模板
模板导入分别有以下3种方式:
- 直接输入模板id号
- 直接上传模板json文件
- 直接输入模板json内容
下载模板,在Grafana的官网下载我们需要的展示模板:https://grafana.com/grafana/dashboards?dataSource=influxdb&search=jmeter
导入模板,我这里选择的是导入json文件的方式,导入后如下,配置好模板名称和对应的数据源,然后
import
即可确认信息,点击导入
完成导入后,选择数据源,注意:刚进来由于没有选数据源会报很多错,这是不要担心,选择数据源就好了
查看执行成果
以上就已经完成了JMeter+InfluxDB+Granfana平台的搭建了,下面我们就可以运行JMeter查看执行的结果了