成都企业网站备案流程,备份整个网站,2021不良正能量免费网站app,表白网页生成软件下载前言
在做性能测试时#xff0c;如果有一个性能测试结果实时展示的页面#xff0c;可以极大的提高我们对系统性能表现的掌握程度#xff0c;进而提高我们的测试效率。但是我们每次打开Jmeter都会有几个硕大的字提示别用GUI模式进行负载测试#xff0c;而且它自带的监视器效…前言
在做性能测试时如果有一个性能测试结果实时展示的页面可以极大的提高我们对系统性能表现的掌握程度进而提高我们的测试效率。但是我们每次打开Jmeter都会有几个硕大的字提示别用GUI模式进行负载测试而且它自带的监视器效果实在一般在Windows下渲染效果不好在linux环境非GUI环境下更是无法使用这一点我在之前的文章中有过简单的描述。
所以在做性能测试时为Jmeter构建一个可视化的监控环境平台是非常有价值的。这也是这篇博客的目的。
首先我们来看一下最后的成品监控了TPS、并发、请求成功率、失败率、请求接收数据大小、平均响应时长、95%的请求平均响应时长等等。这里面的各个板块都是可自定义配置的无论多花里花哨都可以[奸笑脸] 业务服务监控精确到具体的接口 Mysql监控精确到具体的查询函数 Redis监控精确到具体的cache操作 组件简介
首先我们一起来简单了解下今天需要用到的这几个工具。
InfluxDB
一个开源的时序数据库,使用GO语言开发,特别适合用于处理和分析资源监控数据这种时序相关数据。
cAdvisor
Google用来监测单节点的资源信息的监控工具。Kubernetes中也缺省地将其作为单节点的资源监控工具各个节点缺省会被安装上Cadvisor。
Grafana
一款可视化度量分析和可视化套件常用于可视化基础设施和应用程序分析与Kibana类似UI更加灵活且插件丰富。
Jmeter
Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试它最初被设计用于Web应用测试但后来扩展到其他测试领域。 镜像安装启动
虽然直接部署、配置grafana、InfluxDB并不复杂但是使用docker部署会有更好的环境可移植性也更简单所以选择使用docker进行部署。
如果我们确定自己想要的镜像版本可以直接指定版本执行docker run来运行从而忽略掉拉取镜像的过程本文就是使用的这种方法。
但是有一点需要注意如果没有指定镜像版本直接运行docker rundocker主进程首先会在本地查找如未发现合适的镜像会直接到远程镜像仓库可以指定私有仓库拉取最新版本taglatest。
安装influxDB
docker run -d \-p 8083:8083 \-p 8086:8086 \--expose 8090 \--expose 8099 \--name influxsrv \tutum/influxdb安装cadvisor
docker run \--volume/:/rootfs:ro \--volume/var/run:/var/run:rw \--volume/sys:/sys:ro \--volume/var/lib/docker/:/var/lib/docker:ro \-p 8080:8080 \--detachtrue --link influxsrv:influxsrv \--namecadvisor \google/cadvisor:latest \-storage_driverinfluxdb \-storage_driver_dbcadvisor \-storage_driver_hostinfluxsrv:8086安装granfana
docker run -d \-p 3000:3000 \-e INFLUXDB_HOSTlocalhost \-e INFLUXDB_PORT8086 \-e INFLUXDB_NAMEcadvisor \-e INFLUXDB_USERroot -e INFLUXDB_PASSroot \--link influxsrv:influxsrv \--name grafana \
grafana/grafana各个参数含义
参数含义-d容器在后台运行-p将容器内端口映射到宿主机端口格式为 宿主机端口:容器内端口8083是influxdb的web管理工具端口8086是influxdb的HTTP API端口--expose可以让容器接受外部传入的数据--name指定容器名称--link--link [name/id]:alias, name和id是源容器的name和idalias是源容器在link下的别名在--link标签下接收容器就是通过设置环境变量和更新/etc/hosts文件来获取源容器的信息并与之建立通信和传递数据的。--volume把一个本地主机的目录当做数据卷挂载在容器上,[host-dir]:[container-dir]:[rw/ro],挂载点可以让多个容器共享。
storage| storage_driver/指定数据库类型、storage_driver_db/指定数据库实例、storage_driver_host/指定数据库host
镜像名称后面加冒号接tag能指定docker版本安装完成之后执行docker ps会看到下面的信息 也可以执行docker exec -it container-id /bin/bash进入容器内部查看信息比如我们拉取的grafana镜像的grafana版本是5.3.4。 influxdb配置
登录influxdb
我们在上面执行了docker run之后其实服务就已经起来了所以现在可以直接使用8083这个已经映射好的influxdb的web管理端口进行influxd的配置管理。
直接访问http://host-ip:8083/进入配置管理界面。点击配置管理界面右上角的 配置按钮图标 进入配置配置管理后台使用root/root登录。 创建cAdvisor应用数据库
在上图中我们可以看到influxdb提供了一些查询/操作数据的语句模版这对我们这些不太熟悉它的人写SQL非常有帮助。
比如我们选择模板CREATE DATABASE在输入框会出现CREATE DATABASE db_name把db_name 替换成我们的数据源cadvisor回车我们的数据库就创建完成了。接下来我们继续执行下面的SQL来完成用户的创建和授权
CREATE USER cadvisor WITH PASSWORD cadvisor
grant all privileges on cadvisor to cadvisor执行成功会有 Success! (no results to display) 的提示。
执行docker run 的命令的时候会生成的一串数字
查看cAdvisor信息
其实在上面我们执行docker run安装cAdvisor的时候cAdvisor就已经完成了我们访问http://host-ip:8080/containers/能看到下面的信息 granfana配置
我们在前面已经完成了grafana的部署启动访问http://host-ip:3000使用admin/admin即可登录配置管理后台如果不想修改密码可以选择跳过。 配置Granfana数据源
选择数据库类型为influxdbhost为http://influxsrv:8086填写cadvisor的账户密码 保存之后点击保存并测试 添加Dashboard
点击左侧的 号选择Dashboard选择graph 进入心界面后选择title选择编辑 在展示数据配置界面选择一个数据源比如内存点击保存即可完成该数据的动态展示 在配置界面Axes选项卡中配置相关的显示单位。可以根据实际的情况选择监控的单位。因为我们监控的内存所以选择的是相关的单位。 至此 所有配置步骤完成简单配置了两个图像 配置Jmeter监控
是不是很奇怪怎么说了那么久还是没有说到怎么配置Jmeter的监控其实做完前面的事情我们的测试环境就已经搭建完了在接入数据库之前我们可以使用前面的方法在influxdb建一张叫Jmeter的表然后在启动测试之前选择添加一个后端监听器并选择为 influxdb 数据库连接配置修改为我们搭建的真实host就可以运行测试了数据都会写入Jmeter这张表剩下的就是如何配置第一张图那样的花里胡哨的东西把它展示出来 下图是我简单选择的几个维度生成的监控图像红框标出的是可以选择的各种指标还有一部分没有罗列出来可以根据实际情况进行选择 总结
前面介绍的都是压力机的配置实际上性能测试还需要搭建性能测试环境、进行代码埋点等。
代码埋点我们是通过写一些公共的类库比如在操作redis、DB的方法的封装中添加
压测环境部署我们使用的是helm基于k8s封装chart文件夹的方式完成的可以快速的集成再结合Jenkins快速的完成性能自动化的持续集成。 资料获取方法
【留言777】 各位想获取源码等教程资料的朋友请点赞 评论 收藏三连
三连之后我会在评论区挨个私信发给你们~