基于jmeter+InfluxDB(2.x)+Grafana方案,搭建实时可视化压测监控平台
本文最后更新于294 天前,其中的信息可能已经过时,如有错误请发送邮件到zym27187@gmail.com

前言

为什么要搭建这个平台?

  首先jmeter是一个优秀的开源性能测试工具,它非常通用,多数公司的压测方案都会选择该工具。但是jmeter自带的聚合报告有很明显的缺陷:

  1. 只能自己看,分享不方便,缺乏实时性。
  2. 展示的信息比较简陋,不美观也不直观。

如上缺陷可能可以通过安装插件解决部分问题,但是无法完美解决。
因此我选择了influxDB+grafana的方案。

  • influxDB: 这是一个开源的时间序列数据库。它专门设计用于处理高度时间相关的数据,具有高性能和可扩展性,可以胜任jmeter的数据写入需求。
  • Grafana: 这是一个用于可视化和分析数据的开源数据仪表盘工具。它非常流行,提供了简单易用的用户界面,可以从多种数据源中获取数据,并将数据以图表、图形、表格等形式展示出来。Grafana支持实时监控、报警、告警以及自定义插件等功能。

这是该方案的数据流向图

file

部署

  本次也是通过docker-compose进行InfluxDB和Grafana的部署,jmeter安装过程则略过

InfluxDB(2.x)

本次部署的InfluxDB版本为2.7.5的,以下配置项仅适用于v2版本,不兼容v1版本和v3版本

1.x和2.x的区别

  • 2.x版本自带web-ui,可以输出简易的图像报表和管理数据,1.x则不带有web-ui,必须依靠第三方工具输出图像报表
  • 1.x 版本使用 influxQL 查询语言,2.x 和 1.8+(beta) 使用 flux 查询语法
  • 2.x相对于1.x移除了database,新增了bucket概念

总之变化较大,详细信息请自行搜索

容器部署

以下是docker-compose.yml文件内容

version: '3'

networks:
  web-network:

services:
  docker-influxdb:
    image: influxdb:latest
    container_name: influxdb
    restart: always
    ports:
      - "8086:8086" #HTTP UI and API port
    environment:
      DOCKER_INFLUXDB_INIT_MODE: "setup"
      DOCKER_INFLUXDB_INIT_USERNAME: "root" #创建管理员用户
      DOCKER_INFLUXDB_INIT_PASSWORD: "!a123456" #创建管理员密码,太简单会报错
      DOCKER_INFLUXDB_INIT_ORG: "org" #组织名称
      DOCKER_INFLUXDB_INIT_BUCKET: "my-bucket"
    volumes:
      - "./influxdb/data:/var/lib/influxdb2"
      - "./influxdb/config:/etc/influxdb2"
    networks:
      - web-network

官方推荐可视化工具chronograf部署(可选项,本文没有用到)

# 接上一个docker-compose文件内容
  docker-chronograf:
    container_name: chronograf
    image: chronograf:latest
    restart: always
    ports:
      - "8888:8888"
    environment:
      INFLUXDB_URL: "http://influxdb:8086"
      INFLUXDB_USERNAME: "root"
      INFLUXDB_PASSWORD: "!a123456"
      INFLUXDB_ORG: "org"
      INFLUXDB_TOKEN: "7p3ogq9FlWxF3ygez29049KfJRotlezkcAQ1GnvWrADN3ZaqiZStPLKlJLVcUT631LoWCI9R9DgZvzWoQ4xX0A=="
    volumes:
      - ./chronograf:/var/lib/chronograf
    networks:
      - web-network

关于INFLUXDB_TOKEN的获取:

cat ./influxdb/config/influx-configs

通过docker-compose 启动

docker-compose up -d

启动完成之后通过web-ui访问

# 自带ui
http://localhost:8086
# chronograf(可选)
http://localhost:8888

influxDB使用

登录

输入你创建容器时的管理员账号和密码

file

新建bucket

跳转至路径load data ——> buckets ——> buckets ——> create bucket 新建一个bucket

file

命名为'jmeter'
file

新建telegraf

telegraf的主要作用是权限,它可以控制写入和读取任意buckets数据的权限范围
tag切换至telegraf,然后选择create configuration

file

bucket这里选择jmeter,然后data from我这里选择的是docker(无影响)
file

创建成功后这里有一串token,复制保存下来
file

token管理

tag切换至api tokens,这里可以对之前创建telegraf的token进行管理,也可以创建读写任意bucket的root权限token(需注意安全)

file

Grafana

容器部署

部署教程已在之前的文章《Docker部署Grafana,开启https和匿名访问》提及,这里不再复述

连接数据源

跳转至路径首页——>连接——>数据源,选择添加新数据源

file

选择InfluxDB
file

数据源设置

  • Name:数据源名称,任意填写
  • Query Language:选择Flux,2.x版本必须选这个,1.x选择influxQL
  • URL:http://your_ip:8086
  • Organization:填写你的org名称
  • Token: 填写你telegraf的token
  • Default Bucket: 填写jmeter

file

file

设置完成之后,点击Save&test,测试连接数据源,连接结果会提示

file

新建仪表板

连接数据源成功后需要新建一个仪表板
路径跳转至首页——>仪表板,选择新建

file

这里我选择导入一个模板
file

这里可以通过加载json文件,或者输入模板id进行加载,模板id可以在官网查找
file

这里我选择填入id19950
file

保存后成功创建面板

jmeter(v5.6.3)

连接influxDB

jmeter新建一个后端监听器

file

监听器设置

  • 后端监听器实现:Jmeter 压测指标监听器的实现类,按使用的数据上报协议进行选择。本文使用influxdb协议上报压测指标数据,因此选择org.apache.jmeter.visualizers.backend.influxdb.InfluxdbBackendListenerClient。
  • 异步队列大小:指标处理一般队列大小,除非遇到性能问题,否则保持默认 5000 不变。
  • influxdbMetricsSender:metric sender 的实现类,保持默认即可。
  • influxdbUrl: http://你的influx服务器地址/api/v2/write?org=你的Organizations名称&bucket=你的Bucket名称
  • application:你的application name
  • measurement:你的bucket name
  • summaryOnly:选择true的话就只保留汇总数据结果,false会将每个transaction都分别记录
  • samplersRegex:保留 blank 或填 .* 表示上报所有 sampler 压测 metric。若按需上报,此处指定 sampler 的名称正则表达式。
  • percentiles:指定上报的百分位数据。
  • eventTags:可指定tag,如制定则存储在 events measurement 中。
  • influxdbToken: 填写你telegraf的token。

file

演示

在完成以上设置之后,如果设置正确,使用jmeter跑一个场景测试,可以查看数据成功写入influxDB,然后展示在grafana的面板上

file

展示面板demo

https://imad.fun:3000/

关于后续

  可以继续研究grafana,这是一个流行的可视化展示工具,支持连接多种数据源,可以考虑开发别的用途。

《基于jmeter+InfluxDB(2.x)+Grafana方案,搭建实时可视化压测监控平台》为原创文章,未经作者授权,禁止转载
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇