Jmeter + Grafana + InfluxDB 1.8 性能测试监控

一、部署Grafana + InfluxDB

(一)、docker-compose部署Grafana + InfluxDB

1、docker-compose.yml文件
version: '3.9'
services:
  influxdb:
    image: influxdb:1.7.9
    ports:
      - '8086:8086'
    volumes:
      - influxdb-storage:/var/lib/influxdb

  grafana:
    image: grafana/grafana:latest
    ports:
      - '3000:3000'
    volumes:
      - grafana-storage:/var/lib/grafana
      - ./grafana-provisioning/:/etc/grafana/provisioning/
    depends_on:
      - influxdb
    environment:
      - GF_SECURITY_ADMIN_USER=${GRAFANA_USERNAME}
      - GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_PASSWORD}

volumes:
  influxdb-storage:
  grafana-storage:
2、.env文件

这里配置好了InfluxDB的数据库名、登录用户名、密码(密码不能太短,否则部署时报错),以及Grafana的登录用户名、密码。

GRAFANA_USERNAME=admin
GRAFANA_PASSWORD=admin
3、run.sh脚本
#!/usr/bin/env bash
docker-compose down
docker-compose rm
docker system prune
docker volume rm $(docker volume ls -q)
docker-compose up -d --build

执行run.sh脚本后,服务开始启动:

其他操作可参见,第二项,docker部署Grafana + InfluxDB。

二、docker部署Grafana + InfluxDB

(一)、安装部署influxdb

1、下载docker镜像

镜像查询地址:https://registry.hub.docker.com/

docker pull influxdb
2、创建docker实例
docker run -d -p 8086:8086 -p 8083:8083 --name=jmeterdb influxdb

这一步可以省略8083端口,因为新版本已经移除web控制台部分,在1.3版本之前还有web控制台。

3、创建数据库
[root@manager ~]# docker exec -it jemeterdb bash

#进入influx数据库
root@99cbc5ab7f20:/# influx
Connected to http://localhost:8086 version 1.7.9
InfluxDB shell version: 1.7.9

> show databases
name: databases
name
----
_internal

#删除数据库
> drop database jmeter

#创建数据库
> create database jmeter

> show databases
name: databases
name
----
_internal
jemeter
> use jmeter
Using database jmeter
>  

4、配置jemeter

首先,添加Backend listener

1580353722727

然后,选择influxdb组件,接着配置相关的参数,比如:连接的主机IP,apllication名称(可以随意命名),以及testtitle(任意命名)

1580353981744

5、检查数据库

首先,运行jemeter录制好的脚本

1580354208463

然后,测试数据库是否连接正确,有数据从jmeter传递过来时说明配置没有问题

> show databases
name: databases
name
----
_internal
jmeter

> use jmeter
Using database jmeter

> select * from jmeter
name: jmeter
time                application      avg      count countError endedT hit max maxAT meanAT min minAT pct90.0 pct95.0 pct99.0 rb      sb    startedT statut transaction
----                -----------      ---      ----- ---------- ------ --- --- ----- ------ --- ----- ------- ------- ------- --      --    -------- ------ -----------
1580358813328000000 test                           0              0     0          0                                           0               internal
1580358816460000000 test 257.2625 80    0                 80  345              147       311     331.55  345     1090940 37590          all    all
1580358816460000000 test                           10             10    8          1                                           10              internal

(二)、安装部署grafana

1、下载grafana镜像
docker pull grafana/grafana
2、创建docker实例
docker run -d -p 3000:3000 --name=jmeterGraf grafana/grafana
3、登录grafana

服务器地址:192.168.31.4;开放端口:3000

浏览器地址栏输入192.168.31.4:3000

首次登录时,用户名和密码分别为admin

1580359395714

4、添加grafana数据源

首先,选择数据源,这里选择influxDB

1580359610869

然后,配置数据源,这里将数据库地址填好:http://192.168.31.4:8086,access选择Browser也可以选择默认设置,Database填写创建的jmeter,其他的为默认。

1580359764788

最后,点击保存并测试,通过测配置成功。

1580359831132

5、导入bashboard

选择import导入bashboard模板

1580360444320

bashboard下载地址:https://grafana.com/grafana/dashboards/5496

1580391085605

导入模板

1580360506785

导入bashboard模板后,配置好数据库名称

1580360456108

成功导入后,展示监控表图

1580360543370

三、运行监控器

1、配置Backend Listener

在上述第一步中(安装部署influxdb)已详述此步骤,线程组中—>Add—>Listener—>Backend Listener

1580388361942

选择influxdb组件,接着配置相关的参数,比如:连接的主机IP,apllication名称(可以随意命名),以及testtitle(任意命名)

1580388849973

运行jmeter

1580354208463

2、监控器显示结果

1580389233527

四、存在问题

1、时间不同步问题
  • 问题描述:由于虚拟机和宿主机的时间不同步,导致监控器无法及时展示数据,只能展示application数据。

  • 问题排查:在linux系统中输入date命令,发现虚拟机和宿主机的时间不同步。

  • 处理方法:同步宿主机和虚拟机时间

1580389517493

2、influxdb的web无法访问
  • 问题描述:根据网上的教程,映射8083端口,但浏览器无法访问influxdb的web管理页面。
docker run -d -p 8086:8086 -p 8083:8083 --name=jmeterdb influxdb
  • 问题排查:

排查本机是否已经占用8083端口,结果显示没有占用

netstat -ano | grep 8083

排查是否防火墙导致端口拒绝访问,结果显示防火墙已经关闭

[root@localhost ~]# firewall-cmd --state 
not running
  • 问题解决:在influxDB1.3版本之前还有web控制台,在influxDB1.3版本之后已经移除web控制台部分。

五、附录

1、防火墙常用命令
1.查看防火墙状态:
firewall-cmd --state 
2.启动防火墙
systemctl start firewalld
3.关闭防火墙
systemctl stop firewalld
4.检查防火墙开放的端口
firewall-cmd --permanent --zone=public --list-ports
5.开放一个新的端口
firewall-cmd --zone=public --add-port=8080/tcp --permanent
6.重启防火墙
firewall-cmd --reload
7.验证新增加端口是否生效
firewall-cmd --zone=public --query-port=8080/tcp
8.防火墙开机自启动
systemctl enable firewalld.service
9.防火墙取消某一开放端口
firewall-cmd --zone=public --remove-port=9200/tcp --permanent
2、docker常用命令
docker pull images:下载镜像
docker run :创建容器实例对象
docker images:列出已下载docker镜像
docker ps:列出运行中的docker 容器 
docker ps –a:列出运行中+已停止docker 容器 
docker stop [docker container id]:停止容器
docker start [docker container id]:启动容器 
docker rm [docker container id]:删除容器
docker exec –it [docker container id] bash:进入容器内部
3、正则表达式

1580390513908

六、参考

1、jmeter + grafana + influxdb 2.0:https://www.jianshu.com/p/dd0456b8054c

2、jmeter + grafana + influxdb 2.0: https://mp.weixin.qq.com/s/msIT8iaU8tC8GF7sZDyaag

posted @ 2020-02-25 20:49  xyztank  阅读(444)  评论(0)    收藏  举报