1.安装

1.1 安装jemter

①下载地址: http://jmeter.apache.org/download_jmeter.cgi(Windows版本下载.zip,Linux版本下载.tgz)

②下载后无需安装,解压即可使用.解压目录如下:

jemeter中groovy和jexl3 的区别 jmeter prometheus_docker


③配置环境变量

新增JMETER_HOME环境变量,变量值为JMeter解压路径

jemeter中groovy和jexl3 的区别 jmeter prometheus_mysql_02


编辑CLASSPATH变量,加上%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\logkit-2.0.jar;

jemeter中groovy和jexl3 的区别 jmeter prometheus_linux_03


④打开jmeter

完成以上操作后打开JMeter中bin目录下面的jmeter.bat文件即可打开JMeter了,打开的时候会有两个窗口,Jmeter的命令窗口和Jmeter的图形操作界面,不要关闭命令窗口。

jemeter中groovy和jexl3 的区别 jmeter prometheus_mysql_04


jemeter中groovy和jexl3 的区别 jmeter prometheus_mysql_05


打开成功后,出现如下图界面即为成功

jemeter中groovy和jexl3 的区别 jmeter prometheus_mysql_06

1.2 安装docker

因为网上的安装方式较多,我这里就用自己常用的方式进行安装,可以参考:[docker安装方法]
(https://www.runoob.com/docker/centos-docker-install.html)
使用国内daocloud一键安装命令:

curl -sSL https://get.daocloud.io/docker | sh

测试docker是否安装成功(没报错,即成功):

dokcer --version

展示如下内容代表安装成功

jemeter中groovy和jexl3 的区别 jmeter prometheus_linux_07

1.3 docker安装prometheus

  • 拉取镜像包:
docker pull prom/prometheus
  • 启动镜像:
    prometheus.yml配置文件可以先不用配置,等我们启动了其它服务并需要监听时在配置
docker run -d --name=prometheus \
    --restart=always \
    -p 9090:9090 \
    -v /etc/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
    -v prometheus_data:/prometheus \
    -v /etc/localtime:/etc/localtime:ro \
    prom/prometheus
  • 命令讲解:
/etc/prometheus/prometheus.yml这是你云服务上的prometheus.yml的配置文件

-d:后台运行容器,返回容器ID
-name:为容器指定一个名称
--restart=always:当Docker重启时,容器能自动启动
-p: 指定端口映射 格式为: 主机port:容器port
-v或-volume: 绑定一个卷(简单说就是你云服务上文件和容器中的文件共享)
  • 验证:
    浏览器输入:http://ip:9090/targets
    打开如下界面说明成功了,没有内容是正常的,后面会进行配置的.


jemeter中groovy和jexl3 的区别 jmeter prometheus_docker_08


1.4 docker安装grafana

  • 拉取镜像包:
docker pull grafana/grafana
  • 启动容器:
docker run -d --name=grafana \
  --restart always \
  -p 3000:3000 \
  -v /etc/localtime:/etc/localtime \
  -v grafana-storage:/var/lib/grafana \
  grafana/grafana
  • 验证:
    启动成功后访问:http://ip:3000
    进入grafana界面说明成功了,默认用户密码为admin/admin


jemeter中groovy和jexl3 的区别 jmeter prometheus_压力测试_09

2.监控mysql

安装mysql等操作文章内容过多就不在这里写了
如果我们要监听mysql就需要下载mysql_exporter,这里我们也是使用容器安装mysql_exporter

2.1安装mysql_exporter

  • 拉取mysql_exporter镜像:
docker pull prom/mysqld-exporter
  • 启动mysql_exporter容器
docker run -d \
  --name mysql_exporter \
  --restart always \
  -p 9104:9104 \
  -e DATA_SOURCE_NAME="user:password@(my-mysql-network:3306)/" \
  prom/mysqld-exporter

注意:
	-e DATA_SOURCE_NAME="user:password@(my-mysql-network:3306)/"这行命令中,
	user:是你的数据库名称,
	passowrd:是数据库密码,
	my-mysql-network:是数据库的ip切记是ip没有http,
	3306:是端口,如果你的不一致你可以进行修改
  • 验证mysql_exporter容器是否启动成功:
    启动成功后就已经开始监听你的mysql了,验证:浏览器打开http://ip:9104/metrics
    打开如下图说明成功


jemeter中groovy和jexl3 的区别 jmeter prometheus_测试工具_10


2.2配置prometheus

  • 修改prometheus配置文件
# 这里配置文件就是之前你启动容器时映射出来的配置文件路径
vim /etc/prometheus/prometheus.yml

配置文件里填写如下内容:

scrape_configs:
  # 添加作业并命名(这个名称自己随便定义,不过最好是和你监听的服务有关)
  - job_name: 'mysql'
    # 静态添加node
    static_configs:
    # 指定监控端 ip:你服务器的ip  port:你启动mysql_exporter容器映射出来的端口(9104)
    - targets: ['{ip}:{port}']
  • 重新加载prometheus配置文件(重启容器即可)

jemeter中groovy和jexl3 的区别 jmeter prometheus_docker_11

# 查看prometheus的CONTAINER ID
docker ps
# 重启你的prometheus容器
docker restart {CONTAINER ID|NAMES}
  • 验证
    访问网址:http://{ip}:9090/targets,出现如下图片内容说明配置成功:


jemeter中groovy和jexl3 的区别 jmeter prometheus_测试工具_12



2.3配置grafana

  • prometheus自带的报告图表


jemeter中groovy和jexl3 的区别 jmeter prometheus_mysql_13



如果你觉得这个图表还可以那就不用配置grafana了

  • 配置grafana图表
  • 配置数据源-Data Sources

jemeter中groovy和jexl3 的区别 jmeter prometheus_mysql_14


jemeter中groovy和jexl3 的区别 jmeter prometheus_测试工具_15



jemeter中groovy和jexl3 的区别 jmeter prometheus_linux_16

  • 选择一个好看的grafana图表

打开网站:选择grafana图表

jemeter中groovy和jexl3 的区别 jmeter prometheus_测试工具_17


jemeter中groovy和jexl3 的区别 jmeter prometheus_docker_18



  • 导入grafana图表(这里我用的是7362)


jemeter中groovy和jexl3 的区别 jmeter prometheus_测试工具_19


jemeter中groovy和jexl3 的区别 jmeter prometheus_linux_20



jemeter中groovy和jexl3 的区别 jmeter prometheus_mysql_21



jemeter中groovy和jexl3 的区别 jmeter prometheus_mysql_22


3.监控主机系统

这里我们要监控主机系统,所以是不太建议讲其部署到Docker容器中,因为它需要访问主机系统,所以我们这里是直接安装在主机的,当然也是支持docker容器安装以及配置的,后面我会给一个借鉴网站,你可以在哪里去看看,这里就写我自己实战的

3.1安装node_exporter

  • 下载地址: exporter download,其中有各种exporter可供选择,监控主机我们选择node_exporter.



jemeter中groovy和jexl3 的区别 jmeter prometheus_测试工具_23


  • 将文件上传到云服务上去,再解压:
# 解压
tar -zxvf node_exporter-1.3.1.linux-amd64.tar.gz
  • 直接执行node_exporter文件
# 进入解压目录
cd node_exporter-1.3.1.linux-amd64
# 方式一:直接执行文件
./node_exporter
# 方式二:也可以进行后台启动进程(推荐)
nohup ./node_exporter >> output.log 2>&1 &
  • 验证,访问:http://ip:9100/metrics,出现如下信息说明成功:

jemeter中groovy和jexl3 的区别 jmeter prometheus_mysql_24

3.2配置prometheus

这里其实和mysql一样,以后你要新增一个exporter其实就是在配置文件中加一下就好了

  • 修改prometheus配置文件
# 这里配置文件就是之前你启动容器时映射出来的配置文件路径
vim /etc/prometheus/prometheus.yml

配置文件里填写如下内容:

scrape_configs:
  # 添加作业并命名(这个名称自己随便定义,不过最好是和你监听的服务有关)
  - job_name: 'node'
    # 静态添加node
    static_configs:
    # 指定监控端 ip:你服务器的ip  port:你启动mysql_exporter容器映射出来的端口(9104)
    - targets: ['{ip}:{port}']
  • 重新加载prometheus配置文件(重启容器即可)

jemeter中groovy和jexl3 的区别 jmeter prometheus_linux_25

# 查看prometheus的CONTAINER ID
docker ps
# 重启你的prometheus容器
docker restart {CONTAINER ID|NAMES}
  • 验证
    访问网址:http://{ip}:9090/targets,出现如下图片内容说明配置成功:

jemeter中groovy和jexl3 的区别 jmeter prometheus_测试工具_26


3.3配置grafana

  • 查看prometheus的图表

jemeter中groovy和jexl3 的区别 jmeter prometheus_测试工具_27

  • 配置grafana图表
    基本和mysql哪里配置的一样,先配置数据源,然后导入grafana图表,这里配置数据源就省略了,以及如何选择grafana图表都省略了
  • 选择好id然后导入


jemeter中groovy和jexl3 的区别 jmeter prometheus_docker_29


  • 效果展示:


jemeter中groovy和jexl3 的区别 jmeter prometheus_压力测试_30


4.jmeter+Prometheus+Grafana集成

在JMeter插件库中,有一些后端监听器可供Kafka、ElasticSearch和Azure使用。默认情况下,Jmeter支持Graphite和InfluxDB。但是Prometheus没有后端监听器。
幸运的是,找到了这个优秀的开源项目来为Prometheus导出JMeter指标
(https://github.com/johrstrom/jmeter-prometheus-plugin)

4.1安装JMeter-Prometheus插件

我们需要下载jmeter-prometheus-plugin-0.6.0.jar文件,然后将其放在/lib/ext中,重启Jmeter就可以了。
下载插件地址:下载地址一 下载地址二

  • 通过在JMeter中创建一个简单的脚本来验证安装,然后右击 线程组 > 添加 > 监听器 > Prometheus Listener,如下图:


jemeter中groovy和jexl3 的区别 jmeter prometheus_mysql_31


Prometheus Listener
或者右键点击 线程组 > 添加 > 配置元件> Prometheus Metrics


jemeter中groovy和jexl3 的区别 jmeter prometheus_压力测试_32



  • 运行JMeter测试,用几个线程配置你的线程组,并点击无限循环运行。插件会默认帮你在本地创建一个端口为9270的服务,你访问网址:http://localhost:9270/metrics就会看到如下内容:

jemeter中groovy和jexl3 的区别 jmeter prometheus_测试工具_33

4.2配置prometheus这里和上面的步骤都是一样的

这里我看了很多地方都是本地启动的这个服务,和influxdb不太一样,可以本地连接远程的。
我想了如下两种方法解决,这里留个疑问吧。
一、这里要不就是把jmeter在云服务上执行,然后它默认开的ip和端口绑定到prometheus配置文件中,然后就可以监控到
二、本地做内网穿透用netapp,然后把ip和端口绑到prometheus配置文件中,这样也可
三、不用prometheus去监控,改用infuxldb去监控,我后面出一篇infuxldb+jmeter+grafana的博客
总结:这里就不写了,上面两种方法都实践过了,是可行的,期待大佬们有更好的方法。

4.3配置grafana

如果你上面的监控mysql和监控主机都实战了,这里也就是OK的,差不多分享到这了,有问题可以评论区提出来。

5.总结

仅供自己学习记录,有不好的地方大家可以提出来,共同学习进步。