grafana默认用户名密码_Jmeter + InfluxDB + Grafana可视化实时监控

bb8d7c8a14443acc78ff95ae9e241ebf.png

陆思远 • 百信银行测试负责人

       提到性能测试,可能大部分测试人员最熟悉的工具肯定非jmeter莫属。前一阵子偶然情况下和朋友讨论起Jmete的相关测试结果收集与监控,说起来jmeter原生的监控确实太丑了。当年不断安慰自己说“丑一点没关系,只要能用,好用,就行了!”。但是内心并不是这样,做为一名测试人员,都应该有一颗精益求精的心。前几天正好看到篇方案可以替代原生的监控数据,趁着周六上午没事,实在按耐不住这颗躁动的内心,亲自动手在自己阿里云服务器上部署了一套。顺便也算给自己刚写的接口做了下压测,哈哈哈,感觉很棒。专栏的读者们,或者其他看到本文的朋友们,记得下次项目需要用jmeter做压测时,可以用起来这套,俺先帮你们淌遍坑。附上张效果图~哈哈

4b25ab287004f56b28539376fa40c4a7.png

细节图就不放太多了,想要什么数据,什么样式自己统计就好了~

bbb9a82e3c92165e304602dcccf50147.png

       是吧,很帅吧!数据是用InfluxDB来存储的,展示则是用Grafana来展示的

        InfluxDB是一个年轻的时序数据库,是用同样很年轻的语言“GO”开发出来的。小数据量的时候还性能还不错,但是数据量大一点,性能问题就体现出来了。不过只是收集一下几个小时测试的数据,还是足够了。要是几个月的测试数据那还是挑别的数据库吧。

        Grafana是纯粹用js编写出来的,专门用来展示数据用的。

        基本上,就是Jmeter通过“Backend Listener”,将测试的数据上传到我的虚拟机上,通过InfluxDB来存储,Grafana来展示出来。我们访问web,稍微配置一下,就可以看到展示的数据了。

        我的InfluxDB和Grafana都是部署在自己的一台阿里云服务器上,ip:xxx.xxx.xxx.xxx

根据自己理解简要画了下简要结构图:

ef3ebf5b0aed3a309f9b52e132c9a5d4.png

1. 安装InfluxDB

安装InfluxDB很简单,这里最好安装influxDB1.2版本的,因为后续版本取消了web可视化界面,不太方便。

下载rpm包:

wget https://dl.influxdata.com/influxdb/releases/influxdb-1.2.4.x86_64.rpm

安装:

yum install influxdb-1.2.4.x86_64.rpm

中间出现选项的时候输入 y

修改InfluxDB的配置:

主要配置jmeter存储的数据库与端口号,还有需要将UI端口开放

[root@localhost ~]# vi /xxx/influxdb/influxdb.conf

# 找到graphite并且修改它的库与端口

[[graphite]]

  enabled = true

  database = "jmeter"

  bind-address = ":2003"

  protocol = "tcp"

  consistency-level = "one"

# 找到admin,将前面的#号去掉,开放它的UI端口

[admin]

  # Determines whether the admin service is enabled.

  enabled = true

  # The default bind address used by the admin service.

  bind-address = ":8083"

  # Whether the admin service should use HTTPS.

  # https-enabled = false

  # The SSL certificate used when HTTPS is enabled.

  # https-certificate = "/etc/ssl/influxdb.pem

启动InfluxDB:

systemctl start influxdb

输入xxx.xxx.xxx.xxx:8083,查看web界面是否好用,如下图:

f86cf320e5d9f288103ecf57da93cc28.png

输入框中输入:CREATE DATABASE "jmeter" 创建新库。

2. 安装Grafana

安装:

sudo yum install 

https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-4.6.2-1.x86_64.rpm

这里我遇到了个问题,一直报这个错误:

30bd3115e2aed76cd47fcebb64e2fd1b.png

请教了一个运维大牛的朋友发现报错原因是因为连不上亚马逊的资源,哈哈,解决办法:先安装 epel

启动:

sudo service grafana-server start

浏览器访问 xxx.xxx.xxx.xxx:3000

默认端口:3000

默认用户名密码都是admin

登录:

添加需要展示数据的数据库

2c377898baa770010be99fd5e594a557.png

下面这张不想费功夫ps掉自己的ip等信息,找的张截图。。。

c8077f07affccfb97ede922122b79b8d.png

success代表数据库连接成功。

添加一个展示项目,这里面我先是自己添加了一个graph,然后需要edit,写各种sql啊等等。后来发现如果自己从零开始去设计一个好看的Dashboard太复杂繁琐了,就想着有没有制式的模版。搜了下果然Grafana官网已提供了丰富的模版库,大家可以直接去找到自己喜欢的样式,导入后再进行二次扩展。

官网模版库:https://grafana.com/dashboards

c252bf6934ff7f951bc26b5606014279.png

下载好json文件之后,导入即可:

7f4d37767c9d2b0c57f12d84a576c46b.png

不同的模版可能需要一些不同的插件和配置,注意下官网步骤已经标明:

83d821b060d9005381a983f4d8c9853d.png

3. Jmeter部分

这部分就不多赘述了,jmeter大家都会用,添加一个Backend Listener就好,上述的模版里面很多都会有具体的配置填写图,我就用刚刚自己写的接口做个demo试了一下:

7c0702f86b2a6199aefb5559abc90fb5.png

运行之后大家可以去InfluxDB里面输入:

select * from /.*/ limit 1

查看下jmeter的数据有没有写进来,这是我就在写本文这会刚刚运行的结果,看时间应该是时区原因导致比北京时间-8小时如下图:

597c71a3752fbda5873c1bc35423ada0.png

简要说明下这些数据表里面的指标:

线程数/用户相关指标

test.minAT-Min active threads:最小活跃线程数

test.maxAT-Max active threads:最大活跃线程数

test.meanAT-Mean active threads:活跃线程数

test.startedT-Started threads:启动线程数

test.endedT-Finished threads:结束线程数

响应时间指标

.ok.count:采样器的成功响应数

.h.count:每秒点击数

.ok.min:采样器成功最短响应时间

.ok.max:采样器成功最长响应时间

.ok.avg:采样器成功平均响应时间

.ok.pct:采样器成功响应百分比

.ko.count:采样器失败响应数

.ko.min:采样器失败的响应最短时间

.ko.max:采样称失败最长响应时间

.ko.avg:采样器失败平均响应时间

.ko.pct:采样器失败响应百分比

.a.count:采样器响应数(ok.count和ko.count的总和)

.a.min:采样器最小响应时间(ok.count和ko.count的最小值)

.a.max:采样器最大响应时间(ok.count和ko.count的最大值)

.a.avg:采样器平均响应时间(ok.count和ko.count的平均值)

.a.pct:采样器响应百分比(根据和失败样本的总数计算)

Backend Listener的默认百分位设置为“90;95;99”,即百分位数为90%,95%和99%。

Graphite使用点(“.”)去拆分的元素,这可能与十进制百分位值混淆。JMeter转换任何此类值,用下划线(“ - ”)替换点(“.”)。例如,“99.9 ”变为“99_9 ”

默认情况下,JMeter发送在samplerName“all”下累计的所有采样器的指标。如果配置了 BackendListenerSamplersList,那么JMeter还会发送匹配样本名称的指标,前提是配置 summaryOnly=true

再想详细了解的可以去jmeter官网查看:

http://jmeter.apache.org/usermanual/realtime-results.html

另外有个需要注意的点是可能我们观察发现统计出来的TPS与自带结果统计的不一致,这是是什么原因呢?

是因为Backend Listener这个组件中,有个叫Async Queue size的值,默认是5000,这个代表 JMeter 采集数据的速度,也就是 5 秒钟上传一次,如果你要计算 tps 的话,在监控的 sql 中,就要除以 5 ,当然,如果你的机器足够好,设置成 1 秒。就是真实的 TPS 了。

再后面比如这些数据如何进行各种分析、系统瓶颈等等,就需要长期项目经验积累与诸如“理发店模型来分析”等这些理论知识的长期学习来提高自己了。毕竟我们都知道,性能测试在测试结果获取收集这些步骤并不难,难的是如何从一堆数据中发现问题并进行分析定位~

哈哈哈,周六搞了一上午。。。有兴趣的小伙伴自己试一下吧~

ps:吐槽下最近写的几篇专栏只能在动态里看到并进入,进入专栏列表后只是数量增加,文章列表并没有增加。上周反馈给脉脉的qa后,一直到昨天的答复还是开发在排期解决。。。不知道是不是只有我自己这样。。。这难道不是个影响很大的线上bug吗~

来源:

https://maimai.cn/article/detail?fid=1076844984&efid=HLl78hEKmifLRO9TjXRMvA

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值