【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。
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)