您好,欢迎来到12图资源库!分享精神,快乐你我!我们只是素材的搬运工!!
  • 首 页
  • 当前位置:首页 > 开发 > WEB开发 >
    为JMeter用户和测试者预备的六种Docker镜像
    时间:2018-11-19 12:08 来源:网络整理 作者:网络 浏览:收藏 挑错 推荐 打印

    【51CTO.com快译】众所周知,一套好的容器会像一把瑞士军刀那样,有着一整套十分适用的工具集可供运用。假设您是一名Apache JMeter™和Docker的用户,那么拥有一套可用于功用测试的Docker镜像和容器是十分必要的。本文将向您引荐6种可用于功用测试的Docker镜像。

    在末尾之前,为了简化维护、隔离系统、并提高安全性,请您直接经过Docker来安装这些工具,而不要将它们安装到您的计算机环境中。你可以经过链接:https://www.blazemeter.com/blog/make-use-of-docker-with-jmeter-learn-how?utm_source=blog&utm_medium=BM_blog&utm_campaign=top-6-docker-images-for-jmeter-users-and-performance-testers,来了解更多如何在本地安装Docker。

    为JMeter用户和测试者预备的六种Docker镜像

    1. 无GUI的JMeter(https://hub.docker.com/r/vmarrazzo/jmeter/)

    JMeter镜像可以创立一个无GUI的JMeter执行容器。经过JMeter镜像,用户没必要再去设置诸如Java虚拟机和属性文件的环境,而只需求专注于创立测试脚本和测试资源(如数据文件)便可。

    由于去除了各种GUI、文档和插件(当然您可以自行添加),JMeter镜像显得十分轻巧,您可以在需求运转JMeter时快速、便捷地运用到它。

    我自行开发了一个JMeter镜像,它不但功用丰厚,而且灵敏地适用于各种JMeter的测试项目:

    轻量级 - 基于Alpine Linux(译者注:是由社区开发的、面向安全运用的轻量级Linux发行版)和OpenJDK,只要94Mb

    支持Apache JMeter 4.0 – 这是JMeter的最新版本

    插件可扩展性 - 您可以静态地经过Docker的卷(volume),向容器的执行添加各种插件

    JMeter命令行 – 由于镜像并不过滤任何JMeter的命令参数,因此它可以允许多种运转形式

    散布式形式 –在散布式形式下,该镜像可以被用来树立容器集群

    下面让我们来看几个例子:

    下面示例的命令是操纵一个容器来执行某个jmx脚本。留意该jmx脚本必须在与容器相反的机器上被执行。在测试终了后,容器会中止上去,并在执行机上留下报告和各种日志文件。

    export timestamp=$(date +%Y%m%d_%H%M%S) && \ 

    export volume_path=<where files are on host> && \ 

    export jmeter_path=/mnt/jmeter && \ 

    docker run \ 

      --volume "${volume_path}":${jmeter_path} \ 

      jmeter \ 

      -n <any sequence of jmeter args> \ 

      -t ${jmeter_path}/<jmx_script> \ 

      -l ${jmeter_path}/tmp/result_${timestamp}.jtl \ 

      -j ${jmeter_path}/tmp/jmeter_${timestamp}.log 

    第二命令是执行一个作为客户端的JMeter容器,以传递要执行的脚本。其中参数“-R”传递的是JMeter效劳器实例的IP地址。

    docker run \ 

      --net $TEST_NET --ip $CLIENT_IP \ 

      -v "${volume_path}":${jmeter_path} \ 

      --rm \ 

      jmeter \ 

      -n -X \ 

      -Jclient.rmi.localport=7000 \ 

      -R $(echo $(printf ",%s" "${SERVER_IPS[@]}") | cut -c 2-) \ 

      -t ${jmeter_path}/<jmx_script> \ 

      -l ${jmeter_path}/client/result_${timestamp}.jtl \ 

      -j ${jmeter_path}/client/jmeter_${timestamp}.log 

    2. InfluxDB(https://hub.docker.com/_/influxdb/)和Grafana(https://hub.docker.com/r/grafana/grafana/)

    InfluxDB和Grafana镜像都提供了一种开源的、时序的数据库功用。这两种功用弱小的Web工具可以搜集结构化的数据,并停止剖析。它们既可以被放在一同运用,又可以被独自运用。

    每个InfluxDB数据集都会包含几个由字段集和时间戳组成的“键-值”对。InfluxDB没有外部依赖性,却能提供一个相似于SQL言语的、内置的、以时间为中心(time-centric)的功用。该组件可以被用于搜集JMeter的统计数据。

    以下命令是在一个定制的Docker网络中执行InfluxDB容器。

    docker run --rm \ 

          --name influxdb \ 

          -dit \ 

          --net $TIME_SERIES_NET \ 

          -e INFLUXDB_DB=db0 \ 

          -e INFLUXDB_ADMIN_ENABLED=true \ 

          -e INFLUXDB_ADMIN_USER=admin \ 

          -e INFLUXDB_ADMIN_PASSWORD=passw0rd \ 

          -e INFLUXDB_USER=grafana \ 

          -e INFLUXDB_USER_PASSWORD=dbpassw0rd \ 

          -v $INFLUXDB_VOLUME:/var/lib/influxdb \ 

          influxdb 

    --rm 是在完成后自动删除容器,因此在重新启动时期并不会保留必要的容器信息

    --name 是正运转中的容器称号,可以在Docker网络中被用作域名

    --dit 运用本地shell在后台运转容器,也能被诸如远程ssh命令行所运用

    --net 分配一个由Docker处置的虚拟网络

    -e 向最近创立的容器传递环境变量。我们在此做了如下配置:

    INFLUXDB_DB - 本地数据库称号

    INFLUXDB_ADMIN_ENABLED、INFLUXDB_ADMIN_USER和INFLUXDB_ADMIN_PASSWORD – 为admin配置文件配置可用性

    INFLUXDB_USER和INFLUXDB_USER_PASSWORD - 配置供Grafana运用的、标准的用户配置文件

    -v 在主机上分配一个就算容重视启,也依然存在的逻辑卷。运用该卷,我们可以为必要的数据限制磁盘空间

    Grafana则是用于数据剖析和导出的弱小工具。Grafana并不直接连到JMeter,但它可以经过Docker被加到我们的进程中。

    如下命令可以执行Grafana容器:

    docker run --rm \ 

          --name=grafana \ 

          -dit \ 

          --net $TIME_SERIES_NET \ 

          -p 3000:3000 \ 

          -e GF_SECURITY_ADMIN_PASSWORD =adminpassw0rd \ 

          -v $GRAFANA_VOLUME:/var/lib/grafana \ 

          grafana/grafana 

    --rm 是在完成后自动删除容器,因此在重新启动时期并不会保留必要的容器信息

    --name 是正运转中的容器称号,可以在Docker网络中被用作域名

    --dit 运用本地shell在后台运转容器,也能被诸如远程ssh命令行所运用

    --net 分配一个由Docker处置的虚拟网络

    -e 传递GF_SECURITY_ADMIN_PASSWORD,即Grafana UI的密码

    -v 在主机上分配一个就算容重视启,也依然存在的逻辑卷。运用该卷,我们可以为必要的数据限制磁盘空间

    当该容器运转时,我们可以将Grafana的配置作为数据源,来分配给InfluxDB执行。

    (责任编辑:admin)