背景
最近在研究Gatling,这是一款发布很久但在国内使用范围不是很广泛的压测工具。研究这款工具的理由很简单,很喜欢生成的html报告,本文会提供几张截图给大家一个直观感受,但这不是本文的重点,Gatling官网下载的版本不支持实时监控,只有在simulations结束后,打开html报告才能看到数据图表,这不符合我们边压测边看图表的习惯。
实时监控
官网说明文档中有关于实时监控章节的介绍,有兴趣的同学可以直接去官网看Realtime monitoring,本文要介绍的部署方式:influxdb + grafana采用docker部署,更方便便捷。
博主服务器环境为centos7,如为ubuntu、mac等环境,请自行研究,应该大致上差不多
部署
安装镜像
在安装influxdb和grafana镜像前,先安装docker环境和docker-compose环境。Docker-Compose是一个部署多个容器的简单但是非常必要的工具
- docker安装
# yum -y install docker
- docker-compose安装
安装Docker-Compose之前,请先安装 python-pip。
1、首先检查linux有没有安装python-pip包,终端执行 pip -V
# pip -V -bash: pip: command not found
2、没有python-pip包就执行命令 yum -y install epel-release
# yum -y install epel-release
3、执行成功之后,再次执行yum -y install python-pip
# yum install python-pip
4、对安装好的pip进行升级 pip install –upgrade pip
# pip install --upgrade pip
至此,pip安装好了,执行pip -V 再次检查pip环境。
# pip -V pip 9.0.1 from /usr/lib/python2.7/site-packages (python 2.7)
安装Docker-Compose
pip install docker-compose
检查docker-compose 安装:docker-compose -version
# docker-compose -version docker-compose version 1.18.0, build 8dd22a9
- influxdb镜像
# docker pull influxdb;
- grafana镜像
# docker pull grafana/grafana;
配置文件
在服务器/usr/local目录下创建monitor目录,并在monitor下创建两个目录influxdb和grafana
# ls monitor grafana influxdb
在influxdb目录下新建docker-compose.yml文件,文件内容如下:
# cat docker-compose.yml version: "2" services: influxdb: image: influxdb ports: - 8086:8086 - 2003:2003 environment: - INFLUXDB_GRAPHITE_ENABLED=true
8086端口为influxdb的监听端口,2003端口为gatling的监听端口
在grafana目录下新建docker-compose.yml文件,文件内容如下:
# cat docker-compose.yml version: "2" services: influxdb: image: grafana/grafana ports: - 3000:3000 environment: - GF_SERVER_ROOT_UR=http://127.0.0.1 - GF_SECURITY_ADMIN_PASSWORD=passwd
3000端口为grafana的监听端口
配置完influxdb和grafana后,我们再配置gatling内容,进入gatling的conf目录下,打开gatling.conf,按照实际情况修改如下内容:
配置文件配置完成后,然后就是依次启动influxdb和grafana服务
服务启动
influxdb启动
进入/usr/local目录下,执行如下命令:
# docker-compose -f monitor/influxdb/docker-compose.yml up -d
检查influxdb启动结果,运行命令docker ps
# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ffa5f8edeea6 influxdb "/entrypoint.sh influ" 2 hours ago Up 2 hours 0.0.0.0:2003->2003/tcp, 0.0.0.0:8086->8086/tcp influxdb_influxdb_1
进入influxdb容器,修改配置文件
# docker exec -it ffa5f8edeea6 bash root@ffa5f8edeea6:/#
安装vim编辑器
apt-get update apt-get install -y vim
修改influxdb配置文件,添加如下内容:
root@ffa5f8edeea6:/# vim /etc/influxdb/influxdb.conf [meta] dir = "/var/lib/influxdb/meta" [data] dir = "/var/lib/influxdb/data" engine = "tsm1" wal-dir = "/var/lib/influxdb/wal" [[graphite]] enabled = true database = "gatlingdb" templates = [ "gatling.*.*.*.* measurement.simulation.request.status.field", "gatling.*.users.*.* measurement.simulation.measurement.request.field" ]
influxdb配置文件修改后,需要重启容器,操作步骤如下:
1、退出influxdb容器
2、进入到/usr/local/monitor/influxdb目录下,执行命令docker-compose restart
grafana启动
进入/usr/local目录下,执行如下命令:
# docker-compose -f monitor/grafana/docker-compose.yml up -d
grafana管理后台操作
启动成功后,访问http://10.200.143.10:3000即可打开grafana管理页面,进入登录页面:
用户名默认为admin,密码为前面grafana目录下docker-compose.yml配置的密码,登录成功后看到的页面
配置完成后,点击保存,这里可能会遇到如下问题
解决方法:
1、进入influxdb控制台
# influx Connected to http://localhost:8086 version 1.4.2 InfluxDB shell version: 1.2.4
2、查看influxdb数据库
> show databases; name: databases name ---- _internal
确实没有gatlingdb数据库,但我们可能新建gatlingdb数据库
3、新建gatlingdb数据库
> create database gatlingdb; > show databases; name: databases name ---- _internal gatlingdb
说明gatlingdb数据库创建好了,然后就是导入实时监控模板,模板地址:https://github.com/gatling/gatling/blob/master/src/sphinx/realtime_monitoring/code/gatling.json
实时监控模板附件:gatling.json.zip
将模板json import到监控面板即可
终于弄好了,现在见证奇迹的时候到了,执行gatling的scala脚本,实时监控压测情况
实时监控图表