搭建基于Grafana+JMeter+InfluxDB的性能监控与分析平台(Linux版)

在软件开发和运维领域,性能监控与分析是确保应用稳定性和用户体验的关键环节。随着应用规模的不断扩大和复杂度的增加,传统的性能测试工具和方法已难以满足需求。本文将详细介绍如何搭建一个基于Grafana、JMeter和InfluxDB的性能监控与分析平台,帮助团队更好地监控和分析应用的性能指标。

一、平台组件概述

1. JMeter

Apache JMeter是一款开源的负载测试工具,它可以模拟大量用户对网站或应用进行并发访问,从而评估其性能表现。JMeter支持多种协议和脚本语言,能够灵活配置测试场景,并生成详细的测试报告。

2. InfluxDB

InfluxDB是一个开源的时间序列数据库,专为处理高写入和查询负载而设计。它支持存储大量时间序列数据,并提供强大的查询和分析能力,非常适合用于存储和分析性能测试数据。

3. Grafana

Grafana是一个开源的监控和数据分析平台,支持多种数据源,并提供了丰富的图表和可视化选项。通过Grafana,我们可以轻松地将InfluxDB中的性能测试数据以图表形式展示出来,实现实时监控和数据分析。

二、平台搭建步骤

1. 安装并配置InfluxDB

InfluxDB 官网下载地址:https://www.influxdata.com/downloads/

Platform选择Linux,并根据官网的提示,进行下载安装InfluxDB,若在无网络的情况下可使用有网环境浏览器下载。

# 创建文件夹
mkdir /opt/performance # 进入创建的文件夹
cd /opt/performance # 下载 influxdb
wget https://dl.influxdata.com/influxdb/releases/influxdb2-2.7.9_linux_amd64.tar.gz # 解压
tar xvfz influxdb2-2.7.9_linux_amd64.tar.gz # 进入到启动脚本位置
cd influxdb2-2.7.9/usr/bin/ # 启动服务并自定义配置8999端口(注意等于号后面的冒号)
./influxd --http-bind-address=:8999 &

访问页面,成功显示

登录后,创建数据库(Bucket),并记录关键数据。

字段 说明
User 用户名(登录时的用户名)
Password 密码(登录时的密码,或初次登录时设置的密码)
Organization 组织(点击菜单栏的头像,再点击About查看)
Token 具有操作数据库权限的Token(现在Token我也不知道存哪里了,我是又重新创建了一个满权限的)
Default Bucket 数据库名称(jmeter运行结果存储的地方)
  • 查看组织

  • 创建Token

  • 查看数据库

2. 安装和配置Grafana

Grafana 官网下载地址:https://grafana.com/grafana/download

# 进入创建的文件夹
cd /opt/performance # 下载 grafana
wget https://dl.grafana.com/enterprise/release/grafana-enterprise-11.1.3.linux-amd64.tar.gz # 解压
tar -zxvf grafana-enterprise-11.1.3.linux-amd64.tar.gz # 进入文件夹
cd grafana-v11.1.3 # 修改配置文件,如下图修改启用端口为8990
vim conf/defaults.ini

# 启动服务
./bin/grafana-server &

访问页面,成功显示。用户名 & 密码 均为 admin

3. 创建仪表板和分析视图

I. 添加数据源

点击 Configuration -> Data sources 进入数据源界面,再点击 Add data source 进入新增数据源界面。

点击 InfluxDB,创建InfluxDB数据源。

根据下面的步骤,填写表单:

  • Name

    • 名称自定义填写
  • Query Language

    • 查询语言选择 【Flux】
  • HTTP: URL

    • influxDB 地址根据自己的服务器填写
  • InfluxDB 信息

    • 填写步骤1记录的关键数据(User、Password、Organization、Token、Default Bucket)

点击 Save & Test,返回 ,说明配置成功

II. 创建仪表盘

点击 Dashboards -> Browse 进入仪表盘界面,再点击 New - > import 进入导入仪表盘界面。

仪表盘模板大全:https://grafana.com/grafana/dashboards/

可根据关键字查询想要的一些模板

点击详情可获取id或获取json文件,若配置环境无网络情况下选择json文件。

我这里输入仪表盘ID:13644(influxdb2查询语句),点击导入仪表盘。

选择刚刚配置好的数据源,点击 Import 导入仪表盘。

4. 配置JMeter以写入InfluxDB

Jmeter官方自带的 Backend Listener(后端监听器) 里面 influxdb 客户端没有适配新版的 grafana 的数据看板,所以我们这里自己去 github 上找个适配 influxdb2.0 的客户端jar包。

传送门:https://github.com/mderevyankoaqa/jmeter-influxdb2-listener-plugin/

注意:该插件需要jdk11的环境

我们把下载的jar包放到jmeter的扩展/lib/ext文件夹下。

启动Jmeter,添加线程组,添加http请求,添加后端监听器,选择github下载的插件。

插件字段配置信息:

  • testName:测试名称
  • nodeName:服务器的名称
  • runId:标识号
  • influxDBHttpScheme:InfluxDB的协议
  • influxDBHost:InfluxDB服务器的主机名或 ip
  • influxDBPort:InfluxDB服务器的端口
  • influxDBToken:InfluxDB的Token
  • influxDBOrganization‍:InfluxDB的组织名称
  • influxDBBucket‍:InfluxDB的数据库名
  • influxDBFlushInterval:向 InfluxDB 发送数据的时间间隔
  • influxDBMaxBatchSize:批次的最大大小
  • influxDBThresholdError:停止导入前的错误阈值
  • samplersList:整理JMeter采样器结果的正则表达式值
  • useRegexForSamplerList:是否允许使用正则表达式
  • recordSubSamples:是否允许保存 JMeter 子样本
  • saveResponseBodyOfFailures:是否允许保存失败的响应正文
  • responseBodyLength:响应正文不超过设置的指定长度

我们可以根据需要进行填写,只修改加粗部分即可。

执行JMeter脚本,查看仪表盘

三、平台应用与优势

  • 应用场景

    • 实时监控:通过Grafana的仪表板,可以实时监控应用的性能指标,及时发现潜在的性能问题。
    • 历史数据分析:利用InfluxDB存储的历史数据,可以进行更深入的性能分析,找出性能瓶颈和趋势。
    • 性能调优:基于监控和分析结果,对应用进行性能调优,提升用户体验。
  • 优势
    • 开源免费:JMeter、InfluxDB和Grafana都是开源软件,可以免费使用,降低了成本。
    • 灵活可扩展:平台支持自定义测试脚本和查询语句,可以根据实际需求进行灵活配置和扩展。
    • 可视化效果好:Grafana提供了丰富的图表和可视化选项,能够直观地展示性能测试数据。

注:安装方法不唯一,且各个教程安装版本也不相同

搭建基于Grafana+JMeter+InfluxDB的性能监控与分析平台(Linux)的更多相关文章

  1. 搭建grafana+telegraf+influxdb服务器性能监控平台

    最近在学习性能测试,了解到一套系统资源使用率低的监控环境,也就是grafana+telegraf+influxdb. InfluxDB是一款优秀的时间序列数据库,适合存储设备性能.日志.物联网传感器等 ...

  2. Centos8.X 搭建Grafana+Jmeter+Influxdb 性能实时监控平台

    前言 本篇文章引用了小菠萝测试笔记,大部分内容非原创,基于自身实操过程中,完善了部分. 本篇随笔是在Linux上搭建的,后面会补充在docker以及k8s上如何部署安装 工具介绍 工具 介绍 Jmet ...

  3. Centos7.X 搭建Grafana+Jmeter+Influxdb 性能实时监控平台(不使用docker)

    工具介绍 [centos7安装influxDB] Influxdata官网下载路径:https://portal.influxdata.com/downloads/ 1.直接执行以下命令安装 2.安装 ...

  4. 全网最详细!Centos7.X 搭建Grafana+Jmeter+Influxdb 性能实时监控平台

    背景 日常工作中,经常会用到Jmeter去压测,毕竟LR还要钱(@¥&*...),而最常用的接口压力测试,我们都是通过聚合报告去查看压测结果的,然鹅聚合报告的真的是丑到家了,作为程序猿这当然不 ...

  5. Centos7 搭建Grafana+Jmeter+Influxdb 性能实时监控平台

    未完,待更新 背景 日常工作中,经常会用到Jmeter去压测,毕竟LR还要钱(@¥&*...),而最常用的接口压力测试,我们都是通过聚合报告去查看压测结果的,然鹅聚合报告的真的是丑到家了,作为 ...

  6. web性能监控与分析

    注:原文为:andyguo: <web性能监控与分析> 性能测试需要使用不同的工具,结合系统日志,监控服务器.应用等方面的多项指标.以下阐述监控指标.监控工具.瓶颈分析. 服务端监控指标 ...

  7. Linux性能监控与分析之--- CPU

    Linux性能监控与分析之--- CPU 望月成三人关注 2016.07.25 18:16:12字数 1,576阅读 2,837 CPU性能指标 用户进程使用CPU的比率 系统进程使用CPU的比率 W ...

  8. .Net Core 2.*+ InfluxDB+Grafana+App Metrics实时性能监控

    前言 .net core 2.* 实施性能监控 这个工具其实给运维 大大们用起来是更爽的.但是Grafana现在还没有找到中文版. 本文需要了解的相关技术与内容: InfluxDb(分布式时序数据库, ...

  9. 手把手教你搭建Windows 搭建Prometheus + Grafana + Jmeter可视化监控平台

    下载安装包 Prometheus windows_exporter Grafana 下载地址:https://share.weiyun.com/D9sdiWoC 工作原理 Exporter 监控工具, ...

  10. Grafana + Influxdb Android性能监控部署

    目录 前言 一.前提准备 二.安装 Grafana 三.安装 Influxdb 四.Grafana 添加 Influxdb 数据源 五.Shell 脚本写入数据到 Influxdb 前言 你是否为了数 ...

随机推荐

  1. 关于xml文件解析时'&'不能被解析的问题

    Bug情况:在解析xml文件的时候,&字符解析错误 解决方式:将符号进行转义

  2. 使用nginx 解决开发过程中的跨域问题

    遇到的问题 在开发vue 前端程序时,我们会创建多个项目,比如用户管理为一个应用,系统管理为一个应用,这样多个应用势必需要开多个端口,这样问题就来了,我们在登录后会生成一个token,这个token我 ...

  3. GooseFS透明加速能力,助力加速 CosN 访问 COS 的性能

    01 前言 原生的对象存储接口协议并不兼容HDFS文件语义,因此对象存储COS提供了COSN工具这一的标准的 Hadoop 文件系统实现,可以为 Hadoop.Spark 以及 Tez 等大数据计算框 ...

  4. FineReport模板性能问题排查方法

    1. 概述 模板的加载速度受到很多因素影响,如果一个模板预览的时候,加载较慢,该如何去分析问题原因呢? 2. 排查步骤 2.1 查看数据集查询速度 大部分模板加载慢,都是因为 sql 执行速度比较慢. ...

  5. tc端口流量控制(带宽限速)

    tc qdisc add dev ens192 root handle 1: htbtc class add dev ens192 parent 1: classid 1:1 htb rate 80m ...

  6. java - Powermock-Failed to transform class with name...ArrayIndexOutOfBoundsException: 3

    I'm trying to run a junit test. i'm using: junit 4.10,easymock 3.0,powermock-core 1.4.10 (uses javas ...

  7. Qt通用方法及类库2

    函数名 //初始化数据库 static void initDb(const QString &dbName); //初始化文件,不存在则拷贝 static void initFile(cons ...

  8. SSM或Spring Boot开发中,mapper包中的mapper.xml没有编译到targger中的解决办法

    SSM或Spring Boot开发中,mapper包中的mapper.xml没有编译到targger中的解决办法 在pom文件中加入如下配置: <resources> <!-- 编译 ...

  9. Python中导入模块的import命令的语法

  10. 《Spring MVC+MyBatis快速开发与项目实战》-黄文毅2019:一书的源码和配套视频下载地址

    <Spring MVC+MyBatis快速开发与项目实战>-黄文毅2019:一书的源码下载地址: http://github.com/huangwenyi10/springmvc-myba ...