1、自由定制JMeter镜像:

Dockerfile文件:

FROM java:8
# 基础镜像 MAINTAINER yangjianliang <526861348@qq.com>
# 作者 ENV http_proxy ""
ENV https_proxy "" RUN mkdir /test && \
chmod -R 777 /test
# 创建/test目录,用于存放jmx脚本、jtl结果文件、html测试报告文件 ENV JMETER_VERSION=5.1.1
ENV JMETER_HOME=/usr/local/apache-jmeter-${JMETER_VERSION}
ENV JMETER_PATH=${JMETER_HOME}/bin:${PATH}
ENV PATH=${JMETER_HOME}/bin:${PATH}
# 设置JMeter环境变量 ADD apache-jmeter-${JMETER_VERSION}.tgz /usr/local
# 添加JMeter RUN sed -i '$a sampleresult.default.encoding=UTF-8' /usr/local/apache-jmeter-${JMETER_VERSION}/bin/jmeter.properties && \
sed -i '159s/256/512/g' /usr/local/apache-jmeter-${JMETER_VERSION}/bin/jmeter
# 修改JMeter配置文件 RUN ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
echo "Asia/Shanghai" > /etc/timezone
# 设置时区

docker build -t jmeter .

# 打包JMeter镜像

mkdir test

# 在当前路径创建test目录

docker run -d -it --name jmeter5.1.1 -v $PWD/test:/test jmeter

# 启动

docker exec -it jmeter5.1.1 /bin/bash

# 进入容器内部

java -version

# 查看java版本

jmeter -v

# 查看jmeter版本

exit

# 退出

2、InfluxDB

docker pull influxdb

# 拉取influxdb官方镜像

mkdir influxdb

# 在宿主局当前目录下创建influxdb目录

docker run -d --name influxdb1.7.9 -p 8086:8086 -v $PWD/influxdb:/var/lib/influxdb influxdb

# 启动

暴露的端口:
8086 HTTP API端口
2003 Graphite支持
从1.1.0版开始不推荐使用管理员界面,并且将从1.3.0版中删除。

docker run --rm influxdb influxd config > influxdb.conf

# 生成默认配置文件

docker runn --rm表示在容器退出时自动清理内部的文件系统

会在宿主机当前目录下同步生成influxdb.conf配置文件

vim influxdb.conf

# 修改配置文件

把第96行enabled = false改为

enabled = true

把第98行database = "graphite"改为

database = "jmeter"

docker kill influxdb1.7.9

# 杀掉容器进程

docker rm influxdb1.7.9

# 删除容器

docker run -d --name influxdb1.7.9 -p 8086:8086 -p 2003:2003 -v $PWD/influxdb:/var/lib/influxdb -v $PWD/influxdb.conf:/etc/influxdb/influxdb.conf:ro influxdb

# 重启容器

docker exec -it influxdb1.7.9 /bin/bash

# 进入容器内部

influx

# 进入influx命令行

create database jmeter

# 创建jmeter数据库

show databases

# 查看所有数据库

use jmeter

# 切换到jmeter库

select * from jmeter

# 查看jmeter库里面所有的数据

exit

# 退出influx命令行

exit

# 退出容器

docker restart influxdb1.7.9

# 重启容器

docker inspect influxdb1.7.9

# 查看容器IP地址

3、发起压测

JMeter Backend Listener后端监听器:

influxdbMetricsSender:org.apache.jmeter.visualizers.backend.influxdb.HttpMetricsSender
influxdbUrl:http://host_to_change:8086/write?db=jmeter,例如:http://172.17.0.5:8086/write?db=jmeter
application:application name,被测试的应用名称,例如:测试应用,此值也作为名为“application”的标记存储在“events”中
measurement:jmeter,使用默认的”jmeter“就行
summaryOnly:false,为true的情况下,只输出所有请求的集合数据报告,为flase的情况下,输出每条数据的详情报告
samplersRegex:.*,正则表达式将与样本名称匹配并发送到后端,默认匹配所有
percentiles:90;95;99,要发送到后端的百分位数,多个值已;分割
testTitle:Test name,测试名称,默认的设置为Test name,该值作为名为“text”的字段存储在“transaction”度量中
eventTags:自定义标签,可以根据需要添加任意数量的自定义标签,对于它们中的每一个,只需创建一个新行并在其名称前加“TAG_”

docker restart jmeter5.1.1

# 先把baidu.jmx脚本放到宿主机的$PWD/test目录下,然后重启容器,这样容器的/test目录也会同步

docker exec -it jmeter5.1.1 /bin/bash

# 再次进入容器内部

jmeter -JN=20 -JT=60 -n -t /test/baidu.jmx -l /test/baidu.jtl -e -o /test/html

# 发起压测

cat jmeter.log

# 查看日志,理论上没报错的话数据应该已经写入了InfluxDB

exit

# 退出容器

压测停止后,宿主机$PWD/test目录下也会同步生成baidu.jtl结果文件与html测试报告目录

4、Grafana

docker pull grafana/grafana

# 拉取grafana官方镜像

docker run -d -p 3000:3000 --name=grafana6.5.3 grafana/grafana

# 启动

docker exec -it grafana6.5.3 /bin/bash

进入容器内部

cat VERSION

# 查看版本

exit

# 退出容器

访问:

http://127.0.0.1:3000/

账号:admin

密码:admin

首次登录会要求修改密码并二次确认

添加数据源,使用InfluxDB:

添加仪表盘:

去官网选择一个模板:

https://grafana.com/grafana/dashboards?dataSource=influxdb

例如JMeter模板:

https://grafana.com/grafana/dashboards/5496

填入5496:

等待一会儿:

Docker+JMeter+InfluxDB+Grafana从容器内部发起压测的更多相关文章

  1. Docker+Jmeter+InfluxDB+Grafana搭建性能测试监控平台

    搭建需求? jmeter自身的聚合测试报告可视化效果极差,为更加形象的.动态的展示测试过程,需要一个具有时序性的可视区来展示给我们的测试者, 这时候就需要用到后端监控,下面我们来开始搭建符合这种测试需 ...

  2. Docker系列——InfluxDB+Grafana+Jmeter性能监控平台搭建(三)

    在之前系列博文中,已经介绍完了数据采集和数据存储,那数据如何展示呢?所以今天就专门来讲下数据如何展示的问题. 以前博文参考: Docker系列--InfluxDB+Grafana+Jmeter性能监控 ...

  3. 性能工具之JMeter+InfluxDB+Grafana打造压测可视化实时监控【转】

    概述 本文我们将介绍如何使用JMeter+InfluxDB+Grafana打造压测可视化实时监控. 引言 我们很多时候在使用JMeter做性能测试,我们很难及时察看压测过程中应用的性能状况,总是需要等 ...

  4. jmeter+influxdb+grafana性能测试监控

    背景: 话说Jmeter原生的监控确实太丑了,听大佬们在讨论Jmeter+InfluxDb+Grafana的监控,于是,为了有一个漂亮的测试报告,就手动开始进行部署. 安装步骤: 1.influxdb ...

  5. influxDB1.6版安装与配置(windows环境)、Jmeter+influxDB+Grafana性能监控

    influxDB1.6版安装与配置(windows环境).Jmeter+influxDB+Grafana性能监控 来源:https://blog.csdn.net/SwTesting/article/ ...

  6. 实现理论上无tps上限的分布式压测(基于Jmeter+InfluxDB+Grafana+Spring Boot)

    JMeter自身带有Master-Slave压测框架,对于并发量不是很高的压力情况下(比如tps低于5000),该方案是可行的,并且使用起来非常方便,只要在配置文件或者命令行工具的参数做一些补充,即可 ...

  7. 搭建jmeter+influxdb+grafana压测实时监控平台(超详细,小白适用)

    1.前言 在使用jmeter做性能测试的时候,监控系统性能的时候,无论是使用插件还是报告生成,都没法实现实时监控.使用JMeter+Influxdb+Grafana可以实现实时监控. 本次环境搭建各软 ...

  8. Docker系列——InfluxDB+Grafana+Jmeter性能监控平台搭建(一)

    在做性能测试的时候,重点关注点是各项性能指标,用Jmeter工具,查看指标数据,就是借助于聚合报告,但查看时也并不方便.那如何能更直观的查看各项数据呢?可以通过InfluxDB+Grafana+Jme ...

  9. Jmeter监控平台搭建:JMeter+InfluxDB+Grafana

    背景 平时一般用Jmeter的Gui模式,添加对应的插件,查看每秒线程数.TPS.响应时间等曲线,其实高并发是不建议这么看的. 解决方案 可以搭配InfluxDB+Grafana工具,使Jmeter异 ...

随机推荐

  1. 解决在jsp页面中使用jstl无法遍历request域中list集合的问题

    解决在jsp页面中使用jstl无法遍历request域中list集合的问题 1. 前言 ​ 最近在写一个很简单的Javaweb项目,里面需要将request域中的list集合加载到jsp页面,我使用e ...

  2. Typora自动编号设置

    找到C:\Users\用户名\AppData\Roaming\Typora\themes\路径下的base.user.css,用文本编辑器打开(若不存在,则自己创建一个),将一下内容复制进去,然后重启 ...

  3. 为什么你SQL Server中SQL日期转换出错了呢?

    开发人员有时候使用类似下面SQL将字符串转换为日期时间类型,乍一看,这样的SQL的写法是没有什么问题的.但是这样的SQL其实有时候就是一个定时炸弹,随时可能出现问题(),下面简单对这种情况进行一个简单 ...

  4. LeetCode 面试题22. 链表中倒数第k个节点

    题目链接:https://leetcode-cn.com/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/ 输入一个链表,输出该链表中倒数第 ...

  5. Auto-Encoder(自编码器)原理

    1.无监督学习 无监督学习和监督学习是机器学习的两个方向,监督学习主要适用于已经标注好的数据集(如mnist分类问题),无监督学习则是希望计算机完成复杂的标注任务,简单的解释就是——教机器自己学习,它 ...

  6. poj 2528 线段树区间修改+离散化

    Mayor's posters POJ 2528 传送门 线段树区间修改加离散化 #include <cstdio> #include <iostream> #include ...

  7. 清北学堂—2020.1提高储备营—Day 2 morning(并查集、堆)

    qbxt Day 2 morning --2020.1.18 济南 主讲:李佳实 目录一览 1.并查集 2.堆 总知识点:基础数据结构 一.并查集 1.描述:并查集是一类十分常用的数据类型,它有着十分 ...

  8. 2020 kali linux 4 安装搜狗输入法

    kali linux 安装搜狗输入法之坑! 官方源: deb http://http.kali.org/kali kali-rolling main non-free contrib 国内源: deb ...

  9. c++多线程编程互斥锁初步

    上一次讲述了多线程编程,但是由于线程是共享内存空间和资源的,这就导致:在使用多线程的时候,对于共享资源的控制要做的很好.先上程序: #include <iostream> #include ...

  10. mongoose pushall不支持的错误记录

    该错误发生两次,第一次解决以后第二次碰到又没有想起来怎么解决. 因为采用mongoose+node的后端项目.有两个表实现多对多关系,再中间表不做关联,只在两个主表做了 testlist: [{ ty ...