一、搭建Docker+Jmeter+InfluxDB+Grafana 搭建性能监控平台的需求和背景

需求:

1.1背景:

在用Jmeter获取性能测试结果的时候,由于报告只能自己看,无法实时共享;报告信息的展示比较简陋单一,不直观;

1.2需求方案:

为了解决上述问题,必须要请出了 InfluxDB+Grafana:

InfluxDB:持续型数据库,有时间戳组件,以时间的形式去存储数据

Grafana:一款采用 Go 语言编写的开源应用,主要用于大规模指标数据的可视化展现,是网络架构和应用分析中最流行的时序数据展示工具

简单总结起来就是:将 Jmeter 的数据导入 InfluxDB,再用 Grafana 从 InfluxDB 中获取数据并以特定的模板进行展示

本次实践是用目前较为流行的 Docker 的方式进行部署,也推荐使用,作为一名普通的测试,会了点 Docker 的皮毛就已经爱不释手了,对于头疼的环境问题真的太好用了,强烈推荐。

2、性能监控平台部署实践

2.1 Docker环境(本篇系统为centos7)

CentOS Docker 安装

Docker 支持以下的 64 位 CentOS 版本:

  • CentOS 7
  • CentOS 8
  • 更高版本…

该 centos-extras 库必须启用。默认情况下,此仓库是启用的

卸载旧版本

较旧的 Docker 版本称为 docker 或 docker-engine 。如果已安装这些程序,请卸载它们以及相关的依赖项。

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

安装 Docker Engine-Community

使用 Docker 仓库进行安装

在新主机上首次安装 Docker Engine-Community 之前,需要设置 Docker 仓库。之后,您可以从仓库安装和更新 Docker。

设置仓库

安装所需的软件包。yum-utils 提供了 yum-config-manager ,并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2。(如果报错了,需要删掉docker的依赖包,在/etc/yum目录)

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

使用以下命令来设置稳定的仓库。

$ sudo yum-config-manager \
    –add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

安装 Docker Engine-Community

安装最新版本的 Docker Engine-Community 和 containerd,或者转到下一步安装特定版本:

$ sudo yum install docker-ce docker-ce-cli containerd.io

如果提示您接受 GPG 密钥,请选是。

有多个 Docker 仓库吗?

如果启用了多个 Docker 仓库,则在未在 yum install 或 yum update 命令中指定版本的情况下,进行的安装或更新将始终安装最高版本,这可能不适合您的稳定性需求。

Docker 安装完默认未启动。并且已经创建好 docker 用户组,但该用户组下没有用户。

要安装特定版本的 Docker Engine-Community,请在存储库中列出可用版本,然后选择并安装:

2.1.1、列出并排序您存储库中可用的版本。此示例按版本号(从高到低)对结果进行排序。

$ yum list docker-ce –showduplicates | sort -r

docker-ce.x86_64  3:18.09.1-3.el7                     docker-ce-stable
docker-ce.x86_64  3:18.09.0-3.el7                     docker-ce-stable
docker-ce.x86_64  18.06.1.ce-3.el7                    docker-ce-stable
docker-ce.x86_64  18.06.0.ce-3.el7                    docker-ce-stable

2.1.2、通过其完整的软件包名称安装特定版本,该软件包名称是软件包名称(docker-ce)加上版本字符串(第二列),从第一个冒号(:)一直到第一个连字符,并用连字符(-)分隔。例如:docker-ce-18.09.1。

$ sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io

启动 Docker。

$ sudo systemctl start docker

通过运行 hello-world 映像来验证是否正确安装了 Docker Engine-Community 。

$ sudo docker run hello-world

【安装docker
   $ sudo yum install -y yum-utils \     # 安装依赖
    device-mapper-persistent-data \
    lvm2  
    $ sudo yum-config-manager \         # 安装配置管理
  --add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
$ sudo yum-config-manager --enable docker-ce-nightly
$ sudo yum-config-manager --enable docker-ce-test
$ sudo yum install docker-ce docker-ce-cli containerd.io
$ sudo systemctl start docker       # 启动docker
$ sudo systemctl status docker       # 查看docker状态
$ sudo docker run hello-world        # 运行hello-world
$ sudo docker images hello-world
$ sudo docker run hello-world       # 使用hello-world测试安装是否成功
$ sudo systemctl enable docker        # 开机启动




2.2 InfluxDB部署

1)首先去下载InfluxDB的镜像,下载很简单,直接pull就好,默认为下载最新的镜像:

$docker pull influxdb

目前最新的influxdb不支持网页端的查看,仅可用命令行的形式,不过没有什么影响,如果真的想要有网页端的显示的话可以尝试下载较前的镜像:tutum/influxdb

2)启动一个容器,并将端口8083和8086映射出来,如果用的是tutum/influxdb镜像,在访问8083端口时就可以看到网页端的展示,我这里用的是最新的,所以就没有啦:

$docker run -d –name jmeter-influx -p 8083:8083 -p 8086:8086 influxdb

 

 

3)进入容器内部,创建名为jmeter的数据库:

进入jmeter-influx容器

$ docker exec -it jmeter-influx bash

进入influx

 

 create database jmeter创建名为jmeter的数据库,show databases命令查看数据库创建成功

 

 use jmeter使用 Jmeter 库,select * from jmeter 查看数据,这个时候应该是没有数据的:

2.3 Jmeter脚本设置

这里需要创建一个登录注册场景的Jmeter脚本,往期文章有发布,本次就以此来进行测试结果演示。具体可参考之前发送的公众号文章。文章末尾的「往期回顾」第二篇文章即可阅读。
1)想要将jmeter的测试数据导入influxDB,就需要在Jmeter中使用Backend Listener配置

先看一下配置好的Backend Listener:


2)主要配置说明:
implementation选择influxdb所对应的:

 

influxdbUrl:需要改为自己influxdb的部署ip和映射端口,端口是容器启动时映射的8086端口,db后面跟的是刚才创建的数据库名称
application:可根据需要自由定义,只是注意后面在grafana中选对即可
measurement:表名,默认是jmeter,也可以自定义
summaryOnly:选择true的话就只有总体的数据,false会将每个transaction都分别记录

3)运行验证
运行Jmeter脚本,然后再次在influxdb中查看数据,发现类似下面的数据说明输入导入成功:

 

 

2.3、Grafana
1)首先我们需要下载grafana的镜像:

$ docker pull grafana/grafana

2)启动一个grafana容器,将3000端口映射出来:

$ docker run -d –name grafana -p 3000:3000 grafana/grafana

3)网页端访问locahost:3000(根据自己的)验证部署成功。初次登录时的账号密码是admin/admin;
首次进入会要求你改密码,安装操作来即可,到达首页;

4)选择添加数据源

 

 

5)找到并选择influxdb:

 

 

6)配置数据源

 

 

数据源创建成功时会有绿色的提示:

 

 

7)导入模板

模板导入分别有以下3种方式:
1、直接输入模板id号
2、直接上传模板json文件
3、直接输入模板json内容

 

 

8)下载模板,在grafana的官网下载我们需要的展示模板
https://grafana.com/grafana/dashboards?dataSource=influxdb&search=jmeter
下面这两个是我尝试过的模板:

9)导入模板,这里选择输入模板id号的方式,输入上面的模板,配置好模板名称和对应的数据源,然后import即可

 

 

 

 

 

10)展示设置,首先选择我们创建的application

 

 

注意:如果我们修改过表名,也就是在jmeter的Backend Listener的measurement配置(默认为jmeter),这个时候就需要去设置中进行修改(我这里使用的就是默认的,所以无需修改):

 

 

至此整个性能监控平台就已搭建好了

 

 

版权声明:本文为xiaochao-testing原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/xiaochao-testing/articles/12697704.html