grafana后端二次开发详细流程

   日期:2024-12-26    作者:guomingzhanjiao 移动:http://oml01z.riyuangf.com/mobile/quote/56523.html


在使用JMeter做性能测试时,需要查看压测过程中请求的响应情况,如需要实时显示20w qps的压测数据监控,接下来使用JMeter+Influxdb+Grafana方案打造压测可视化实时监控

  • 数据流程

JMeter引入Backend Listener,用于在压测过程中实时发送统计指标数据给时序数据库Influxdb,通过配置Grafana数据源连接到Influxdb,就可以创建炫酷的可视化看板,并实时获取到测试指标数据

  • 处理流程图

2.1 时序数据库

处理带时间标签(按照时间的顺序变化,即时间序列化)的数据,带时间标签的数据也称为时间序列数据
可以理解成它就像一个sql表,其中时间是它的主键

2.2 influxdb

一款用Go语言编写的开源分布式时序、事件和指标数据库,无需外部依赖。该数据库现在主要用于存储涉及大量的时间戳数据,如DevOps监控数据,APP metrics, loT传感器数据和实时分析数据

2.3 数据DEMO

  • 通过grafana查询

数据:

  • 通过java查询

数据:

2.4 名词解释

  • 与传统数据库中的名词做比较
  • influxdb中独有概念

point由时间戳(time)、数据(field)、标签(tags)组成

3.1 jmeter配置

  1. 创建一个测试计划,并添加Backend Listener
  2. 设置Backend Listener中influxdb的url等信息
  3. 运行测试,等待运行一段时间
  4. 查看JMeter是否生成错误日志查看JMeter是否生成错误日志

字段信息

  • percentiles
    默认百分位设置为“90;95;99”,即百分位数为90%,95%和99%
  • summaryOnly
    summaryOnly=true且配置BackendListenerSamplersList时,jmeter还会发送匹配样本名称的指标

3.2 上报确认

查看fagent表中的数据

确定已经将统计指标数据成功发送到influxdb

4.1 grafana介绍

Grafana是一个开源软件,拥有丰富的指标仪表盘和图形编辑器,适用Graphite, Elasticsearch, OpenTSDB, Prometheus,InfluxDB
简单点说就是一套开源WEB可视化平台

4.2 grafana数据源配置

  • 打开页面选择配置数据源
  • 配置influxdb数据源信息

4.3 数据信息

  • 线程数/用户相关指标

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:采样器响应百分比(根据和失败样本的总数计算)

4.4 导入grafana展示模版

  • 导入文件


  • 模板json

如果从零开始自己设计一个好看的Dashboard,估计大家难度较大,其实grafana官网提供丰富的模版的库,可以自己上去找然后进行二次扩展官网模版库

在上面找了一个对应的模板,修改后的模板json数据 influxdb_grafana_v1.0

  • 导入模板

4.5 数据展示

需要展示像jmeter一样的聚合结果数据

5.1 数据上报

使用开源项目JMeter-InfluxDB-Writer对上报数据进行了二次开发

5.2 grafana配置

使用对应对的grafana配置信息,具体的json配置json数据

5.3 报告效果


6.1 问题描述

使用开源组件JMeter-InfluxDB-Writer进行数据上报,将jar放入到jmeter的lib/ext目录下

执行后发现报错

根据报错信息,应该是未支持https请求

6.2 查看源码

查看JMeter-InfluxDB-Writer源码中代码文件



在源码中已经增加influxHTTPScheme字段来解决这个问题,增加该字段设置,但是仍失败,为什么最新包请求https请求仍提示报错呢?

6.3 issue

查看issue,发现有issue提出对应的问题


此问题在另外一个issue中已经标为已解决

  • 解决代码


6.4 包版本

但是为何最新包打包日期在该代码提交时间之后,代码逻辑没有问题,但是为什么就是不生效呢?

解压最新的jar包

将文件 拖拽到IntelliJ IDEA,IDEA自动反编译为Java文件


发现其实最新包并未包含最新提交的代码其实也有人在issue中提到最新包版本的问题

6.5 重新打包

项目使用的是方式打包,根据文件

  • 依赖包
  • 打包操作
  • 调用异常

可正常打包,但是打包后调用jar包,抛异常


说明并未将依赖文件完全打包ok

  • 问题解决

使用一种比较搓的方式,替换文件:
将解决问题的代码问题通过maven打包然后替换原打包文件的对应InfluxDBConfig.class文件

重新压缩jar包后可正常调用

  • 新jar包

针对修复问题的代码进行了打包,但是不晓得为什么可以打包成功

下载后重新替换lib/ext上的jar文件,可正常实现逻辑


特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关最新动态
推荐最新动态
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号